hadoop3.0新特性与展望——董西成

9.90

Hadoop3.0是基于JDK1.8发布一个新的Hadoop版本;

影响力不如hadoop1.0->2.0->3.0

1. hdfs的ha;

2. namenode的单点故障;

3. YARN的诞生;

没有引入新的系统,对于系统的特性改变上并不是很大或者说没有特别的令人期待的特性,很多是针对中大型公司进行改进的特性。

Hadoop Common封装了基础库,如RPC库,web server

Hadooop Common的改进点:

1. 精简内核:

a. 剔除了过期的API;

b. 将默认组件实现替换成最高效的实现(原先这些可配置的组件是可选择的,现在已经改换成最高效的实现)

fileoutputcommitter(原先是将数据输出到一个临时目录下,然后通过committer实现数据的move),原先committer是通过单线程实现数据的迁移的,所以当数据量很大的时候会导致计算已经完成,但是数据迁移还未完成。(这个在2.7版本中已经实现)

废除hftp的webserver,支持http,restful的接口方式访问hdfs(我记得当时在做测试的时候出现了BDOC访问hadoop延时过长而导致创建yarn服务失败,原因就在于无法通过restful接口去访问hadoop)

移除了hadoopRPC序列化库,现在是使用protobuf;

2.classpath isolation

防止不同版本jar包冲突(guava,protbuf),用户可以使用自己的包进行打包。

3.shell脚本重构:

修复了打量了bug;

增加了新特性;

支持动态的命令。

HDFS新功能与特性:

1. 纠删码:

不降低可靠性的前提下,节省一半的存储空间;(之前是为提高容错空间,而增加了空间的开销)

纠删码的原理:对数据进行分块,计算产生冗余的校验块,然后剩余存在的数据计算丢失的数据块;

2种实现方案:

a.引入新的服务对新的数据编码和恢复,代表HDFS-RAID。

b. 将纠删码融入HDFS内部。

好处:带来了空间上的利用,坏处是存取时是会带来一定性能的折损,包括重算数据时性能的代价是很高的,所以比较适用于冷数据(也就是历史数据)。

2. 多namenode(3~5)

增强了namenode的容错性。支持了多namenode。

Yarn的新功能和特性:

1. 支持更细粒度的资源隔离:

目前是default、cgroup以及docker。

Hadoop3.0中增加了内存隔离(基于cgroup)实现,IO隔离。

2. 动态实现container资源;但是基于jvm的container不支持。

3. timeline server存储应用程序信息,就是对timeline server进行了优化。

4. yarn-federation

为了让yarn支持100k级别节点的规模(大概是1万节点以上)。

如果RM达到1万以上那么就会很慢。

mapreduce主要改进:

1.hive是使用最广泛的Hadoop组件之一,其底层引擎就是以MR为主。

2.spark在处理TB级别的数据时 spark shuffle实现还是不够高效。spark与hive的兼容还有待提升。(hive on spark,hive on mr)

1. 引入native task:

C++版的MR runtime

对于shuffle密集型应用。

2. 内存的自动推断:

当前MR的设置涉及4个参数:

1. mapreduce.map.memory.mb(container的大小)readce

2.还需要heap的大小。 

之前设置较麻烦,若设置不对会引起被杀掉或者被一直OM的状态。

3.0中只需要设置一个参数即可自动配置。

spark的shuffle

复杂计算以及迭代计算。

 

 

 

 

 

 

 

 

[展开全文]

授课教师

老师

小象学院公开课助教老师