MapReduce

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MapReduce相关的知识,希望对你有一定的参考价值。

参考技术A

图2-1 MapReduce 体系结构

• 用户编写的MapReduce程序通过Client提交到JobTracker端
• 用户可通过Client提供的一些接口查看作业运行状态

• JobTracker负责资源监控和作业调度
• JobTracker 监控所有TaskTracker与Job的健康状况,一旦发现失败,就将相应的任务转移到其他节点
• JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器(TaskScheduler),而调度器会在资源出现空闲时,选择合适的任务去使用这些资源

• TaskTracker 会周期性地通过“心跳”将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
• TaskTracker 使用“slot”等量划分本节点上的资源量(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot 分为Map slot和Reduce slot两种,分别供MapTask 和Reduce Task 使用,且两种slot不能互相使用。

Task分为Map Task 和Reduce Task 两种,均由TaskTracker启动,一个节点可以同时进行map任务和task任务。

split分片是一个逻辑概念,是MapReduce的处理单位,记录元数据信息(文件的起始位置、长度、数据所在节点等)。split一般设计为一个block大小,这是因为: 如果split太小,启动map任务会过多,占用过多资源;如果split太大,一是影响并行度,二是由于split跨越不同block,可能增加数据传输成本。

图3-3 MapReduce任务执行流程示意图

图3-4 Shuffle过程基本流程图

输入的数据执行map任务后,会先写入到本地缓存中(缓存默认大小是100M),缓存数据达到溢写比(默认是0.8)后,会溢写到本地磁盘中。写入到磁盘之前,会进行数据的分区、排序和可能的合并。由于每次溢写都会形成一个文件,最后需要对所有文件进行归并。归并后的文件数据都是已经分区和排好序的。

图3-6 Reduce端Shuffle过程流程图

以上是关于MapReduce的主要内容,如果未能解决你的问题,请参考以下文章

大数据框架之Hadoop:MapReduceMapReduce框架原理——数据清洗(ETL)

大数据框架之Hadoop:MapReduceMapReduce框架原理——Join多种应用

技术汇总

大数据技术栈

MapReduce

Hadoop MapReduce