C/C++教程
03_MapReduce框架原理_3.2 Job提交流程(源码)
本文主要是介绍03_MapReduce框架原理_3.2 Job提交流程(源码),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Hadoop
2. Job提交流程(源码)
1. 客户端 执行Driver类的main方法
2. var configuration = new Configuration
读取配置文件 Configuration: core-default.xml, core-site.xml, mapred-default.xml,
mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml
3. val bool: Boolean = job.waitForCompletion(true)
提交job到集群,并且等待他完成
4. submit()
5. connect()
建立连接,获取集群代理对象
提交Job
return new Cluster(getConfiguration())
读取配置文件,建立集群代理
initialize(jobTrackAddr, conf)
判断是本地运行环境 还是 yarn集群运行环境
6. return submitter.submitJobInternal(Job.this, cluster)
提交Job 到 指定集群
1. Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf)
在指定集群中 创建staging(暂存)目录,并返回路径
示例 : file:/tmp/hadoop/mapred/staging/dxm1446706250/.staging
2. JobID jobId = submitClient.getNewJobID()
获取JobID
3. Path submitJobDir = new Path(jobStagingArea, jobId.toString());
根据Jobid 创建Job提交路径
示例 : file:/tmp/hadoop/mapred/staging/dxm870750042/.staging/job_local870750042_0001
4. copyAndConfigureFiles(job, submitJobDir);
上传 configure files, libjars, jobjars, and archives pertaining(相关文档) 到指定路径
rUploader.uploadResources(job, jobSubmitDir)
5. int maps = writeSplits(job, submitJobDir)
根据输入文件,计算切片,并生成切片规划文件,并上传到stag路径
job.split
job.splitmetainfo
6. writeConf(Configuration conf, Path jobFile)
上传 job.xml 到stag路径
conf.writeXml(out)
7. status = submitClient.submitJob(
jobId, submitJobDir.toString(), job.getCredentials())
提交job,并返回提交状态
8. return isSuccessful()
Job完成,返回 true
点击查看代码
这篇关于03_MapReduce框架原理_3.2 Job提交流程(源码)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
您可能喜欢
pyqt 怎么打包整个项目-icode9专业技术文章分享
09-28
laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
09-28
antd怎么实现渲染tiff图片-icode9专业技术文章分享
09-28
英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
09-28
nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
09-28
Node Version Manager (nvm)使用教程-icode9专业技术文章分享
09-28
nvm命令太慢,是什么原因-icode9专业技术文章分享
09-28
Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
09-28
Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
09-28
kotlin 怎么获取当前时间格式-icode9专业技术文章分享
09-28
`useCallback` vs `useMemo` 钩子
09-27
Claude 3 Opus vs. GPT-4o vs. Gemini 1.5 ? — 多语言性能
09-26
使用CrewAI、Groq和Replicate AI创建一个多模态代理
09-26
代理增强检索生成(Agentic RAG) 如何解决当前 RAG 的限制问题
09-26
阿里云ECS项目实战:新手入门指南
09-26
栏目导航
前端开发
HTML5教程
CSS教程
Javascript
jQuery教程
AJAX教程
Node.js教程
XML教程
正则表达式
后端开发
Go教程
C/C++教程
消息队列MQ
Net Core教程
Asp.net教程
Java教程
PHP教程
移动端开发
微信公众号开发
小程序开发
Swift教程
IOS教程
Kotlin教程
Android开发
数据库
Redis教程
MongoDB教程
PostgreSQL教程
Oracle教程
MariaDB教程
SqLite教程
MySql教程
SqlServer教程
服务器运维
Kubernetes
Docker容器
linux shell
Nginx教程
网站安全
PowerShell教程
Linux教程
人工智能
TensorFlow教程
Python教程
机器学习
人工智能学习
区块链
区块链技术
游戏开发
游戏编程
Unity3D教程
网站运营
网站策划
网站优化
建站知识
大数据/云计算
云计算
Hadoop教程
软件工程
软件/开发工具使用
Git教程
资讯