MapReduce(六): 向JobTracker提交任务

本文详细介绍了MapReduce任务提交过程,包括使用GenericOptionsParser设置JobConf参数,获取HDFS上的staging目录,处理Kerberos验证,上传Job文件、archives和jars到HDFS,检查输出目录,设置环境变量,生成并存储token,初始化并运行任务,以及任务完成后目录清理的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.          在提交任务之前,可以通过GenericOptionsParser,把命令行中的参数设置到JobConf中,涉及到的命令行参数有:-fs,-jt,-conf(指定xml参数文件),-libjars(指定执行任务的jar包),-files(指定该任务可能用到的文件),-archives(指定该任务可能用到的资源),tokenCacheFile(指定登陆的口令文件)。

2.          1.1 JobTracker向hdfs server获取hdfs server上的本地临时staging根目录,用户目录为hdfs uri+根目录+user+"/.staging",这里的用户为启动JobTracker的用户。获取的目录例如:hdfs://192.168.74.103:9000/tmp/hadoop/mapred/staging/jack/.staging

3.          1.3 设置的目录为staging dir + jobId

4.          1.4 如果配置了Kerberos验证,则从mapreduce.job.credentials.binary配置的本地二进制文件中获取Token和SecurityKey,从mapreduce.job.credentials.json配置的JSON文件中获取SecurityKey。

5.          1.5 上传通过命令行参数”files”,”archives”,”libjars”(也可以通过代码设置配置参数”tmpfiles”,”tmparchives”,”tmpjars”)设置的Job files,archives,jars,到hdfs server上,三个目录分别为staging dir+jobid+files,staging dir+jobid+archives,staging dir+jobid+libjars。上传好后的路径添加到JobConf环境变量中,分别对应:”mapred.cache.files”,” mapred.job.classpath.archives”。然后对”mapred.jar”中配置的本地路径上的运行jar包,提交到hdfs上并更改名字为job.jar,提交到hdfs的文件路径为staging dir + jobid+job.jar

6.          1.6  检查设置的Job输出目录在dfs文件系统上不存在

7.          1.7 见《深入浅出hadoop》文件分割算法。

8.          把以上所设置的环境变量以及默认环境变量写到staging dir+jobid+job.xml

9.          1.9.3 如果是首次执行任务,则把任务的ID,任务的staging dir+jobid路径,任务所属用户写到hdfs文件系统上所配置的"mapred.system.dir"路径下以jobid为子目录的文件job-info,"mapred.system.dir"的默认路径为/tmp/hadoop/mapred/system,目录例如:hdfs://192.168.74.103:9000/tmp/hadoop/mapred/system/<jobid>/job-info,用于在系统异常之后对未完成的任务重新提交运行完成。在该Job完成时,由JobTracker在garbageCollect阶段清除该目录。

10.       1.9.5 添加job到队列中,然后另启线程开始初始化运行该job

11.       2.1.2 根据jobid生成token,Token的key名称为"ShuffleAndJobToken",添加原有的credentials中(有1.4中生成的credentials),然后把所有的credentials写入到hdfs文件系统上所配置的"mapred.system.dir"路径下以jobid为子目录的文件jobToken,例如:hdfs://192.168.74.103:9000/tmp/hadoop/mapred/system/<jobid>/jobToken

12.       2.1.3 文件分割信息

13.       2.1.4 生成map任务信息,每个split一个map任务。生成reduce任务信息,默认配置一个任务,可以通过"mapred.reduce.tasks"参数设置reduce任务个数。生成cleanup和setup任务。

14.       1.11删除该Job的staging dir + jobId目录

 

注:一个任务在在执行过程中在hdfs上会主要创建两个目录,分别是,hdfs://192.168.74.103:9000/tmp/hadoop/mapred/staging/jack/.staging/<jobId>hdfs://192.168.74.103:9000/tmp/hadoop/mapred/system/<jobid>,前者用于存储该任务的详细信息,运行程序和资源文件等,在Job完成后由提交Job执行的用户负责删除;后者存储该任务的用户信息和Token,Job完成后JobTracker负责对该目录清除(RecoverManager在JobTracker启动时扫描该目录下文件,如果存在则对该Job进行重新提交给JobTracker进行执行)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值