【hadoop学习笔记】---MapReduce

MapReduce介绍

一个以高可靠,高容错方式编写程序并行的处理在大的集群上存储的大量的数据的软件框架,这些集群可以由通用的硬件组成。其对外提供了5个标准的可编程接口,InputFormat、Mappper、Partitioner、Reducer、OutputFormat。

MapReduce架构

采用master/slave架构,主要组成组件有:Client、JobTracker、TaskTracker、Task。

(1)Client

用户编写的MapReduce程序通过Client提交到JobTracker端,同时,用户通过Client提供的一些接口查看作业运行状态。在hadoop内部用作业(Job)表示MapReduce程序。一个MapReduce程序可对应若干个作业,而每个作业会被分解为若干个Map/Reduce任务(Task)。

(2)JobTracker

负责资源监控和作业调度。JobTracker监控所有TaskTracker与作业的健康状况,一旦发现失败的情况后,其会将相应的任务转移到其他节点,同时JobTracker会跟踪任务的执行进度、资源使用量等,并将这些信息告诉给任务调度器(Task Scheduler),而T调度器会在资源出现空闲时,选择合适的任务使用这些资源。在hadoop中,任务调度器是一个可插拔的模块,用户可以根据自己的需要设计相应的Scheduler。

(3)TaskTracker

TaskTracker会周期性的通过Heartbeat将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀手任务等)。TaskTracker使用slot等量划分本节点上的资源量、“slot”代表计算资源(CPU、内存等)。一个task获取到一个slot后才有机会运行,而hadoop调度器的作用就是将各个TaskTracker上的空闲slot分配给Task使用。slot分为map slot和reduce slot两种,分别供map task和reduce task使用。TaskTracker通过slot数目(可配置参数)限定task的并发度。

(4)Task

Task分为Map Task和Reduce Task两种,均由taskTracker启动。HDFS通常以block为基本单位存储数据,而对于mapreduce而言,其处理单位是spilt,split是一个逻辑概念,只包含一些元数据信息,例如数据的起始位置、数据长度、数据所在的结点等。它的划分方法完全由用户自己决定。但是,split的多少决定map task的数目,因为每个split会交给一个map task处理。其中block和split的关系如图所示:

其中包含的原理有:

MapReduce job通常将输入数据切分为独立的数据块(chunk),这些数据块被map task以并行的方式处理

该框架把maps的输出进行排序,然后将这些输出作为reduce task的输入数据

job的输入和输出数据都是存储在文件系统中

MapReduce框架主要进行task调度,监听,以及对失败的task重新执行

MapReduce 结构

master-slave结构

数据存储在HDFS上,低开销,高容错,易扩展

MapReduce融入HDFS提供了在并行数据处理的好处

发送计算指令到数据存储本地磁盘

分布式的程序模型和框架,其对开发者隐藏了复杂的内部实现

MapReduce思想  分而治之

Map

      --Mapper复杂分,即将复杂的任务分解为若干个“简单的任务”执行

      --“简单的任务”有几个含义:1、数据或计算规模相对于原任务要达到缩小;2、就近计算,即会被分配到存放了所需数据的结点进行计算;3、这些小任务可以并行计算,彼此间几乎没有依赖关系

      --一个HDFS block(input spilt)执行一个Map task

      --Map task运行在集群中数据块所存储在的slave节点上(data locality).

      --提供给Map task的输入是key-value对

shuffle and Sort

      排序和整合在Map阶段所有执行完的Map的中间输出数据

Reduce

      --对map阶段的结果进行汇总

      --Shuffle and Sort阶段产生的中间数据作为Reduce阶段的输入数据

      --Reduce程序生成最终的输出数据

MapReduce并行处理

生命周期

猜你喜欢

转载自blog.csdn.net/m0_38103546/article/details/82808577