Hadoop学习四

来源:互联网 发布:工程进度计划编制软件 编辑:程序博客网 时间:2024/06/05 19:08

MapReduce的主要体系结构

   1、Client

    用户编写的MapReduce程序通过Client提交到JobTracker端,同时,Client提供一些接口供用户查看Job的运行情况。

2、JobTracker

   JobTracker负责资源监控和作业调度

   JobTracker监控所有的TaskTracker和job健康情况,一旦发现有异常,就将作业迁移到别的节点上;

  JobTracker会跟踪任务的执行进度,资源的使用情况,并将这些信息上报到任务调度器TaskScheduler,TaskScheduler会在资源空闲的时候选择执行任务。

3、TaskTracker

   TaskTracker会周期性的向JobTracker发送资源使用情况和任务执行进度,同时接收来自JobTracker的指令,如启动任务,杀死任务等;

    TaskTracker使用slot等量分割本节点资源,Task只有获取slot后才能被执行,而Hadoop的调度就是将slot分配给不同的task。slot分为Map slot和Reduce slot。

4、Task

  Task分为Map Task和Reduce Task,由TaskTracker启动,

5、MapReduce采用Master/slave架构,Master上运行的是JobTracker,slave上运行的是TaskTracker。

6、Map函数是每一个键值对输入,输出一堆的键值对;Reduce函数是key和一堆的值,输出是key和value的集合。

7、MapReduce的工作流程

     不同的map任务之间是不会通信的;

     不同的Reduce任务之间也不会通信;

    用户不能显示的从一台服务器像另一台服务器发送消息,MapReduce值间的通信是依靠框架自身的。

   首先,InputFormat模块会读取HDFS文件,并对数据文件进行逻辑上的切分为split。接下来由Record Reader根据spit信息去底层读取数据,并输出key-value作为map函数的输入;

    这时候,有很多的键值对,需要经过shuffle过程,形成Reduce的输入;

    Reduce处理后的结果经过OutputFormat模块,输出到HDFS中。

8、split

    split是对HDFS block的逻辑分割,Hadoop为每一个分片创建一个map任务;分片的大小理想情况下是块的大小。

9、Reduce任务数量取决于Reduce任务槽的数量,通常Reduce任务的数量要略小于任务槽,流出一些处理系统资源。

10、shuffle过程的简介

    RR读取split输出的key-value并不是直接写入磁盘,而是防暑缓存中,当缓存满后,发生溢些,写入磁盘,并清空缓存。但是在写入磁盘时,会对键值对进行分区、排序、合并;多个磁盘文件会归并为一个大的磁盘文件,并通知相关的Reduce任务取走。Reduce会从服务器上拉取自己的数据到本地,然后执行归并、合并,输入Reduce函数,处理完后输出到HDFS。



原创粉丝点击