Apache Hadoop 3.3.1
Apache Hadoop 3.3.1 与以前主要发行版(hadoop-2.x)相比,包含了许多重要的增强功能。
这次发行是普遍可用的(GA),意味着它代表了API稳定性和质量的一个点,我们认为生产准备好了
概述
鼓励用户阅读全套发行说明。本页概述了主要更改。
最低限度的依赖Java 版本从Java 7增长到Java 8
所有Hadoop JAR包现在都是基于Java8运行时版本编译的。仍然使用java 7 或者更低版本的用户必须升级到Java8.
在HDFS中支持纠删码
纠删码是一种持久存储数据的方法,与复制相比可显著节省空间。与标准HDFS复制的3倍开销相比,标准编码如Reed-Solomon (10,4) 的空间开销为1.4倍。
由于纠删码在重建的过程中增加了额外的开销,并且主要执行远程读取,因此它传统上用于存储较冷、访问频率较低的数据。在部署此功能时,用户应该考虑网络和CPU开销的纠删码。
在HDFS纠删码文档中提供了更多详细信息。
YARN时间线服务v.2
我们正在推出YARN时间线服务:v.2的主要修正版的早期预览版(alpha 2)。YARN Timeline Service v.2解决了两个大挑战:提升时间线服务的可扩展性和可靠性,以及通过引入流和聚合来提高可用性。
提供YARN Timeline Service v.2 alpha 2 ,以便用户和开发人员可以对他进行测试并提供反馈和建议,使它成为Timeline Service v.1.x的现成的替代品。它应该仅用与测试容量。
在YARN Timeline Service v.2文档中提供了更多详细信息。
Shell 脚本重写
Hadoop shell 脚本已经重写以修复长期存在的错误,并包括一些新的功能。虽然一直关注兼容性,但一些更改可能破坏现有的安装。
发行说明中记录了不兼容的更改,并对HADOOP-9902进行了相关讨论。
Unix Shell Guide文档中提供了更多详细信息。高级用户对Unix Shell API文档感到满意,该文档描述了一些新的功能,特别是扩展性相关的功能。
Shaded client jars
2.x 版本中可用的 hadoop-client Maven artifact(项目名称)将 Hadoop 的传递依赖项拉到 Hadoop 应用程序的类路径上。 如果这些传递依赖的版本与应用程序使用的版本冲突,这可能会出现问题。
HADOOP-11804 添加了新的hadoop-client-api 和hadoop-client-runtime artifact,将Hadoop依赖项隐藏到单个jar中。这避免了将Hadoop依赖项泄漏到应用程序的类路径上。
shade jar:是指将 jar 包和它的依赖包一起打包到一起,并能够将依赖包重命名
artifact:项目名称
支持Opportunistic容器和分布式调度
引入了ExecutionType的概念,应用程序现在可以请求执行类型为Opportunistic的容器。即使在调度时没有可用的资源,也可以在NM处调度此类容器以执行。在这种情况下,这些容器将在NM处排队,等待资源可用以启动。
Opportunistic容器的优先级低于默认的Guaranteed 容器的,因此如果需要,会被抢占,以便为Guaranteed容器
让出空间,这将提升集群的利用率。
Opportunistic容器默认由中央RM分配,但还添加了支持,以允许opportunistic容器 由作为AMRM协议拦截器实现的分布式调度器 分配。
有关更多详细信息,请参阅文档。
note:
NM:NodeManager
RM:ResourceManager
AM:ApplicationMaster
MapReduce 任务级本地优化
MapReduce添加了对map输出收集器本地实现的支持。对shuffle密集型的job,这将导致性能提升30%或者更多。
有关更多详细信息,请参阅MAPREDUCE-2841发行说明
支持2个以上的NameNodes
HDFS NameNode的高可用最初实现了单个活跃的NameNode和单个备用的NameNode提供。通过将编辑复制到三个JournalNode的quorum中,该架构能够容忍系统中任何一个节点的故障。
然而,某些部署要求更高程度的容错性。这是由这个新功能启用的,它允许用户运行多个备用的NameNode。例如,通过配置三个NameNodes 和5个JournalNodes,集群能够容忍两个节点的而不只是一个节点的故障。
HDFS高可用文档已经更新,包含了如何去配置两个以上NameNode的说明。
多个服务的默认端口已经改变
之前,多个Hadoop服务的默认端口时在Linux临时端口范围内 (32768-61000)。这意味着在启动时,
服务有时会由于与另一个应用程序冲突而无法绑定到端口。
这些冲突已经被移除临时范围,影响NameNode,Secondary NameNode, DataNode, and KMS.我们的文档已适当更新,但请参阅HDFS-9427和HADOOP-12811的发行说明以获取端口更改列表。
支持 Microsoft Azure Data Lake 和Aliyun Object Storage System 文件系统连接器
Hadoop 现在支持 Microsoft Azure Data Lake和 Aliyun Object Storage System的集成,
作为与Hadoop兼容的替代文件系统。
Intra-datanode 均衡器
单个DataNode管理多个磁盘。在正常写入操作期间,磁盘将被均匀的填满。但是,添加或者替换磁盘可能导致DataNode内出现严重倾斜。现有的HDFS的均衡器无法处理这种情况,它关注的是是DN之间的倾斜,而不是DN内部的倾斜。
在新的在新的intra-DataNode平衡器功能中这个场景被处理,
这个场景由新的intra-DataNode平衡功能处理,该功能由hdfs diskbalancer CLI 调用。有关更多信息,请参阅
HDFS命令指南中磁盘平衡器部分。
重新设计守护进程和任务堆管理器
对Hadoop守护进程以及MapReduce任务的堆管理已经进行了一系列的改变。
HADOOP-10950引入了配置守护进程堆大小的新方法。值得注意的是,现在可以根据主机内存大小进行自动调整,HADOOP_HEAPSIZE变量已经被废弃。有关更多详细信息,请参阅HADOOP-10950的完整发行说明。
MAPREDUCE-5785 简化了map和reduce任务堆大小配置,因此不再需要在任务配置和java选项中指定所需的堆大小,现有配置已经指定不受此更改的影响。有关更多详细信息,请参阅 MAPREDUCE-5785 完整发行说明。
S3Guard:S3A文件系统客户端的一致性和元数据缓存
HADOOP-13345 向亚马逊s3存储的S3A客户端添加了一项可选功能 :能够使用DynamoDB的表作为文件和目录元数据的快速一致性存储。
有关更多详细信息,请参阅S3Guard。
HDFS Router-Based Federation
HDFS Router-Based Federation 添加了一个RPC路由层,它提供了多个HDFS 命名空间的联合视图。这类似于现在的ViewFs和HDFS的联合功能,除了挂载表是在路由层的服务器端管理而不是客户端管理。这简化了HDFS
客户端对联邦集群的访问。
有关更多详细信息,请参阅HDFS-10467 和 HDFS Router-based Federation 文档
基于API 配置的Capacity Scheduler队列配置
capacity schedule的OrgQueue扩展提供了一种通过提供REST API来改变配置的编程方式, 用户可以调用该API来修改队列配置。这使得管理员可以在队列的administer_queue ACL中自动化队列配置管理.
有关更多信息,请参阅YARN-5734和Capacity Scheduler文档。
YARN资源类型
YARN资源模型已经普遍支持用户自定义CPU和内存以外的可数资源类型。例如,集群管理员可以定义像GPU、软件执照或者本地连接存储的资源。然后,可以根据这些资源的可用性来安排YARN任务
有关更多信息,请参阅YARN-3926和YARN resource model文档。
入门
这个Hadoop文档包括开始使用Hadoop所需信息。从单节点设置开始,它向您展示了如何设置单节点 Hadoop 安装。 然后转到集群设置以了解如何设置多节点 Hadoop 安装。