- hadoop提交流程源码
- 1、源码流程
- 2、提交任务过程中主要事项
//进入Job类的waitForCompletion()方法 waitForCompletion() submit(); // 1建立连接 connect(); // 1)创建提交Job的代理 new Cluster(getConfiguration()); // (1)判断是本地运行环境还是yarn集群运行环境 initialize(jobTrackAddr, conf); // 2 提交job submitter.submitJobInternal(Job.this, cluster) // 1)创建给集群提交数据的Stag路径 Path jobStagingArea = JobSubmissionFiles.getStagingDir(cluster, conf); // 2)获取jobid ,并创建Job路径 JobID jobId = submitClient.getNewJobID(); // 3)拷贝jar包到集群 copyAndConfigureFiles(job, submitJobDir); rUploader.uploadFiles(job, jobSubmitDir); // 4)计算切片,生成切片规划文件 writeSplits(job, submitJobDir); maps = writeNewSplits(job, jobSubmitDir); input.getSplits(job); // 5)向Stag路径写XML配置文件 writeConf(conf, submitJobFile); conf.writeXml(out); // 6)提交Job,返回提交状态 status = submitClient.submitJob(jobId, submitJobDir.toString(), job.getCredentials());2、提交任务过程中主要事项
-
在connect方法中,主要通过cluster对象提供一种进入访问mr集群的方式。进入Cluster中,再进入initialize(jobTrackAddr,conf)中包含initProviderList();ProviderList中有YarnClient和LocalClient;通过for循环遍历initProviderList(),并验证参数。
通过参数mapreduce.framework.name来决定是由什么环境运行
如果值为yarn 那就是yarn环境
如果值为local 那就是local环境 -
通过当前环境去获取提交器,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)