1. 程式人生 > 其它 >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
    </svg>
    </div>
</div>