Hadoop客户端Job提交流程

简介: 从源码层面,总结下Hadoop客户端提交作业的流程:   1. 选择使用分布式环境通信协议,还是本地调试通信协议      org.apache.hadoop.mapreduce.Job#connect   2. 上传作业代码jobjar, libjar等,从本地文件系统到HDFS中去。     &nbsp
从源码层面,总结下Hadoop客户端提交作业的流程:
 
1. 选择使用分布式环境通信协议,还是本地调试通信协议
     org.apache.hadoop.mapreduce.Job#connect
 
2. 上传作业代码jobjar, libjar等,从本地文件系统到HDFS中去。
     copyAndConfigureFiles(job, submitJobDir);
 
3. 拆分输入文件,生成splits
     org.apache.hadoop.mapreduce.JobSubmitter#writeSplits()
     a. 调用job.getInputFormat().getSplits()
     b. 根据split size (通常就是HDFS block size), 将文件拆分成多个逻辑上的Split。
          每个Split要记录它在逻辑文件中的字节起始位置, 和这个Split所在的HDFS chunk存储在了哪些HDFS datanode上:
          
 
     c. 将所有Split写入HDFS上的同一个全局文件(<jobSubmitDir>/job.split)中。
         这个全局文件的头部是:org.apache.hadoop.mapreduce.split.JobSplitWriter#SPLIT_FILE_HEADER ("SPL") + split version (1)
         在这个全局文件内部,为每个Split, 依次写入 split serializer class name + 序列化了的业务数据, 
 
          org.apache.hadoop.mapreduce.split.JobSplitWriter#writeNewSplits
 
 
          (
                    jobSubmitDir:
                    local: /tmp/hadoop/mapred/staging/<job id>
                    hdfs: /tmp/hadoop-yarn/staging/<user>/.staging/<job id>
            )
 
     d. 将所有Split的描述信息写入<jobSubmitDir>/job.splitmetainfo中。包括每个Split在job.split全局文件中的偏移量、长度,存储这个Split的datanode的地址
          
          org.apache.hadoop.mapreduce.split.JobSplitWriter#writeJobSplitMetaInfo
 
 
4. 将客户端内存中初始化了的作业配置job.configuration写入HDFS <submitJobDir>/job.xml
 
 
5. 将作业包装成org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext,调用org.apache.hadoop.yarn.client.api.impl.YarnClientImpl#submitApplication()提交作业给Yarn (走Hadoop RPC)。
目录
相关文章
|
4月前
|
XML 分布式计算 安全
hadoop升级流程
hadoop升级流程
|
28天前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
40 1
|
1月前
|
存储 分布式计算 资源调度
Hadoop入门基础(一):深入探索Hadoop内部处理流程与核心三剑客
Hadoop入门基础(一):深入探索Hadoop内部处理流程与核心三剑客
|
2月前
|
分布式计算 资源调度 监控
Hadoop中运行Job
【7月更文挑战第10天】
37 2
|
2月前
|
分布式计算 Hadoop 测试技术
|
3月前
|
分布式计算 Hadoop
Hadoop数据重分布的逻辑流程
【6月更文挑战第16天】
31 8
|
3月前
|
存储 分布式计算 大数据
Hadoop 生态圈中的组件如何协同工作来实现大数据处理的全流程
Hadoop 生态圈中的组件如何协同工作来实现大数据处理的全流程
|
3月前
|
分布式计算 并行计算 Hadoop
Hadoop数据重分布的流程
【6月更文挑战第14天】
30 5
|
4月前
|
存储 分布式计算 Hadoop
【Hadoop】HDFS 读写流程
【4月更文挑战第9天】【Hadoop】HDFS 读写流程
|
4月前
|
存储 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
285 0