文章目录

  • ⌘ 最低Java版本从7升级到8
  • ⌘ 引入纠删码(Erasure Coding),未来趋势
  • ⌘ 重写了Shell脚本
  • ⌘ 引入了新的API依赖
  • ⌘ MapReduce任务的本地化优化
  • ⌘ 支持超过两个NN
  • ⌘ 许多服务的默认端口改变了
  • ⌘ 添加对Microsoft Azure Data Lake 和 阿里云对象存储系统的支持
  • ⌘ DataNode内部实现Balancer
  • ⌘ 重做的后台和任务堆内存管理
  • ⌘ HDFS实现服务器级别的Federation分流
  • ⌘ Yarn的时间线服务升级到V2
  • ⌘ 容量调度器实现API级别的配置
  • ⌘ Yarn实现更多种资源类型的管理


⌘ 最低Java版本从7升级到8

⌘ 引入纠删码(Erasure Coding),未来趋势

主要解决数据量大到一定程度磁盘空间存储能力不足的问题.

HDFS中的默认3副本方案在存储空间中具有200%的额外开销。但是,对于I/O活动相对较少冷数据集,在正常操作期间很少访问其他块副本,但仍然会消耗与第一个副本相同的资源量。

纠删码能勾在不到50%数据冗余的情况下提供和3副本相同的容错能力,因此,冷数据可以使用纠删码作为副本机制的改进是自然而然,也是未来的趋势.

本来默认是128M为一个块,纠删码可以将其打散成1M一个块

⌘ 重写了Shell脚本

重写了Shell脚本,修改了之前版本长期存在的一些错误,并提供了一些新功能,在尽可能保证兼容性的前提下(旧的不要用了,可能有问题),一些新变化仍然可能导致之前的安装出现问题。

例如:

  • 所有Hadoop Shell脚本子系统现在都会执行hadoop-env.sh这个脚本,它允许所有环节变量位于一个位置;
  • 守护进程已通过*-daemon.sh选项从*-daemon.sh移动到了bin命令中,在Hadoop3中,我们可以简单的使用守护进程来启动、停止对应的Hadoop系统进程;

⌘ 引入了新的API依赖

之前Hadoop客户端操作的Maven依赖为hadoop-client,这个依赖直接暴露了Hadoop的下级依赖,当用户和Hadoop使用相同依赖的不同版本时,可能造成冲突。

Hadoop3.0引入了提供了hadoop-client-api 和hadoop-client-runtime依赖将下级依赖隐藏起来,一定程度上来解决依赖冲突的问题

⌘ MapReduce任务的本地化优化

MapReduce引入了一个NativeMapOutputCollector的本地化(C/C++)实现,对于shuffle密集的任务,可能提高30%或者更高的性能

⌘ 支持超过两个NN

HDFS NameNode高可用性的初始实现为单个Active NameNode 和 单个 Standby NameNode, 将edits复制到三个JournalNode。 该体系结构能够容忍系统中一个NN或者一个JN故障.但是,某些部署需要更高程序的容错能力,Hadoop3.x允许用户运行一个Active NameNode 和多个Standby NameNode。

⌘ 许多服务的默认端口改变了

Hadoop3.x之前,多个Hadoop服务的默认端口位于Linux临时端口范围(63768~61000). 这意味着在启动时,由于与另一个应用程序冲突,服务有时无法绑定到端口.

在Hadoop3.x中,这些可能冲突的端口已移出临时范围,受影响的有NameNode ,

SecondaryNamenode , DataNode 和 KMS

⌘ 添加对Microsoft Azure Data Lake 和 阿里云对象存储系统的支持

⌘ DataNode内部实现Balancer

一个DN管理多个磁盘,当正常写入时,多个磁盘是平均分配的。然而当添加新磁盘时,这种机制会造成DN内部严重的倾斜。

之前的DataNode Balancer只能实现DN之间的数据平衡,Hadoop3.x实现了内部的数据平衡。

⌘ 重做的后台和任务堆内存管理

已实现根据服务器自动配置堆内存,HADOOP_HEAPSIZE变量失效。简化MapTask 和ReduceTask的堆内存配置,现已不必同时在配置中和Java启动选项中指定堆内存大小,旧有配置不会受到影响。

⌘ HDFS实现服务器级别的Federation分流

对于HDFS Federation, 添加了一个对统一命名空间的RPC路由层 。 和原来的HDFS Federation没有变化,只是目前挂在管理不必在客户端完成,而是放在的服务器,从而简化了HDFS Federation访问。

⌘ Yarn的时间线服务升级到V2

Yarn的时间线服务是MRJobHistory的升级版,提供了在Yarn上运行第三方程序的历史支持,该服务在Hadoop3.0升级为第二版

⌘ 容量调度器实现API级别的配置

现在容量调度器可以实现通过REST API来改变配置,从而让管理员可以实现调度器自动配置。

⌘ Yarn实现更多种资源类型的管理

Yarn调度器现已可以通过配置实现用户自定义的资源管理。现在Yarn可以根据CPU和内存以外的资源管理其任务队列