目前为止,作为半只脚迈进Hadoop大门的人,我建议大家还是选择Hadoop 1.x用。可能很多人会说,Hadoop都出到2.4,为啥还用1.x呢,说这话一听就没玩过hadoop。
理由一: Hadoop 1.x和2.x是完全两个不同的东西,并不是像说单机的webserver从1.0升级到2.0那么简单的事情。也不是说我现在用的mysql 5.0,只要编译一个新版本就直接无缝迁移到5.5的事情。Hadoop从1.0过度到2.0是整个架构体系全部推翻重写的。从实现方式到用户接口完全是两个完全不同的东西,不要简单的认为那不过就像nginx从0.8升级到1.4一样。所以我给的建议是,生产环境用1.x,实验环境部署2.x作为熟悉使用。
理由二: 依然是,Hadoop不是webserver,分布式系统尽管Hadoop实现出来了,但是他仍然是非常复杂的一套体系,单说HDFS存储,以前Hadoop 0.20.2想升级到0.20.203,首先你需要在所有节点部署上新版的Hadoop,然后停止整个集群的所有服务,做好元数据备份,然后做HDFS升级,还不能保证HDFS一定能升级成功。这样升级一次的代价是很大的,停服务不说,万一升级不成功能不能保证元数据完整无误都是不可预知的。远比你想象的麻烦的多得多得多。千万不要以为有了TDH Manager或者其他管理软件你就真的可以自动化运维了,部署Hadoop只是万里长征的第一步而已。
理由三: Hadoop 2.x目前很不稳定,Bug比较多,更新迭代速度太快,如果你想选择2.x,想清楚再做决定,这玩意不是说你选择新的版本就万无一失了,Openssl多少年了,还出现了心脏滴血的漏洞,何况刚出来才不到一年的Hadoop2,要知道,Hadoop升级到1.0用了差不多7,8年的时间,而且经过了无数大公司包括Yahoo,Facebook,BAT这样的公司不停的更新,修补,才稳定下来。Hadoop2才出现不到一年,根本没有经过长期稳定的测试和运行,看最近Hadoop从2.3升级到2.4只用了一个半月,就修复了400多个bug。