预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

HadoopMap/Reduce执行流程关键代码 JobClient.runJob(conf)|运行job |-->JobClientjc=newJobClient(job); |-->RunningJobrj=jc.submitJob(job); |-->submitJobInternal(job); |-->intreduces=job.getNumReduceTasks(); |-->JobContextcontext=newJobContext(job,jobId); |-->maps=writeOldSplits(job,submitSplitFile); |-->job.setNumMapTasks(maps); |-->job.writeXml(out); |-->JobStatusstatus=jobSubmitClient.submitJob(jobId); ---------------------------------------------------------------------------------------------- JobTracker.submitJob(JobId)|提交job |-->JobInProgressjob=newJobInProgress(jobId,this,this.conf); |-->checkAccess(job,QueueManager.QueueOperation.SUBMIT_JOB);|检查权限 |-->checkMemoryRequirements(job);|检查内存需求 |-->addJob(jobId,job);|添加至job队列 |-->jobs.put(job.getProfile().getJobID(),job); |-->for(JobInProgressListenerlistener:jobInProgressListeners)|添加至监听器,供调度使用 |-->listener.jobAdded(job); ------------------------------------------------------------------------------------------------------ JobTracker.heartbeat()|JobTracker启动后供TaskTracker以RPC方式来调用,返回Response集合 |-->List<TaskTrackerAction>actions=newArrayList<TaskTrackerAction>(); |-->tasks=taskScheduler.assignTasks(taskTrackerStatus);|通过调度器选择合适的tasks |-->for(Tasktask:tasks) |-->expireLaunchingTasks.addNewTask(task.getTaskID()); |-->actions.add(newLaunchTaskAction(task));|实际actions还会添加commmitTask等 |-->response.setHeartbeatInterval(nextInterval); |-->response.setActions(actions.toArray(newTaskTrackerAction[actions.size()])); |-->returnresponse; --------------------------------------------------------------------------------------------------------- TaskTracker.offerService|TaskTracker启动后通过offerservice()不断发心跳至JobTracker中 |-->transmitHeartBeat() |-->HeartbeatResponseheartbeatResponse=jobClient.heartbeat(status,justStarted,justInited,askForNewTask,heartbeatResponseId); |-->TaskTrackerAction[]actions=heartbeatResponse.getActions(); |-->for(TaskTrackerActionaction:actions) |-->if(actioninstanceofLaunchTaskAction) |-->addToTaskQueue((LaunchTaskActi