一、hadoop1.x和hadoop2.x的主要区别
- hadoop1.x没有提供架构中主节点namenode及jobtrack的高可用及负载机制,hadoop2.x中有
- 第二个区别体现在mapreduce的架构设计上,hadoop1.x中mapreduce兼具计算和资源调度两个作用,而在hadoop2.x中则讲mapreduce中的资源调度功能剥离形成一个独立的框架叫做yarn,使得hadoop更加灵活,因为剥离后的yarn不仅可以运行在hadoop平台,也可以运行在其它的平台,如spark。
二、mapreduce1.x和mapreduce2.x的架构


- 客户端向RM申请提交作业,RMAM给客户端返回一个作业编号及作业资源存放路径,客户端拿到返回信息后计,算数据切片并将数据切片信息及配置信息和jar包文件保存在作业资源存放路径。
资源保存成功后客户端会向RMAM申请任务的第一个container,并且要求对应的NM在该container内启动应
用程序的MRAM。
MRAM启动成功后向RM中的AM注册自己,注册成功即采用轮询的方式通过rpc协议向RMRS申请应用程序的各个task执行所需要的资源。申请成功则到对应的NM上要求它分配contatiner,并在container内启动task。
在整个应用程序执行期间,各个task通过rpc协议向MRAM报告task执行状态,用户也可以通过rpc向MRAM 查询任务的运行情况。所有task结束,MRAM向AM申请注销,注销完成任务结束。
注意:每个container中只运行一个task,要么是maptask,要么是reducetask。当然也可以是MRAM,每个
应用程序MRAM只有一个。
RM:ResourceManager
RMAM:ResourceManager中的Applications Manager
RMRS:ResourceManager中的Resource scheduler
NM:NodeManager
MRAM:MRApplicationMaster
三、hadoop3.x的新特性
- java最低版本要求从jdk1.7升级为jdk1.8
- hdfs支持纠删码,将原来3倍的存储消耗降低到1.4倍。
在原始数据中假如新的校验数据,使得各个部分的数据产生关联性
在一定范围的数据出错情况下,通过纠删码技术都可以进行恢复
既耗网络又耗cpu,适用于冷数据集群
- hadoop的shell脚本被重写
- mapreduce任务级本地优化
mapreduce添加了map输出collector的本地实现
对于shuffle密集型的作业来说,这将会有30%以上的性能提升
- 支持多于2个的namenode
- 多个服务的默认端口被改变
- 提供了单节个磁盘存储不均的解决方案
- 重写守护进程以及人物的堆内存管理
