MapReduce调度原理

MapReduce调度原理

简介

Map:以一条记录为单位做映射(变换、过滤)

Reduce:以一组为单位做计算(分解、缩小、归纳)

Map就是把一坨数据一条条的分开映射成键值对(如下图左半部分)

Reduce就是把Map处理后的具有相同的键的记录整合起来(如下图右半部分)

MapReduce

并行度(map–>切片数量)(reduce–>手动决定)

数据恢复

Split/Block

分隔符(以一条记录为单位)

计算向数据移动:将数据处理逻辑发到不同的机器上,对应的机器“就地取材”,这样节省了大量成本

计算框架

  1. JobTracker:

    • 资源管理

    • 任务调度

  2. Tasktracker:

    • 任务管理

    • 资源汇报给 JobTracker

  3. 客户端

    • 根据每次的计算数据,咨询 Namenode 元数据(block),算split ,得到一个切片的清单,例如

      切片文件偏移量字节数节点
      split01A0500n1 n2 n3
      split02B400300n2 n3 n4
    • 生成计算程序未来运行相关的xml

    • 把 jar split清单 xml 上传到hdfs的目录中 (副本数为10)

    • 调用JobTracker,告知文件存储在hdfs的那些地方


过程

  1. 客户端根据数据的计算量,算出切片清单,生成xml文件
  2. 客户端将jar,split清单,xml文件上传到hdfs中 (副本数量为10)
  3. 客户端通知JobTracker,告知文件存放位置
  4. JobTracker收到启动程序后,从hfds取split清单
  5. JobTracker根据自己收到的TaskTracker汇报的资源(NN内存等信息),确定每一个Split对应的map应该去哪一个节点 [PS:心跳汇报时JobTracker会取回Tasktracker分配的任务信息]
  6. TaskTracker在心跳取回任务后,从hdfs下载对应的文件到本机
  7. TaskTracker最终启动任务描述的MapTask、ReduceTask (代码在某一个节点被启动,通过客户端上传,TaskTracker下载 [计算向数据移动])

可能遇到的问题

  1. JobTracker容易有单点故障
  2. JobTracker压力过大,可能有延迟等一系列问题
  3. JobTracker集成了资源管理和任务调度,两者耦合,导致未来新的计算框架不能复用资源管理(各自实现资源管理,无法相互感知,有争强)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值