Hadoop框架的搭建和使用_第一节_hadoop1.x和2.x的异同

Hadoop框架适用于离线批量处理大文件,主要分为三部分:
分布式存储:由HDFS负责;
分布式计算:由MapReduce负责;
资源(内存等)管理调度: 1.X 版本中由MapReduce负责,2.X 之后的版本中由新引入的YARN负责。
Hadoop 2.X 版本是用来解决1.X 版本存在的一些问题,虽说内部的架构发生了改变,但是对于使用者来说则是透明的,client API 的调用方法没有做什么改变,方便了使用者。

一、hadoop 1.X版本的 MapReduce

在这里插入图片描述

hadoop 1.X 版本的MapReduce架构

1.1 主从架构:JobTracker 和 TaskTracker

Master:全局唯一的 JobTracker:

提供 client API:用户程序 (JobClient) 提交一个 Job,该 Job 的信息会发送到 JobTracker 中;JobTracker通过 heartbeat 与集群中的机器保持通信;
任务调度:哪些 Job 应该分配给哪些机器,监控所有的TaskTracker 和 Job的执行状态、完成 failed Job 的重试;一旦 TaskTracker挂了,则需要将任务移动到其他TaskTracker中重新执行;
资源管理:当有新的Job被提交,TaskTracker需要根据当前内存等资源情况分配任务到TaskTracker。
Slaves:多个TaskTracker:

任务执行:执行JobTracker分配的任务;
任务监控和汇报:监控各任务执行的状态;
汇报任务状态:将任务状态汇报给JobTracker。

二、hadoop 1.X 版本的MapReduce存在的问题

JobTracker存在单点故障的问题,一旦JobTracker所在的机器宕机,那么集群就无法正常工作;
JobTracker 同时负责任务调度和资源管理分配,当提交的Job数量很大时,会造成很大的内存开销,这也是导致JobTracker故障的诱因之一,对此业界普遍总结出1.X版本 Hadoop 的 MapReduce 只能支持 4000 节点主机的上限。

三、hadoop 2.X 版本之后的MapReduce和YARN

在这里插入图片描述

3.1 引入资源管理器YARN

为了解决上述问题,开发人员对MapReduce的架构进行了改进。弃用了1.X 版本中的“JobTracker + TaskTracker模式,在2.X版本中:

YARN:负责全部资源管理分配;
MapReduce:只负责分布式计算本身。

3.2 YARN的组成

在这里插入图片描述

hadoop 2.X 之后版本的MapReduce架构
YARN,全称为Yet Another Resource Negotiator,即一款通用的第三方的资源管理器,其不仅可以作为Hadoop集群的资源管理器,也可以作为其他集群的资源管理器,比如Spark集群(就是我们通常所说的Spark on YARN,可以参考:https://blog.csdn.net/liweihope/article/details/91358144)。
YARN总体上仍然是主从结构,其中:

Master: ResourceManager,负责对所有NodeManager上的资源进行统一管理和调度;
Slave:NodeManager,负责单个节点上的资源管理和任务调度;
当用户提交一个application时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。
YARN主要由4个部分组成:
  1. ResourceManger:
全局唯一,管理整个集群的资源;包含:scheduler + ApplicationManager;
scheduler:负责向application分配资源;
ApplicationManager: 接收新application、监控application执行状态、重试failed application;
  1. ApplicationMaster:
一个application对应一个ApplicationMaster;
.向ResourceManager的scheduler申请资源(用Container表示);
将得到的application进一步分配给内部任务;
与NodeManager通信以启动/停止任务;
监控任务的状态;
  1. NodeManager:
每个节点都有一个NodeManager;
负责该节点的任务调度和资源分配;
向ResourceManager汇报该节点的资源使用情况、container的运行状态,处理来自ApplicationMaster的container启动和停止请求;
  1. Container:
与MapReduce 1.x 中的slot 类似,container是YARN中的资源抽象,对节点的资源,如cpu、内存、磁盘等进行封装;
YARN为每一个任务分配一个container去进行执行;
container与slot的区别在于,container是可以进行资源的动态划分的,而slot不能改变自身所包含资源的多少。

下一篇:
Hadoop框架的搭建和使用_第二节_hadoop搭建过程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下次遇见说你好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值