这篇博客就和你们分享到这里,若是你们在研究学习的过程中有什么问题,能够加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!
接着上一篇博客的内容,继续介绍Hadoop3的其余新特性。其内容包含:优化Hadoop Shell脚本、重构Hadoop Client Jar包、支持等待Container、MapReduce任务级别本地优化、支持多个NameNode、部分默认服务端口被改变、支持文件系统链接器、DataNode内部添加负载均衡、重构后台程序和任务堆管理。负载均衡
Hadoop Shell脚本已经被重写,用来修复已知的BUG,解决兼容性问题和一些现有安装的更改。它还包含了一些新的特性,内容以下所示:分布式
Hadoop2 中可用的Hadoop客户端将Hadoop的传递依赖性拉到Hadoop应用程序的类路径上。若是这些传递依赖项的版本与应用程序使用的版本发送冲突,这可能会产生问题。oop
所以,在Hadoop3中有新的Hadoop客户端API和Hadoop客户端运行时工件,它们将Hadoop的依赖性遮蔽到单个JAR中,Hadoop客户端API是编译范围,Hadoop客户端运行时是运行时范围,它包含从Hadoop客户端从新定位的第三方依赖关系。所以,你能够将依赖项绑定到JAR中,并测试整个JAR以解决版本冲突。这样避免了将Hadoop的依赖性泄露到应用程序的类路径上。例如,HBase能够用来与Hadoop集群进行数据交互,而不须要看到任何实现依赖。post
在Hadoop3 中引入了一种新型执行类型,即等待容器,即便在调度时集群没有可用的资源,它也能够在NodeManager中被调度执行。在这种状况下,这些容器将在NM中排队等待资源启动,等待荣容器比默认容器优先级低,所以,若是须要,能够抢占默认容器的空间,这样能够提供机器的利用率。以下图所示:性能
默认容器对于现有的YARN容器,它们由容量调度分配,一旦被调度到节点,就保证有可用的资源使它们执行当即开始。此外,只要没有故障发生,这些容器就能够容许完毕。学习
等待容器默认由中心RM分配,但还增长了支持以容许等待容器被分布式调度,该调度群被实现于AM和RM协议的拦截器。测试
在Hadoop3中,本地的Java实现已加入MapReduce地图输出器,对于Shuffle密集的做业,这样能够提升30%或者更高的性能。优化
它们添加了映射输出收集器的本机实现,让MapTask基于JNI来本机优化。基本思想是添加一个NativeMapOutputCollector收集器来处理映射器发出的键值对,所以Sort、Spill、文件序列化均可以在本机代码中完成。阿里云
在Hadoop2中,HDFS NameNode高可用体系结构有一个Active和Standby NameNode,经过JournalNodes,该体系结构可以容忍任何一个NameNode失败。3d
然而,业务关键部署须要更高程度的容错性。所以,在Hadoop3中容许用户运行多个备用的NameNode。例如,经过配置三个NameNode(1个Active NameNode和2个Standby NameNode)和5个JournalNodes节点,集群能够容忍2个NameNode节点故障。以下图所示:
早些时候,多个Hadoop服务的默认端口位于Linux端口范围之内。除非客户端程序明确的请求特定的端口号,不然使用的端口号是临时的,所以,在启动时,服务有时会由于与其余另外一个应用程序冲突而没法绑定到端口。
所以,具备临时范围冲突端口已经被移除该范围,影响多个服务的端口号,即NameNode、Secondary NameNode、DataNode等以下所示:
Daemon | App | Hadoop2 Port | Hadoop3 Port |
NameNode Port | Hadoop HDFS NameNode | 8020 | 9820 |
Hadoop HDFS NameNode HTTP UI | 50070 | 9870 | |
Hadoop HDFS NameNode HTTPS UI | 50470 | 9871 | |
Secondary NameNode Port | Secondary NameNode HTTP | 50091 | 9869 |
Secondary NameNode HTTP UI | 50090 | 9868 | |
DataNode Port | Hadoop HDFS DataNode IPC | 50020 | 9867 |
Hadoop HDFS DataNode | 50010 | 9866 | |
Hadoop HDFS DataNode HTTP UI | 50075 | 9864 | |
Hadoop HDFS DataNode HTTPS UI | 50475 | 9865 |
Hadoop如今支持与微软 Azure数据和阿里云对象存储系统的集成。它能够做为一种替代Hadoop兼容的文件系统,首先添加微软Azure数据,而后添加阿里云对象存储系统。
单个数据节点配置多个数据磁盘,在正常写入操做期间,数据被均匀的划分,所以,磁盘被均匀填充。可是,在维护磁盘时,添加或者替换磁盘会致使DataNode节点存储出现偏移,这种状况在早期的HDFS文件系统中,是没有被处理的。如图下图所示,维护前和维护后不均衡的状况:
如今Hadoop3经过新的内部DataNode平衡功能来处理这种状况,这是经过hdfs diskbalancer CLI来进行调用的。执行以后,DataNode会进行均衡处理,以下图所示:
Hadoop守护进程和MapReduce任务的堆管理已经发生了一系列的变化。
Hadoop3的这些新特性仍是很吸引人的,目前官方推出的稳定版本是2.9.0,发行版是3.1.0,感兴趣的同窗能够下载Hadoop3去体验调研学习一下这些新特性。
这篇博客就和你们分享到这里,若是你们在研究学习的过程中有什么问题,能够加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!