CDH版本更新建议
发现最近很多人关注CDH版本更新的问题,CDH6更新有一年多的时间了,2019年2月19日,迭代的版本为CDH6.1.1,现在CDH最新的版本已经到CDH6.3.3了。为了方便比较,本文内容主要基于CDH5.16.1和CDH6.1.1进行说明。CDH6是基于Hadoop3同时包含大量其他组件的大版本更新的发布版本,许多用户考虑到未来CDH的版本主要是基于CDH6,而CDH5会慢慢的停止更新,所以考虑新搭集群使用CDH6,或者想把已有的CDH5集群升级到CDH6第一个问题就是需要考虑CDH5和CDH6的差别,通过分析一些差异看能否将已有的应用迁移或者直接部署到CDH6,兼容性稳定性是否存在问题等。出于这个目的,本文会大概概括一下两个版本间的差异,如果你需要更详细的从各个方面比较CDH5和CDH6的差别的文档,可以给我留言,我会发你。然后需要强调一下:没有最好的技术,也不是说最新的技术就是最好的,永远只有最合适的技术。
CDH6相对于CDH5是一次各个组件的大版本升级,要理解大版本更新,这里先解释一下Hadoop相关组件的版本说明。比如版本号是x.y.z,z代表的一般是Maintenance Version或Patch Version,这种版本升级主要修复bug,不改动API,也不涉及新的功能,y代表的是Minor Version,这种版本升级主要是增加新的功能和新的API,x代表的是Major Version,往往会新增全新的功能,甚至改动API。那么CDH5到CDH6就是一次Major Version的升级,新增了很多功能,API的更改有可能导致你旧有的程序的不兼容而需要修改或者重新开发,但根据软件开发迭代的原则,往往新版本会向下兼容一段时间,你只需要经过严格的测试,在一段时间内应用开发的修改理论不会太大,但还是要结合实际情况,进行严格的测试后再行判断和评估。
CDH5现在依旧是市场上用的最多,推得最广的版本,客户认可度也较高。同时,CDH5经过快5年的迭代也是目前最成熟和稳定的版本,各个组件跟随着社区版的更新迭代,已经把各个组件的bug修复得很完善。另外,无论是国外还是国内支持案例也多,国内可以找到很多相关的实施案例供参考,可以节省运维人力、物力成本。最后CDH5的周边生态圈支持也比较丰富,无论是开源还是商业产品,ETL工具,调度工具,报表工具,BI工具等。你如果现在选择CDH5或者已经在用了,Cloudera也官宣了依旧会再支持三年。
CDH6的更新较大,很多组件也都是大版本更新,引入了很多激动人心的新功能,同时各个组件也修复了大量已知的问题和安全漏洞。比如HDFS的纠删码用于冷数据降低存储成本又保证了数据的可用性,NameNode和YARN的联邦解决大规模集群的性能瓶颈问题,YARN引入GPU支持,未来会引入docker支持等。长远来看,从Hadoop2升级到Hadoop3或者从CDH5升级到CDH6是必须的,因为无论是社区还是Cloudera从现在开始开始都会将开发重心转移到Hadoop3或CDH6上,而CDH5则主要以维护和修复bug为主。
建议:
- 如果你是新搭集群,并且规模不太大(50个节点以内),基于Hadoop的应用也都是新开发,CDH6是一个不错的选择,毕竟避免了以后还要考虑从CDH5升级到CDH6的麻烦,同时还需要进行一次应用测试和迁移。未来迁移到CDH和HDP的合并版本CDP也会更加容易。
- 如果你已经有CDH5集群,作为生产系统各种应用已经稳定运行了较长的时间,如果不是因为功能或性能原因必须要用新版本,现阶段可以暂时不考虑升级,继续观望一段时间。而你一旦决定升级,需要谨慎和细致的对待,包括你要考虑OS,JDK,元数据库等的升级,已有各种应用比如Hive/Impala/Spark SQL,MapReduce/Spark代码,脚本,Python/R算法工程等在CDH6进行测试,同时周边的一些工具对接比如ETL,调度,报表,BI工具等也需要进行对接测试,一切测试通过以后规划好合理的停机时间,然后进行升级