[大数据技术原理与应用笔记] 第七讲 MapReduce

7.1 MapReduce 模型简介

传统数据处理理念: 数据向计算靠拢
MapReduce 理念: 计算向数据靠拢 , 即将应用程序分发到数据所在的机器
具体来讲就是当要处理数据块A的时候,将距离数据块A最近的map分配给数据块A,而每每它们是在同一块机器上的缓存

MapReduce 架构: Master/Slave
1581484849(1).png微信

7.2 MapReduce 体系结构

1581485105(1).png

几个概念架构

  1. JobTracker
  2. TaskTracker: 接收JobTracker发送的命令执行具体任务,以心跳的方式发送资源占用状况及任务运行进度
  3. 资源调度单位:slot(槽),将全部可用的CPU和内存资源打包等分,等分的单位即为slot;同时slot分为map类型的slot,用于执行map任务;reduce类型的slot,用于执行reduce任务,二者互不通用.

7.3 MapReduce 工做流程

1581498098(1).png

一个大数据集分红多个片,每一个分片分配一个map执行任务,最后全部map的结果通过分区、排序、合并、归并等操做,称为shuffle,再进行reduce任务。大数据

分片只是逻辑上的分片,而这个分片可能会大于HDFS的一个块的大小,假如两个块不在一个机器上,则还须要跨机器读取,所以通常把分片大小设为一个HDFS块的大小.spa

Reduce任务数量的设置,取决于可用的reduce slot的数量,比可用的reduce slot少一点3d

7.4 Shuffle 过程原理

Map端的Shuffle

微信截图_20200212172031.png
map任务的结果不直接写入磁盘,而是先写入预先分配的缓存(通常是100MB),减小IO的消耗。
溢写是指,不能等缓存满了才写入磁盘,由于map一直在执行,是不会等写操做的,因此缓存快满的时候,达到一个阈值:溢写比(好比0.8),才会写入磁盘
达到溢写比时也不是直接写入,而是要通过blog

  1. 分区: 按照不一样的reduce任务所须要的数据分区,
  2. 排序: 自动实现,按照<key,value>的key的字典序排序
  3. 合并: 可选,好比相同的key值的value值相加或取最大值
Reduce端的Shuffle过程

微信截图_20200212173152.png
reduce端从每一个map那对应本身须要数据的分区拉取数据,
若是map shuffle没有通过合并则拿到的是<key,value-list>,如<'a',<1,1,1>>
若是通过合并则是<key, value>
而reduce 拿到map的输出,还会进行归并,把相同键值的value 归并成value-list。 如<'a',1>,<'a',1> 归并为<'a',<1,1>>排序

7.5 MapReduce 应用程序的执行过程

微信截图_20200212174356.png

Master 对应 JobTracker
Worker对应 TaskTracker内存

MapReduce 产生的中间结果 如缓存,不会写到HDFS,而是直接写入Worker所在的机器的磁盘.资源

相关文章
相关标签/搜索