提交命令行: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

处理:返回JobSubmitProtocol的Version

返回: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_0001,jobSubmitDir=hdfs://server1:9000/tmp/hadoop-admin/mapred/staging/admin/.staging/job_201404152128_0001,user=admin}

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

将文件job.xml从HDFS复制到本地: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_0001,name="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添加到JobQueueJobInProgressListener、EagerTaskInitializationListener

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(maps、reduces、cleanup、setup)

返回: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会不断请求getJobStatus、getTaskCompletionEvents

转载于:https://www.cnblogs.com/leeeee/p/7276491.html

Hadoop源码分析28 JobTracker 处理JobClient请求相关推荐

  1. Hadoop源码分析(12)

    Hadoop源码分析(12) 1. journalnode客户端   在文档(11)中分析了初始化editlog的方法.在初始化之前其会根据集 群的配置状态选择不同的方式来进行初始化.在HA状态下,其 ...

  2. Hadoop源码分析(25)

    Hadoop源码分析(25) ZKFC源码分析   从文档(4)到文档(24),详细分析了namenode的启动流程.最后namenode会以standby模式启动.但在standby模式下的name ...

  3. Hadoop源码分析(四)

    2021SC@SDUSC 研究内容简略介绍 上周我们分析了org.apache.hadoop.mapreduce.Cluster中的的核心代码,本周将继续对mapreduce部分进行分析.在对Clus ...

  4. Hadoop源码分析-Context

    学编程第一个肯定是hello world,Hadoop也不例外,它的hello world就是Wordcount,单词统计例子 1 package org.apache.hadoop.examples ...

  5. Hadoop源码分析-Text

    Text是Hadoop中的一个Writable类,定义了Hadoop中的其中的数据类型以及操作. This class stores text using standard UTF8 encoding ...

  6. hadoop源码分析_Spark2.x精通:Job触发流程源码深度剖析(一)

    , 一.概述  之前几篇文章对Spark集群的Master.Worker启动流程进行了源码剖析,后面直接从客户端角度出发,讲解了spark-submit任务提交过程及driver的启动:集群启动.任务 ...

  7. Hadoop 源码分析(二四)FSNamesystem

    以下轮到FSNamesystem 出场了. FSNamesystem.java 一共同拥有4573 行.而整个namenode 文件夹下全部的Java 程序总共也仅仅有16876 行,把FSNames ...

  8. Hadoop源码分析笔记(十一):数据节点--数据节点整体运行

    数据节点整体运行 数据节点通过数据节点存储和文件系统数据集,管理着保存在Linux文件系统上的数据块,通过流式接口提供数据块的读.写.替换.复制和校验信息等功能.建立在上述基础上的数据节点,还需要维护 ...

  9. Hadoop源码分析HDFS ClientProtocol——getBlockLocations

    2019独角兽企业重金招聘Python工程师标准>>> Class ClientProtocol是HDFS客户端与NameNode之间的接口.Client通过调用ClientProt ...

  10. Hadoop源码分析16: IPC流程(11) 整体流程

    1.发送请求:query.getCPUStatus("Intel"); 2.传送到:RPCInvoker.invoke(Object proxy, Method method, O ...

最新文章

  1. UTF-8 CPP的使用
  2. [HNOI2008 GT考试]
  3. Vue+flask前后端开发
  4. 论文浅尝 | 基于知识库的神经网络问题生成方法
  5. jQueryEasyUI Messager基本使用
  6. 基于JAVA+SpringMVC+MYSQL的大学毕业生就业信息管理系统
  7. 实时搜索专家Krzana正式进军金融大数据市场
  8. 用友通总账问题维护精粹
  9. c语言 zipf分布,Zipf分布:如何测量Zipf分布
  10. 基于JavaWeb的小说阅读网站设计与实现 毕业论文+答辩PPT+项目源码及数据库文件
  11. ACCESS 中屏蔽shift键
  12. Linux安装rsync命令失败,rsync 常见错误与解决方法整理
  13. JSD-2204-JavaScript-Vue-Day05
  14. 使用Java实现MP3音乐播放
  15. CTF-综合测试(高难度)【超详细】
  16. oracle安装配置
  17. C语言实现汉字的输出以及字库的应用
  18. 绝地求生游戏怎么转到计算机上玩,绝地求生大逃杀吃鸡游戏提示tslgame.exe 应用程序错误解决方法...
  19. JS基础学习(十):字符串的大小写转换、trim()方法、JS字符串截取和模版字符串
  20. Linux内存池技术

热门文章

  1. [转]网络性能评估工具Iperf详解(可测丢包率)
  2. 深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
  3. likely,unlikely宏与GCC内建函数__builtin_expect()
  4. Scanner初学需要注意的几个问题
  5. java连接mysql-8.0.11且成功读写
  6. cfda计算机管理化系统,计算机化系统清单
  7. 广东财经大学计算机专业学费,广东财经大学各专业一年至少需要交的学费
  8. mybatis如何处理参数
  9. Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c(08)
  10. 能做多大的单片机项目程序开发,就代表了你的敲代码的水平