Hadoop源码分析28 JobTracker 处理JobClient请求

本文详细记录了通过Hadoop运行WordCount任务的过程,包括提交命令行、RPC请求交互及后台处理逻辑,揭示了MapReduce作业从启动到完成的具体步骤。

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

提交命令行:hadoop jar/opt/hadoop-1.0.0/hadoop-examples-1.0.0.jar wordcount/user/admin/in/yellow.txt /user/admin/out/3

 

RPC请求:getProtocolVersion(org.apache.hadoop.mapred.JobSubmissionProtocol,28) from 10.1.1.101:37721

处理:返回JobSubmitProtocolVersion

返回:28

 

RPC请求:getStagingAreaDir()from 10.1.1.101:37722

处理:查看conf.get("mapreduce.jobtracker.staging.root.dir")

返回:hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging

 

RPC请求:getNewJobId()from 10.1.1.101:37725

处理:new JobID(getTrackerIdentifier(),nextJobId++)

返回:job_201404152128_0001

 

RPC请求:getQueueAdmins(default)from 10.1.1.101:37730

处理:aclsEnabled=false, allAllowed=true     

返回:All usersare allowed

 

RPC请求:submitJob(job_201404152128_0001,hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging/job_201404152128_0001,org.apache.hadoop.security.Credentials@6e28575) from10.1.1.101:37734

处理:

生成JobInfo对象{id=job_201404152128_0001jobSubmitDir=hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging/job_201404152128_0001user=admin}


生成JobInProgress对象:其中包括一个JobStatus对象{jobid=job_201404152128_0001;mapProgress=0reduceProgress=0cleanupProgress=0setupProgress=0; runState=4 startTime=1397612941994; user=adminpriority=NOMALschedulingInfo="NA"; failureInfo = "NA"; } 


将文件job.xmlHDFS复制到本地:fs.copyToLocalFile(jobFilePath,localJobFile);

jobFilePath=hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging/job_201404152128_0001/job.xml/tmp/hadoop-admin/mapred/local/jobTracker/job_201404152128_0001.xml

将该文件加载到配置:conf=newJobConf(localJobFile);

然后读取job.xml中的配置


生成JobProfile对象:{jobFile="hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging/job_201404152128_0001/job.xml"

jobid=job_201404152128_0001name="wordcount"queueName="default"url="http://server1:50030/jobdetails.jsp?jobid=job_201404152128_0001"(id=720)   

user="admin"}


totalSubmissions++

JobInProgress添加到jobs,其内容为

{job_201404152128_0001=org.apache.hadoop.mapred.JobInProgress@7e9b4b1f} 

JobInProgress添加到JobQueueJobInProgressListenerEagerTaskInitializationListener


 

EagerTaskInitializationListener线程从jobInitQueue取出JobInProgress,初始化JobInProgress

threadPool.execute(new InitJob(job));

实际调用JobTracker.initJob(JobInProgressjob)

hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging/job_201404152128_0001/job.splitmetainfo读取TaskSplitMetaInfo,生成相应的TaskInProgress(mapsreducescleanupsetup)


返回:JobInProgress的成员JobStatus

 

RPC请求:getJobProfile(job_201404152128_0001)from 10.1.1.101:37744

处理:

返回:JobInProgress的成员JobProfile

 

RPC请求:getJobStatus(job_201404152128_0001)from 10.1.1.101:37744

处理:

返回:JobInProgress的成员JobStatus

 

RPC请求:getTaskCompletionEvents(job_201404152128_0001,0, 10) from 10.1.1.101:37744

处理:

返回:JobInProgress的成员taskCompletionEvents

..................

此后JobClient会不断请求getJobStatusgetTaskCompletionEvents

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值