一、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的架构

二、hadoop1.X 2.X 3.X的区别 - 图1

二、hadoop1.X 2.X 3.X的区别 - 图2

  1. 客户端向RM申请提交作业,RMAM给客户端返回一个作业编号及作业资源存放路径,客户端拿到返回信息后计,算数据切片并将数据切片信息及配置信息和jar包文件保存在作业资源存放路径。
  2. 资源保存成功后客户端会向RMAM申请任务的第一个container,并且要求对应的NM在该container内启动应

    用程序的MRAM。

  3. MRAM启动成功后向RM中的AM注册自己,注册成功即采用轮询的方式通过rpc协议向RMRS申请应用程序的各个task执行所需要的资源。申请成功则到对应的NM上要求它分配contatiner,并在container内启动task。

  4. 在整个应用程序执行期间,各个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
  • 多个服务的默认端口被改变
  • 提供了单节个磁盘存储不均的解决方案
  • 重写守护进程以及人物的堆内存管理