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)。
目录
相关文章
|
6月前
|
XML 分布式计算 安全
hadoop升级流程
hadoop升级流程
|
1月前
|
SQL 存储 分布式计算
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
Hadoop-16-Hive HiveServer2 HS2 允许客户端远程执行HiveHQL HCatalog 集群规划 实机配置运行
41 3
|
1月前
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
61 1
|
1月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
30 1
|
1月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
44 1
|
3月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
92 1
|
3月前
|
存储 分布式计算 资源调度
Hadoop入门基础(一):深入探索Hadoop内部处理流程与核心三剑客
Hadoop入门基础(一):深入探索Hadoop内部处理流程与核心三剑客
|
4月前
|
分布式计算 资源调度 监控
Hadoop中运行Job
【7月更文挑战第10天】
51 2
|
4月前
|
分布式计算 Hadoop 测试技术
|
5月前
|
分布式计算 Hadoop
Hadoop数据重分布的逻辑流程
【6月更文挑战第16天】
42 8