Mapreduce Job提交流程原始碼和切片原始碼詳解

DarkFwin發表於2020-10-13

1)Job提交流程原始碼詳解:

圖示:

 程式碼:

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)FileInputFormat切片原始碼解析(input.getSplits(job))

 

相關文章