1.文档编写目的

Cloudera于2018年8月30日正式发布CDH6.0.0,至2019年2月19日,最新的迭代版本为CDH6.1.1,可能马上就会发布CDH6.2。CDH6是基于Hadoop3同时包含大量其他组件的大版本更新的发布版本,许多用户考虑到未来CDH的版本主要是基于C6,而CDH5会慢慢的停止更新,所以考虑新搭集群使用CDH6,或者想把已有的CDH5集群升级到CDH6。第一个问题就是需要考虑CDH5和CDH6的差别,通过分析一些差异看能否将已有的应用迁移或者直接部署到CDH6,兼容性稳定性是否存在问题等。出于这个目的,本文会从各个方面详细比较CDH5和CDH6的差别,从而让用户能够进行正确的判断并进行相应的选择。以下内容主要基于最新的CDH5.16.1和CDH6.1.1进行比较。最后再次强调,没有最好的技术,也没有最新的技术就是最好的,永远只有最合适的技术。

2.组件版本对比

CDH5与CDH6对比_cdh

3.操作系统支持

CDH5与CDH6对比_cdh_02

4.元数据库支持

CDH5与CDH6对比_cdh_03

5.JDK支持

CDH5与CDH6对比_cdh_04

6.单用户模式

我们一般在安装CDH时,都是使用root或具有sudo权限的用户安装的,如果大家有注意会发现用于管理每台主机上的Hadoop进程的Cloudera Manager Agent服务(cloudera-scm-agent)是以root用户身份运行的。但是在有些企业,运维部门有严格的要求,需要CDH使用自己的用户来管理即不能随便使用root,比如要求cloudera-scm-agent服务以其他用户进行启停和管理。从Cloudera Manager 5.3开始Cloudera提供了single user mode,来满足这种要求。在单用户模式下,Cloudera Manager Agent和所有由Cloudera Manager管理的服务进程都可以由配置的用户来启动。单用户模式优先考虑Hadoop与系统其余进程之间的隔离,而不是Hadoop进程之间的隔离。对于Cloudera Manager的部署,单用户模式是全局的,适用于由该Cloudera Manager管理的所有集群。默认情况下,单用户是cloudera-scm。

从CDH6开始,不再支持单用户模式,安装必须使用root或具有sudo权限的用户安装。

参考:

《0517-如何在CDH5中使用单用户模式》

《0520-如何使用非root用户启动CM的Server和Agent服务》

《0547-CM Server和Agent服务停止脚本说明》

《0548-5.13.1-如何使用普通用户管理CM server和agent服务》

《0551-6.1-普通用户配置kill CDH集群进程权限》

7.Cloudera Manager

7.1.安装

1.从安装方式上来看,CDH6与CDH5变化不大,这也方便了CDH5的用户可以较为快速的迁移到CDH6,以及适应CDH6的安装与使用。

2.安装向导界面有一些变化,现在可以一目了然的看到一共多少步骤,以及每个步骤是干什么。

3.进到主界面变化也不大,主要是Cloudera的logo变成了黑色,与Cloudera主页的整体风格一致。

4.在配置Cloudera Manager连接到数据库时的脚本有所变化。以前是/usr/share/cmf/schema/scm_prepare_database.sh,现在是/opt/cloudera/cm/schema/scm_prepare_database.sh

5.Cloudera Manager服务的状态在Redhat7通过systemctl status cloudera-scm-server查看是显示正确,而以前是不正确的。

6.Cloudera Manager的rpm安装包由之前的7个变成了5个,去掉了之前的JDK6的包,然后自带JDK1.8.0_141,将不再支持JDK1.7。

7.注意CM的安装除了下载rpm包以外,还要下载allkeys.asc文件,否则安装agent的时候会报以下错误:

8.对于离线安装CDH6.0,分发Parcel出现hash校验失败的问题,是因为在CM6中修复了一个bug,让它不再忽略由http服务器发送的“Content-Encoding”的header信息,但是我们在Redhat中安装的httpd服务,当它传输parcel文件时,默认会错误的设置“Content-Encoding”。于是CM server会错误的认为parcel文件已经被httpd压缩并尝试解压缩。所以会导致失败。解决办法是设置httpd的conf文件,AddType application/x-gzip .gz .tgz .parcel,然后重启httpd服务和CM服务。

9.在安装过程中会有页面提示Auto-TLS,该步骤可以忽略,不过如果对主机通信或者CM页面访问有SSL/TLS需求的话,也可以按照提示进行配置。

参考:

《0491-如何在Redhat7.4安装CDH6.1》

7.2.Cloudera免费版节点数限制

Cloudera免费版现在不允许集群节点数超过100,具体如下描述:

1.单个Cloudera Manager管理的所有CDH6.x集群所包含的主机总数不允许超过100个,如果超过,增加主机会失败。

2.如果Cloudera Manager管理的集群主机数量超过100,Cloudera Manager不允许将集群升级到CDH6.x。如果你主机总数超过100,从Cloudera Manager6.0升级到6.1会失败,这时你需要移除一些主机使总数小于100,然后重新升级才能成功。

注意:如果你从Cloudera企业版降级为Cloudera免费版后,并且你的主机数量超过了100,这时Cloudera Manager会禁用集群管理的所有功能除了停止集群。如果主机总数超过100,你将无法重启集群或以其他方式使用集群,必须使用Cloudera Manager删除主机使主机总数小于100后才能恢复正常。

受影响的版本:Cloudera Manager6.1或更高版本

7.3.Cloudera Manager6.0的新特性

参考:

https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cm_600_new_features.html

7.4.Cloudera Manager6.1的新特性

参考:

《0488-Cloudera Manager6.1的新功能》

8.CDH6的新特性

8.1.CDH6.0的新特性

参考:

https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_600_new_features.html

8.2.CDH6.1的新特性

参考:

《0487-CDH6.1的新功能》

9.总结

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为主。

建议:

1.如果你是新搭集群,并且规模不太大(50个节点以内),基于Hadoop的应用也都是新开发,CDH6是一个不错的选择,毕竟避免了以后还要考虑从CDH5升级到CDH6的麻烦,同时还需要进行一次应用测试和迁移。未来迁移到CDH和HDP的合并版本CDP也会更加容易。

2.如果你已经有CDH5集群,作为生产系统各种应用已经稳定运行了较长的时间,如果不是因为功能或性能原因必须要用新版本,现阶段可以暂时不考虑升级,继续观望一段时间。而你一旦决定升级,需要谨慎和细致的对待,包括你要考虑OS,JDK,元数据库等的升级,已有各种应用比如Hive/Impala/Spark SQL,MapReduce/Spark代码,脚本,Python/R算法工程等在CDH6进行测试,同时周边的一些工具对接比如ETL,调度,报表,BI工具等也需要进行对接测试,一切测试通过以后规划好合理的停机时间,然后进行升级。

注:以上总结分析和建议不具备通用性,仅供参考,如果您在选择CDH版本时存在问题,请联系Cloudera销售代表和技术支持结合您的实际情况进行合理的分析和建议。