赞
踩
MapReduce是一个将分布式计算抽象为Map和Reduce两个阶段的编程模型。
一个完整的MapReduce必须要有Mapper,但是可以没有reduce。
1、客户端Client
作用:
(1)用户编写的应用程序要通过客户端Client来提交给作业跟踪器JobTracker。
(2)用户可以通过客户端Client提供的接口查看所提交作业的运行状况。
2、作业跟踪器JobTracker
作用:
(1)负责资源监控和作业调度
(2)监控底层任务跟踪器TaskTracker和当前运行Job的健康状况。
(3)在节点失效时,转移Job到其他以节点继续运行。
(4)跟踪任务执行进度和资源使用量,并把信息发送给任务调度器TaskScheduler。
3、任务调度器TaskScheduler
作用:
(1)根据作业跟踪器JobTracker发送的任务进度和资源使用信息,决定把哪个任务分发给哪个节点的任务跟踪器TaskTracker执行。
任务调度器TaskScheduler是一个可插拔模块,即允许用户自己编写任务调度策略。
4、任务跟踪器TaskScheduler
作用:
(1)分布在各个机器(节点)上,接收作业跟踪器JobTracker发来的命令,具体都执行各种任务。
(2)把资源使用情况和任务运行进度以heartbeat的方式发送给作业跟踪器JobTraker以供其监控。
作业跟踪器:
分为Map Task和Reduce Task。一台机器可以同时运行Map Task和Reduce Task。
槽Slot:
每个TaskTracker都会把计算资源(CPU、内存等)打包,然后等分成很多份,以Slot作为当量。
Slot分为Map类型和Reduce类型两种,分别执行Map Task和Reduce Task。只有空闲的Slot才会被TaskScheduler分配新的任务。
详:
1.RPC请求
2.获取新的jobID
3.复制job资源
4.提交任务
5.初始化job
6.获取job资源并分配任务
7.heartbeat(返回任务状态)
8.获取job资源
9.启动任务
10.计算结果写入HDFS
细:
1.JobClient通过RPC协议向JobTracker请求一个新应用的ID,用于MapReduce作业的ID
2.JobTracker检查作业的输出说明。例如,如果没有指定输出目录或目录已存在,作业就不提交,错误抛回给JobClient,否则,返回新的作业ID给JobClient
3.JobClient将作业所需的资源(包括作业JAR文件、配置文件和计算所得得输入分片)复制到以作业ID命名的HDFS文件夹中
4.JobClient通过submitApplication()提交作业
5.JobTracker收到调用它的submitApplication()消息后,进行任务初始化
6.JobTracker读取HDFS上的要处理的文件,开始计算输入分片,每一个分片对应一个TaskTracker
7.TaskTracker通过心跳机制领取任务(任务的描述信息)
8.TaskTracker读取HDFS上的作业资源(JAR包、配置文件等)
9.TaskTracker启动一个java child子进程,用来执行具体的任务(MapperTask或ReducerTask)
10.TaskTracker将Reduce结果写入到HDFS当中
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。