针对近期搭建HDP3.1.4版本大数据集群,相较之前研究的HDP2.6.3版本,版本跨度大,为更好的了解掌握新版本的新特性,于是对两个版本及区间版本的技术演进做下梳理。
首先简单介绍下本次大数据集群需要安装的几个组件:
1.1 Ambari
Ambari是一种基于Web的工具,支持Apache Hadoop集群的创建 、管理和监控。
Ambari已支持大多数Hadoop组件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。Apache Ambari 支持HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。也是5个顶级hadoop管理工具之一。
Ambari 自身也是一个分布式架构的软件,主要由两部分组成:Ambari Server 和 Ambari Agent。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装对应的软件;Agent 会定时地发送各个机器每个软件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 GUI,方便用户了解到集群的各种状态,并进行相应的维护。
1.2 HDP
HDP是hortonworks的软件栈,里面包含了hadoop生态系统的所有软件项目,比如HBase,Zookeeper,Hive,Pig等等。
1.3 HDP-UTILS
HDP-UTILS是工具类库。
登录官网文档,可查看HDP任意版本的技术文档
https://docs.cloudera.com/HDPDocuments/
查看此两个HDP的版本差距,2.6.3到3.1.4差距6个版本,所以若想对比两个版本的区别,需将区间版本逐一进行新特性梳理累加,即为我们所要结果。
1、HDP2.6.4版本:相较2.6.3并无新特性,版本迭代主要为修复缺陷。
官网DOC:
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.6.4/bk_release-notes/content/new_features.html
2、HDP2.6.5版本:主要升级了Kafka和Spark的版本,并无明显新特性。
官网DOC:
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.6.5/bk_release-notes/content/new_features.html
3、HDP3.0.0版本:此版本为HDP一个里程碑的大版本。组件版本升级较多,且新特性较多,需逐一介绍:
官网DOC:
https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.0.0/release-notes/content/relnotes.html
3.1、版本概要
HDP3.0.0是Hadoop大数据生态的里程碑版本,技术堆栈变化很大,它扩展了周边生态系统(包括深度学习和第三方Docker的应用程序)。许多HDP3.0的新特性基于Apache Hadoop3.1的,包括了容器化、GPU的支持,HDFS纠删码和NameNode联盟。HDP3.0默认安装包括Apache Ranger与Apache Atlas,目的是提供受信任以及安全的数据库。且为了精简技术堆栈,HDP3.0同时移除了一些组件包括Apache Falcon,Apache Mahout, Apache Flume和Apache Hue,并将Apache Slider的功能也引入到Apache YARN中。
HDP3.0.0技术栈架构图:
因为Apache Hadoop 3.1的重大特性进化,让Hadoop生态更加开放包容容器、AI、Cloud。Yarn往更加通用的资源管理框架发展,挑战者K8s。HDFS则往更加实用,稳定的方面发展,目前还是一骑绝尘,私有化部署难逢对手,支持基于HDFS Core的数据Balance,免受新增节点数据不均衡,需要手动均衡的痛点,Erasure Coding降低存储成本,HDFS可对接多种云端存储产品也是一些新的探索方向,我们看到HDFS往更加稳定、实用的方面发展。
HDP 3.0还移除一些臃肿的系统,常年无人使用,社区并未发展。终于是意识到做为一家开源软件公司,封装了一堆零散的组件,形成了一个平台产品,但是做为一个技术型产品,门槛是很高的,这是一个商业险话题,我们不讨论。HDP很长一段时间,都会是技术人员才能使用的软件产品,而国人早就基于这样的基础数据平台,开发数据中间件,支撑更加上层的应用,离客户更近,赚的盆满钵满,而对自己坚实的基础支撑系统,并未有任何的正向反馈,国人开源软件只痛,唏嘘一下。还是那句话,只论技术,不讨论。
HDP 3.0 删除了Apache Falcon,Apache Mahout,Apache Flume和Apache Hue等组件,并将Apache Slider功能融合到Apache YARN中。
关于,平台组件选型、维护与控制方面CDH显然做得更加自然一些,而HDP很长一段时间一直基于社区最新的组件打包,全都整个到一个平台,基本上都在Ambari、以及社区几个重要的组件上开发核心特性。由于组件众多,维护显然成本巨大,对于一些边缘性组件投入明显不足,精力分散,产品考虑不够完备,甚至放弃自己辛辛苦苦设计的软件,开源之路未顺利进行下去。
HDP 3.0.0 我看到了一些全新的变化,这是很好的开始,HDP产品化工作一直不如CDH,还是一个非常技术性的产品,并且对自身组件没有很强的把控能力,导致产品表现一直弱于CDH,长时间都在堆叠组件的道路上越走越远,产品组件也越来越臃肿,最明显的是HDP数据产品,覆盖的分析场景不够全面,导致很多安装了HDP产品的用户,还要手动维护一个即席分析组件,比如:Presto、Impala、MPPDB、Drill等。
HDP3.0.0及以前组件版本迭代史:
3.2、HDFS新特性
Erasure Coding降低存储成本,将存储开销降低50%,保证3副本的数据可靠性。
Namenode Federation,支持多Namespace,同一个集群,逻辑上隔离使用。
云存储支持,Google、S3、ADLS等存储连接器。
DataNode,内置磁盘数据均衡器。
3.3.YARN
3.3.1.YARN上的容器化服务
1.YARN支持运行Docker容器。
2.YARN上支持Docker化的Spark作业。
3.支持Slider功能,简化YARN的REST API和DNS发现。
3.3.2.增强的可靠性,可用性和可维护性
1.对于用户和开发人员更友好的YARN UI。
2.可扩展的Application Timeline Services2.0,支持基于流的应用程序性能管理(APM)。
3.3.Hive
1、LLAP融合Hive,提供强大工作负载,基于资源池,用户用户组分配资源。 2、默认情况下启用ACID功能,对数据更新的完全支持。 3、Hive Warehouse Connector,使得Spark更好的连接Hive。 4、物化视图,加快数据分析效率,提升查询速度。 5、JDBC存储连接器,Hive连接查询支持JDBC的数据源。
3.4.机器学习与深度学习
主要包括Spark/Zeppelin/Livy
1、支持Apache Spark 2.3.1 GA 2、支持在Docker容器中运行Spark作业 3、TensorFlow 1.8(仅限技术预览版)
3.5.流式处理引擎
主要包括Kafka和Storm
1.支持Kafka1.0.1
2.重大更新
KAFKA-6172 - TimeIndex中的Cache lastEntry以避免不必要的磁盘访问。
KAFKA-6175 - AbstractIndex会缓存索引文件以避免不必要的磁盘访问在resize()期间。
KAFKA-6258 - SSLTransportLayer会保持从socket读取,直到缓冲区已满或socket中没有更多数据。
3.支持Storm1.2.1,该Storm版本同时支持HDP3.0中其他更新组件包括Hadoop/HDFS3.0, HBase2.0和Hive3。
4.捕获producer和topic分区级别的指标,而不需要在客户端配置拦截器。这提供了一种非侵入性的方法来捕获producer的重要指标,而无需重构/修改现有的Kafka客户端。
3.6.操作型数据库
HBase
3.6.1.备份和恢复
HBase源生支持备份/恢复,包括全量和增量的备份/恢复支持。这是admin工具包中的一个重要工具,下一个版本将支持DLM,即UI。
3.6.2.Procedure V2
你现在可以使用Procedure V2(社区里也叫Proc-v2),这是一个更新的框架,用于在发生故障时执行多步骤的HBase管理操作。引入此功能是使用proc-v2来实现所有master操作,并在未来移除像hbck这种工具。使用proc-v2创建,修改和删除表。新的AssignmentManager等其他系统也会使用proc-v2实现。
3.6.3.Fully off-heap read/write path
当通过Put操作将数据写入HBase时,在将数据flush到HFile之前,cell对象不会进入JVM heap。这有助于减少RegionServer的总heap使用量,并且复制更少的数据,从而提高效率。
3.6.4.Use of Netty for RPC layer and Async API
将旧的Java NIO RPC服务替换为Netty RPC服务。Netty可以更容易的提供异步的Java客户端API。
3.6.5.In-memory compactions (Accordion)
Memstore中数据的定期重组可以减少整体I/O,即从HDFS写入和访问的数据。当我们在内存中保留更长时间的数据时,净性能会提高。
3.6.6.更好的依赖管理
HBase现在内部隐藏了通常不兼容的依赖,以防止出现问题。你也可以使用隐藏的客户端jars,这将减轻现有应用程序的负担。
3.6.7.重写Coprocessor和Observer API
对API进行了微小的更改,以消除模糊,误导和危险的调用。
Apache Phoenix的新特性
1.HBase2.0支持
2.Phoenix Query服务的Python驱动
这是引入到Apache Phoenix项目的社区驱动程序。它提供Python db 2.0 API实现。
3.查询日志
这是一个新的系统表“SYSTEM.LOG”,它捕获有关针对集群运行的查询的信息(客户端驱动的)。
4.列编码
这是HDP的新功能。你可以在HBase表中使用自定义数据编码方案来减少占用的空间。由于读取的数据较少,可以增加性能以及减少存储。稀疏表的性能增益为30%及以上。
5.Phoenix的Hive3.0支持
对于新的Hive版本提供新的phoenix-hive StorageHandler(技术预览)。
6.Spark 2.3支持Phoenix
对于新的Spark版本提供新的phoenix-spark驱动
7.支持GRANT和REVOKE命令
如果数据表或视图更改了访问权限,它会自动更改索引ACL。
8.引入对sampling tables的支持。
9.支持atomic update (ON DUPLICATE KEY)。
10.支持基于MR查询的snapshot扫描。
11.加强Local和Global的二级索引。
3.7.安全和治理
3.7.1.Apache Ranger
3.7.1.1.核心策略引擎和审计功能增强
1.可调度策略:策略生效日期,以支持有时间限制的授权策略和临时策略
2.覆盖策略以支持临时资源访问,覆盖特定用户的masking/row filtering
3.Auditor和KMS Auditor角色,支持对服务,策略,用户/组,审核和报告的只读访问。
4.在access audits UI中显示Hive查询。
5.在Ranger Admin UI中审计用户同步操作
6.用于分组和组织策略以及按标签filter/search的策略标签
7.Ranger Admin UI中显示的组中的用户成员身份
3.7.1.2.生态系统覆盖和增强
1.为Atlas通过细粒度授权实现Metadata安全性。
2.Atlas Tag Sync service性能提升。
3.Hive UDF执行和使用授权。
4.Hive工作负载管理授权。
5.通过Hive Information_schema支持entitlement mapping。
6.HDFS NameNode联邦支持
7.通过Solr 7支持,改进了索引基础架构。
8.Ranger插件兼容HDP3.0其他的组件包括Hive,HDFS,Storm,HBase,Kafka和YARN。
3.7.1.3.适用于企业
1.能够在Ranger安装期间为管理员帐户指定密码
2.所有受支持的DB flavor的合并db schema脚本
3.在安装HDP3.0时,默认安装Ranger和Atlas。
3.7.2.Apache Atlas
3.7.2.1.核心元数据功能
1.新的Glossary和Business Catalog
使业务用户能够捕获自然业务术语并提供业务词汇管理(术语分类,业务术语 - 资产关联,语义术语关系,层次结构)
2.Classification (tag)Propagation
通过对传播进行细粒度控制的分类(标签)传播到相关或衍生资产,改进监管链
3.Metadata Security
对data catalog中元数据的细粒度授权(对元数据操作的特定标签授权,数据资产/类型/管理操作授权,如元数据导入/导出)
4.有时间限制的分类或业务目录映射
3.7.2.2.生态系统覆盖和增强
1.新的Spark Hook(技术预览),用于在Atlas中捕获Spark SQL,Dataframe和模型元数据以及数据溯源。
2.新的HBase hook以捕获元数据和数据溯源。
3.通过Solr 7支持,改进了索引基础架构。
4.使用JanusGraph DB提供Tinkerpop 3标准兼容性的图形后端,提升可扩展性以及性能。
5.更新了用于HDP3.0生态系统兼容性的Atlas Hook(Hive,Storm / Kafka,Sqoop)
6.使用新的v2样式通知改进了元数据加载性能
7.通过大规模的DSL重构提高搜索性能。
4、HDP3.0.1版本,无新特性。
官网DOC:
https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.0.1/release-notes/content/new_features.html
5、HDP3.1.0:涉及Kafka、Ranger组件,主要针对Kafka组件的新特性。
Kafka Streams得到正式支持。Kafka Streams与Ranger和Schema Registry等平台服务完全集成,并支持安全/不安全的群集;其他还有在安全、性能、可靠性方面的提升。
官网DOC:
https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.0/release-notes/content/new_features.html
6、HDP3.1.4,只列举了常用的组件新特性
官网DOC:
https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/release-notes/content/hdp_relnotes.html
6.1、Hive
1.自动分区管理同步元数据和文件系统上的更改。
2.可以配置分区数据和元数据保留时间长度。
3.Hive Warehouse连接器现在验证针对Hive中的列的映射,以提醒用户输入错误。
4.将DataFrame写入Hive支持指定分区
5.用于HiveWarehouseSession API操作的新MergeBuilder接口支持合并表。
6.2、Ranger
1.支持时间限制的分类或业务目录映射。Ranger策略引擎识别标签的开始时间和结束时间,并根据标签的有效期限实施策略。
2.支持Safenet KeySecure加密平台,用于存储Ranger KMS的主密钥。
3.支持允许用户在Ranger中定义策略级别条件。
6.3、Spark
Spark Kafka源与模式注册表集成。
7、组件版本迭代
将HDP2.6.3~HDP3.1.4组件版本迭代做了Excel梳理,有重大版本升级的用绿色标记,如下图:
8、总结
综上,虽然HDP2.6.3到3.1.4相差6个版本之多,但主要的新特性基本出现在2.x到3.x过渡的3.0.0大版本中。其他小版本的新特性无变化或稍有变化,希望本篇能对HDP大版本过渡的同学有些帮助。