之前已经学过了MapReduce接口编程模型及涉及的相关组件,本节我们主要学习MapReduce的作业提交过程和如何初始化作业这两部分的内容。
下面我们来熟悉一下MapReduce作业的提交和初始化的过程:
作业的提交过程
第一步,使用Hadoop提供的shell命令提交作业,命令行作业提交命令:
$HADOOP_HOME/bin/hadoop jar job.jar \
-D mapred.job.name="task-test" \
-D mapred.reduce.tasks=3 \
-files=blacklist.txt,whitelist.xml \
-libjars=xxx.jar \
-archives=yyy.zip \
-input /test/input \
-output /test/output
当用户按上述命令格式提交作业后,命令行脚本会调用JobClient.runJob()方法(1.0新版本的MapReduce API使用job.waitForCompletion(true)方法)提交作业,之后的函数调用过程如下图所示:
第二步,作业文件上传
JobClient将作业提交到JobTracker节点上之前,需要作业写初始化工作。初始化工作由JobClient.submitJobInternal(job)实现,这些初始化包括获取作业的jobId、创建HDFS目录、上传作业以及生成所有的InputSplit分片的相关信息等。
MapReduce的作业文件的上传和下载都是由DistributedCache透明完成的,它是Hadoop专门开发的数据分发工具。
第三步,生成InputSplit文件
作业提交后,JobClient会调用InputFormat的getSplits()方法生成相关的split分片信息,该信息包括InputSplit元数据信息和原始的InputSplit信息,其中元数据信息被JobTracker使用,第二部分在Map Task初始化时由Mapper使用来获取自己要处理的数据,这两部分数据被保存到job.split文件和job.splitmetainfo文件中。
第四步,将作业提交到JobTracker
JobClient通过RPC将作业提交到JobTracker端,在这一阶段会依次进行如下操作:
1)、为作业创建JobInProgress对象。JobTracker会为用户提交的每一个作业创建一个JobInProgress对象,这个对象维护了作业的运行时信息,主要用于跟踪正在运行的作业的状态和进度;
2)、检查用户是否具有指定队列的作业提交权限。Hadoop以队列为单位来管理作业和资源,每个队列分配有一定亮的资源,管理严可以为每个队列指定哪些用户有权限提交作业;
3)、检查作业配置的内存使用量是否合理。用户在提交作业时,可已分别通过参数mapred.job.map.memory.mb和mapred.job.reduce.memory.mb指定Map Task和Reduce Task的内存使用量,而管理员可以给集群中的Map Task和Reduce Task分别设置中的内存使用量,一旦用户配置的内存使用量超过总的内存限制,作业就会提交失败;
4)、通知TaskScheduler初始化作业
JobTracker收到提交的作业后,会交给TaskScheduler调度器,然后按照一定的策略对作业做初始化操作。
作业的初始化
作业的初始化主要是指构造Map Task和Reduce Task并对它们进行初始化操作。
这一步的操作主要是由调度器调用JobTracker.initJob()方法来对新作业做初始化的。Hadoop将每个作业分节成4中类型的任务:Setup Task,Map Task,Reduce Task和Cleanup Task,它们的运行时信息由TaskInProgress维护,因此,从某个方面将,创建这些任务就是创建TaskInProgress对象。
Setup Task
作业初始化标志性任务,它进行一些很简单的作业初始化工作。该类型任务又分为Map Setup Task和Reduce Setup Task两种,并且只能运行一次。
Map Task
Map阶段的数据处理任务。
Reduce Task
Reduce阶段的处理数据的任务。其数目可以由用户通过参数mapred.reduce.tasks指定。Hadoop刚开始的时候只会调度Map Task任务,直到Map Task完成数目达到由参数mapred.reduce.slowstart.completed.maps指定的百分比后,才开始调度Reduce Task。
Cleanup Task
作业结束的标志性任务,主要是做一些作业清理的工作,比如删除作业在运行中产生的一些零食目录和数据等信息。
- 大小: 59.3 KB
- 大小: 30 KB
分享到:
相关推荐
文档较详尽的讲述了MR的简介,MR初学分析示例(有代码)、MR特性,MR的执行过程(有代码),MR单元测试介绍(有代码)、HA的架构和配置、同时也向大众推荐了两本书。其中部分有较为详尽的链接以供参考。
(1)输入start-all.sh启动hadoop相应进程和相关的端口号 (2)打开网站localhost:8088和localhost:50070,查看MapReduce任务启动情况 (3)写wordcount代码并把代码生成jar包 (4)运行命令 (1):把linus下的文件...
最后从实际应用的角度深入讲解了Hadoop的性能优化、安全机制、多用户作业调度器和下一代MapReduce框架等高级主题和内容。《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》适合Hadoop的二次开发人员、应用...
Hadoop开发基础 : Google三大论文: MapReduce超大机群上的简单数据处理.doc Hadoop开发基础 : Google三大论文: MapReduce超大机群上的简单数据处理.doc Hadoop开发基础 : Google三大论文: MapReduce超大机群上的简单...
Hadoop技术内幕 深入理解MapReduce架构设计与实现原理 高清完整中文版PDF下载
文档仅包含 简单书签 ...最后从实际应用的角度深入讲解了Hadoop的性能优化、安全机制、多用户作业调度器和下一代MapReduce框架等高级主题和内容。《Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》适合Hadoop的
Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理Hadoop技术内幕:深入解析MapReduce架构设计i与...
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理.pdf
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 文字版Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 文字版Hadoop技术内幕:深入解析MapReduce架构设计与实现原理 文字版
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理(扫描版)Hadoop技术内幕:深入解析MapReduce架构设计与实现原理(扫描版)Hadoop技术内幕:深入解析MapReduce架构设计与实现原理(扫描版)
“Hadoop技术内幕”共两册...最后从实际应用的角度深入讲解了Hadoop的性能优化、安全机制、多用户作业调度器和下一代MapReduce框架等高级主题和内容。本书适合Hadoop的二次开发人员、应用开发工程师、运维工程师阅读。
Hadoop技术内幕 深入解析MapReduce架构设计与实现原理[董西成][带书签].pdf 百度网盘下载
Hadoop技术内幕:深入解析YARN架构设计与实现原理 高清完整中文版PDF下载
深入 剖析 了 Hadoop MapReduce 中 各个 组件 的 实现 细节, 包括 RPC 框架、 JobTracker 实现、 TaskTracker 实现、 Task 实现 和 作业 调度 器 实现 等。 书中 不仅 详细 介绍 了 MapReduce 各个 组件 的 内部 ...
Hadoop技术内幕:深入解析MapReduce架构设计与实现原理