初识Yarn

hadoop1.x版本

这个时候并没有yarn这个概念,只有MapReduce的概念,是mapreduce的计算框架reduce中的原理部分。

工作流程

工作流程图

第一代MapReduce

组件介绍

  • Job Tracker:
    1. 资源调度主节点
    2. 任务调度主节点
  • Task Tracker:从节点 其中还有DataNode
  • client:客户端

流程详解

  • client把Application导出为一个jar包,并把jar包通过指令发送给JobTracker;
  • 但在这之前JobTracker会向NameNode去获取需要计算的文件的位置信息(一个block默认对应三个位置);
  • JobTracker会向有数据的TaskTracker发送消息:“分配点资源,我要去发任务运行”;
  • 然后在对应的节点上,规划一个container也就是容器(容器中包含了所需要的cpu、内存等资源);
  • 接着,JobTracker往各个容器中分发Map Task;
  • Map Task会产生大量磁盘文件;
  • Job Tracker会通知TaskTracker启动一个容器,在容器中执行Reduce Task;
  • Reduce Task从Map Task拉来各个数据,经过计算返回给客户端

对于Map Task和Reduce Task是什么可以参考初识MapReduce .

1.x版本的缺点

  • JobTracker负责资源 和 任务调度的主节点,一旦挂掉,整个集群处于瘫痪状态
  • JobTracker负载过高
  • 与MapReduce耦合度太高,假设Spark也要运行在这套集群上,需要自己去实现资源调度;那么这个集群就存在了两套资源调度器,这也就产生了资源隔离性问题和资源抢夺的问题。

于是为了解决这些种种问题,开发者们开发了Yarn来解决这个问题,也就是下面要说的Hadoop2.x

Hadoop2.x版本

工作流程

工作流程图

Yarn工作流程

主要组件介绍

  • ResourceManager:资源管理的主节点,用于资源的调度
  • NodeManager:资源管理的从节点(与DataNode在同一节点上),NM发送心跳给RM
  • ApplicationMaster:负责任务调度
  • client:客户端

详细流程介绍

  • client把MapReduce Application打包成jar包,使用hadoop jar指令上传到yarn集群去运行。
  • 拿到App计算的文件的路径,去找NameNode,获取每一个Block块的位置,(假设HDFS只有两个block组成)生成一个列表(这里为假设)
    block1 node01 02 03,map task最好在这三个节点上启动(为了减少网络IO),如果这三个节点都满了,就找同机架的服务器;如果还不行,就随机找一个。
    block2 node02 03 08
  • 生成完列表后,向ResourceManager发送一个请求,为ApplicationMaster申请资源,请求启动一个ApplicationMaster(任务调度器)
  • RM接受客户端的申请,然后查看对应的节点上资源充不充足(不充足不启动),随机在NodeManager中规划出一个container容器(里面包含CPU、内存等资源)
  • NodeManager会在容器中启动一个ApplicationMaster负责任务调度
  • 客户端将报表交给ApplicationMaster
  • ApplicationMaster拿到报表后,根据报表去找RM申请资源,假设02 03资源充足,在那俩节点上启动一个container,NodeManager在容器中启动起来一个进程yarn-child
  • ApplicationMaster分发map task(线程)到yarn-child进程
  • 产生磁盘文件
  • 交给reduce task(最好也在02 03 节点)
  • 计算完之后,在写到HDFS中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值