Hadoop 3.x 版本相对于 Hadoop 2.x 的新特性
Apache Hadoop 3.0.0
Apache Hadoop 3.0.0 在以前的主要发行版本(hadoop-2.x)上进行了许多重大改进。
1. 最低要求的 Java 版本从 Java 7 增加到 Java 8
现在,已针对 Java 8 的运行时版本编译了所有 Hadoop JAR。仍在使用 Java 7 或更低版本的用户必须升级到 Java 8。
2. 支持 HDFS 中的纠删码
纠删码是一种持久存储数据的方法,可节省大量空间。与标准 HDFS 副本机制的 3 倍开销相比,像 Reed-Solomon(10,4) 这样的标准编码的空间开销是 1.4 倍。
由于纠删码在重建期间会带来额外的开销,并且大多数情况下会执行远程读取,因此传统上已将其用于存储较冷,访问频率较低的数据。
在部署此功能时应考虑纠删码机制的网络和 CPU 开销。
关于 HDFS 中纠删码更详细的介绍,可查看我之前写的这篇文章: 深入剖析 HDFS 3.x 新特性-纠删码
3. Shell 脚本重写
Hadoop Shell 脚本已被重写,以修复许多长期存在的错误并包括一些新功能。Hadoop 的开发人员尽管一直在寻求兼容性,但是某些更改可能会破坏现有的安装。
4. MapReduce 任务本地优化
MapReduce 增加了对 map output 收集器的本地执行的支持,对于 shuffle 密集型工作,这可以使性能提高 30%或更多。
5. 支持两个以上的 NameNode
在之前的版本中,HDFS 的高可用最多支持两个 NameNode。在 HDFS 3.x 版本中,通过将编辑复制到法定数量的三个 JournalNode,该体系结构能够容忍系统中任何一个节点的故障。
但是,某些部署需要更高的容错度。这个新特性启用了这一点,该功能允许用户运行多个备用 NameNode。例如,通过配置三个 NameNode 和五个 JournalNode,群集可以忍受两个节点的故障,而不仅仅是一个节点的故障。
6. 多个服务的默认端口已更改
以前,多个 Hadoop 服务的默认端口在 Linux 临时端口范围内(32768-61000)。这意味着在启动时,服务有时会由于与另一个应用程序的冲突而无法绑定到端口。
这些冲突的端口已移出临时范围,具体的端口更改如下:
NameNode 的端口: 50070 --> 9870, 8020 --> 9820, 50470 --> 9871;
Secondary NameNode 的端口: 50091 --> 9869, 50090 --> 9868;
DataNode 的端口: 50020 --> 9867, 50010 --> 9866, 50475 --> 9865, 50075 --> 9864;
Hadoop KMS 的端口: 16000 --> 9600(HBase 的 HMaster 端口号与 Hadoop KMS 端口号冲突。两者都使用 16000,因此 Hadoop KMS 更改为 9600)。
7. 支持 Microsoft Azure 数据湖和阿里云对象存储系统文件系统连接器
Hadoop 现在支持与 Microsoft Azure 数据湖和 Aliyun 对象存储系统集成,作为与 Hadoop 兼容的替代文件系统。
8. 数据内节点平衡器
单个 DataNode 可管理多个磁盘。在正常的写操作过程中,磁盘将被均匀填充。但是,添加或替换磁盘可能会导致 DataNode 内部出现严重偏差。原有的 HDFS 平衡器无法处理这种情况。新版本的 HDFS 中有平衡功能处理,该功能通过hdfs diskbalancer
CLI 调用。
9. 基于 HDFS 路由器的联合
基于 HDFS 路由器的联合添加了一个 RPC 路由层,该层提供了多个 HDFS 名称空间的联合视图。这简化了现有 HDFS 客户端对联合群集的访问。
10. YARN 资源类型
YARN 资源模型已被通用化,以支持用户定义的 CPU 和内存以外的可计数资源类型。例如,集群管理员可以定义资源,例如 GPU,软件许可证或本地连接的存储。然后可以根据这些资源的可用性来调度 YARN 任务。
参考链接:本文翻译自 Hadoop 官方文档:https://hadoop.apache.org/docs/r3.0.0/index.html
版权声明: 本文为 InfoQ 作者【五分钟学大数据】的原创文章。
原文链接:【http://xie.infoq.cn/article/21596d0e9cdaa3ad9a37d18d6】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论