您的位置:首页 > 其它

MapReduce(六): 向JobTracker提交任务

2014-09-02 12:04 411 查看


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进行执行)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MapReduce
相关文章推荐