Apache Hadoop与CDH、HDP的比较
一、Hadoop版本综述
不收费的 Hadoop 版本主要有三个(均是国外厂商),分别是:
-
Apache(最原始的版本,所有发行版均基于这个版本进行改进)
-
Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称CDH)
-
Hortonworks版本(Hortonworks Data Platform,简称HDP)
对于国内而言,绝大多数选择 CDH 版本,CDH 和 Apache 版本主要区别如下:
二、社区版与第三方发行版的比较
1.Apache社区版
优点:
- 完全开源免费
- 社区活跃
- 文档、资料详实
缺点:
- 版本管理比较混乱,各种版本层出不穷,很难选择,选择其他生态组件时,比如Hive,Sqoop,Flume,Spark等,需要考虑兼容性问题、版本匹配问题、组件冲突问题、编译问题等。
- 集群安装部署复杂,需要编写大量配置文件,分发到每台节点,容易出错,效率低。
- 集群运维复杂,需要安装第三方软件辅助。
2.第三方发行版(CDH)
优点:
- 版本管理清晰。CDH3、CDH4等。
- 版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。
- 集群安装部署简单。提供了部署、安装、配置工具,大大提高了集群部署的效率
- 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。
缺点:
- 涉及到厂商锁定的问题(不能随便升级版本)
三、第三方发行版的比较
- Cloudera(CDH):最成型的发行版本,拥有最多的部署案例,提供强大的部署、管理和监控工具,国内企业使用较多
- Hortonworks(HDP):不拥有任何私有(非开源)修改地使用了100%开源Apache Hadoop的唯一提供商。Hortonworks是第一家使用了Apache HCatalog的元数据服务特性的提供商。并且,它们的Stinger开创性地极大地优化了Hive项目。Hortonworks为入门提供了一个非常好的,易于使用的沙盒。Hortonworks 开发了很多增强特性并提交至核心主干,这使得 Apache Hadoop 能够在包括Windows Server 和 Windows Azure 在内的 Microsft Windows 平台上本地运行。
四、版本选择
当我们选择是否采用某个软件用于开源环境时,通常需要考虑:
- 是否为开源软件(免费)
- 是否有稳定版(官网有说明)
- 是否经实践验证(有大公司使用案例)
- 是否有强大的社区支持(当出现一个问题时能够通过社区、论坛等网络资源快速获取解决方法)
CDH5与CDH6对比
概述
Cloudera 于 2018年8月30日正式发布 CDH6.0.0,至 2019年2月19日,迭代版本为 CDH6.1.1,现在 CDH 最新的版本已经到 CDH6.3.3了。
CDH6 是基于 Hadoop3 同时包含大量其他组件的大版本更新的发布版本,许多用户考虑到未来 CDH 的版本主要是基于 CDH6,而 CDH5 会慢慢的停止更新,所以考虑新搭集群使用CDH6,或者想把已有的CDH5集群升级到CDH6。
第一个问题就是需要考虑 CDH5 和 CDH6 的差别,通过分析一些差异看能否将已有的应用迁移或者直接部署到 CDH6,兼容性稳定性是否存在问题等。
组件版本对比
操作系统支持
元数据库支持
JDK支持
总结
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 也官宣了依旧会再支持截止到2022年。
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工具等也需要进行对接测试,一切测试通过以后规划好合理的停机时间,然后进行升级。
有的 CDH5 版本已经停止支持了。
停止支持的意思是不再更新和修复bug,厂商不再向这个版本的用户提供技术支持。CDH5 到今年年底全部停止支持。
CDH 用户及开发者应当关注的 CDP 组件变化
在 Cloudera 和 Hortonworks 合并后,Cloudera 公司推出了新一代的数据平台产品 CDP Data Center(以下简称为CDP),在2019年11月30日已经正式GA(即正式发布的版本)
CDP 的版本号延续了之前 CDH 的版本号,从 7.0 开始,目前最新的版本号为 7.0.3.0。
那么 CDP 对比之前的 Cloudera Enterprise Data Hub(CDH企业版)与 HDP Enterprise Plus(HDP企业版)到底在组件上发生了哪些变化呢?
由于 HDP 在国内市场上的市场占有量很小,大部分公司都是采用 CDH,所以对于 HDP 带来的一些东西,使用 CDH 的用户和开发人员会比较陌生,下面带大家详细的了解一下 CDP 中的组件一些变化,也方便大家为在以后的学习做好准备。
CDP、CDH、HDP中都包含的部分
- Apache Hadoop(HDFS/YARN/MR)
- Apache HBase
- Apache Hive
- Apache Oozie
- Apache Spark
- Apache Sqoop
- Apache Zookeeper
- Apache Parquet
- Apache Phoenix(CDH中需要额外安装)
基本上只是版本做了一定的升级。如果你之前是使用CDH的用户,那么其中值得一提的是Hive的版本在CDP中使用的是3.1.2,对比CDH6来说是很大的升级(CDH6中Hive为2.1.1)。
之前 Cloudera 在组件的选择上是比较保守的,对比之下 Hortonworks 的策略会比较激进(HDP已经上了Hive3),会更贴近社区最新的版本。
Hive 3 的几个重要新特性:
- 默认执行引擎变更为TEZ
- 默认开启ACID支持,用于支持事务
- LLAP支持,用于支持秒级、毫秒级的实时查询
- 客户端方面彻底废弃掉了 Hive CLI,这也意味着 beeline 成为唯一选择
CDH 中存在,CDP 还在准备中的部分
- Apache Accumulo
- Navigator Encrypt
- Key HSM
实际实施中这些用的都不多,而且迟早会加入到 CDP 中,不需要太过关注
CDP、CDH 中都包含的部分
- Apache Avro
- Cloudera Manager
- Hue
- Apache Impala
- Key Trustee Server
- Apache Kudu
- Apache Solr
- Apache Kafka(CDH中需要额外安装)
HDP 中存在,CDP 还在准备中的部分
- Apache Druid
- Apache Knox
- Apache Livy
- Ranger KMS
- Apache Zeppelin
其中最需要关注的就是 Apache Druid。Apache Druid 是一款实时大数据分析引擎,注意它与阿里巴巴出品的一款数据库连接池Druid恰好重名,但实际是两款不同的软件,两者之间并没有什么关系。
Apache Druid 能快速地对海量数据进行实时存储和多维度实时分析。在快速查询、水平扩展、实时数据摄入和分析这三方面都有良好的支持。本质上来说就是一款时序数据库,能很方便的对时间驱动型的数据进行快速的分析查询。
需要注意的是为了达到高性能,Druid 牺牲了很多方面的特性,例如并不支持完整的SQL语义特性(只提供有限制的join支持)。所以Druid 并非是 Hive 或者 Impala 的替代品,它们之间是一种相互增强的关系,
例如选用Hive或Impala用于构建离线数据仓库或数据集市,然后在这个基础上,将需要进行多维分析查询的数据放入Druid 进行加工,来给多维分析类系统提供数据接口。
CDP、HDP中都包含的部分
- Apache Atlas
- Apache Ranger
- Apache ORC
- Apache Tez
在 CDP 中,有两个之前 CDH 的组件被去除,一个是 Apache Sentry,用于安全授权;一个是 Cloudera Navigator,用于元数据管理与审计。
被去除的原因在于在 CDP 中它们的功能已经被其他组件所替代,CDP 将会使用以 Ranger+Knox+Atlas 为中心的安全授权与审计方案。对于使用 CDH 的用户来说,这部分的变化是最大的。
目前 CDH 6.3 的EoS Date(支持结束日期)为2022年3月,接下来两年内基于 CDH6 的实施项目仍然是主流选择,基于 Sentry 的方案仍然会在日常的项目实施中使用到。所以如果你对 Hadoop 安全体系这块不熟悉,也不能说就干脆跳过Sentry不学了。而且可预见的是将来肯定会有关于现有的CDH集群升级时,涉及到权限迁移这一块的问题,所以Sentry和Ranger两者都需要了解。
而 Apache ORC 虽然之前在CDH中其实一直能够使用,但Impala本身对ORC格式的支持非常差,在CDH中无论是在Impala还是Hive中使用ORC格式,都一直没有受到CDH的支持和推荐(CDH都推荐使用Parquet格式)。其实这本身有点商业策略考量的意味:在未合并前,社区中Parquet项目由Cloudera主导,而ORC项目由Hortonworks主导。其实这两种格式在整个Hadoop生态圈中都有着广泛的应用,合并之后CDP中自然是两者都需要提供官方支持了。
Tez 也基本上处于同样的理由(商业策略考量),所以之前 CDH 中的 Hive 一直是无法直接使用 Tez 的(选项页面直接选择的话,只能选择MR和Spark作为引擎)。现在合并后并不存在这个商业策略考量的问题了。
CDP全新加入的部分
- Apache Ozone(技术预览版)
- Ozone 是一个可伸缩的、冗余的、分布式的 Hadoop 对象存储
基于Apache Spark、YARN 和 Hive 等框架的应用程序无需任何修改就可以直接在Ozone上工作
Ozone 建立在具有高可用性的复制块存储层上,这个存储层被称为Hadoop Distributed Data Store(HDDS)
简单来说,Ozone 就是为了解决 HDFS 现存的受到 NameNode 严重制约的超大规模的扩展能力问题以及存储小文件的问题而设计的,Ozone 被设计成支持数百亿(在未来甚至更多)的文件和块。
目前 Ozone 还处于技术预览版阶段,如果有时间做一些基本了解即可,目前还不会有用于实际生产环境的可能性。
关于 CDP7
CDP7 是 Cloudera 和 Hortonworks 两大 hadoop 服务商合并后推出的统一版本
CDP7 相比于 CDH6 整体停下来就是想告诉我们一句话 "上云!"
官方一直在围绕"云" 大谈特谈,支持公有云,私有云,本地部署方式。
CDP 将不再开源,CDP7 以后就没有社区版