MapReduce&Yarn 运行原理

希望大家多多点赞   ,多多关注。  有问题大家随时讨论。

MR程序运行阶段:

1.map task 读文件,是通过TextInputFormat(默认)(-->RecordReader-->

read()) 一次读一行,

返回key value,-->Mapper{map(k,v);context.write;输出}-->OutPutCollector收集器-->写到环形缓冲区(默认100M,只写80%,前写后清理,防止溢出)即将溢出时调用combination组件,逻辑和reducede 的一样,合并相同的key,value。提高效率。

2.reduce task 将 map task (合并,归并排序)的最终结果文件下载到本地磁盘工作目录。

3.Reduce task 一次读取一组,通过reduce(k,values){context.write(k,v)}->-OotPutFormat-->

RecordWriter.write(k,v)将文件输出。

  MR与yarn的工作机制:

      1.mr程序在客户端提交 ,main方法的job.submit()会向YARrunner 提交。

      2.YARrunner 向 resource manager  申请提交一个application

      3.resource manageg 反馈给 YARrunner application资源提交路径:hdfs://xxxx.../.staging以及application_id

4.YARNrunner 向 hdfs  提交job运行所需要的资源文件:job.split

Job.xml,xxxx.jar

5.YARNrunner资源提交完毕后,向resource manager 申请 mrAppMaster

6.resourcemanager 将用户的请求初始化成一个task ,并将task放入队列之中(FIFO调度策略)

7.node manager 领取到task任务(只有一个MRAppmaster),创建容器,从hdfs上下载job资源到本地。首先启动MRAppmaster

8.MRAppmaster 向 resource manager申请运行maptask的容器

9.resource manager反馈给MRAppmaster 领取到map task 的nodemanager的地址,并且领取任务的node manager 创建容器。

10.MPAppmastsr 向node manager 发送程序启动脚本。

11.map 阶段运行结束之后,MPAppmastst 向RM申请容器,运行reduce task程序。

Map task  reduce task  都由yarnchild 线程运行。

Map task 都被 MRAppmaster监管。MR程序 和Yarn 不是耦合的。

 

Yarn:资源调度系统,只负责程序运行所需要的分配回收等调度任务与应用程序的内部运作机制完全无关.

YARN已经成为一个通用资源调度平台,许多运算框架都可以借助YARN来实习资源管理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值