文档介绍:想要出类拔萃,就要努力至少一万小时
Hadoop MapReduce 深入MapReduce Job 提交
分类: Hadoop-MapReduce 2013-12-20 08:22 211人阅读评论(0) 收藏举报
hadoopmapreduce
一个job的运行,涉及4个实体:客户端,JobTracker,TaskTracker,HDFS
【客户端】()提交任务,任务提交后。
1 向 jobtracker 请求一个新的作业ID (())
2 检查输出目录,例如输出目录已经存在,就不提交
3 计算作业的输入数据分片。如果分片无法计算(输入路径不存在),就不提交
4 将运作所需要的资源(Jar文件,配置文件,输入分片)复制到 jobtracker 的一个以Job id命名的目录下
【HDFS】。jar文件有多个副本(由  定义,默认10个)
5 告知 jobtracker  作业准备执行,通过调用 ()实现。
【JobTracker】接收到JOB调用后,会把Job放入一个内部队列,作业调度器会从其中选择Job,并对其初始化。
作业调度器首先从HDFS中获得数据分片信息。为每个数据分片创建一个map task。reduce task数目由
 。除了map 和 reduce 任务,还会创建2个
任务:a job setup task 和 a job cleanup task。
【TaskTracker】定时发送 heartbeat 给JobTracker 。heartbeat 用于报告 Tasktracker是否还存活。
同时会通知JobTracker 本结点是否可以运行task ,如果可以运行Task, JobTracker 会分配一个Task到当前结
点。 
Tasktracker中有固定数目的Map Task Slots(任务槽) 和 Reduce Task Slots。例如一个Tasktracker 配置同时运
行2个map Task 和2个reduce Task 。JobTracker 会先分配Map task,如果Map Task Slot 没有空余,才会分
配Reduce task 。
如果是分配Reduce Task,Job Tracker 只是简单的从列表中选择一个。如果分配的是map Task,还需要考虑输入数
据。
tasktracker 被分配一个任务后,首先把Jar文件复制到本地文件系统,同时会将所需要的全部文件从分布式缓存复
制到本地磁盘。tasktracker会新建一个本地工作目录,把Jar文件解压到这个文件夹。最后新建一个
TaskRunner 运行任务。TaskRunner 会启动一个单独的JVM 运行任务。
进度和状态是通过heartbeat来更新和维护的。
如果一个 task 报告进度,会设置一个标志位, tasktracker 中有一个单独进程每3分钟查询一次状
态。tasktracker 每5分钟会向