MapReduce源码分析之Eclipse中的代码如何提交给JobTracker

来源:互联网 发布:腾讯软件恶意绑定 编辑:程序博客网 时间:2024/06/06 11:04

我们在Eclipse中的代码是如何提交给JobTracker运行的呢,本文在源码级别给予详述,

博文风格依旧,重图轻文易理解,哈哈,开始啦

本文使用的hadoop版本是hadoop-1.1.2,各位看客注意哟

Firstly,找到源码分析的激活点:



没错,就是它——job.waitForCompletion(true),一切从它入手,下面就闲话少说,快快上图...

使用Eclipse强大的源码分析功能,直接跟踪进去,下面是每次跟踪的结果截图




首先,跟踪上图中的“1”跟踪到




类JobClient的构造函数:


连接到服务端(JobTracker),并创建了JobTracker的代理对象后。跟踪上图中的“2”可跟踪到


上图方法submitJobInternal() 的第983行,关键代码:



跟踪“1“”2”,终得结果。可以看出,最终是类JobClient通过RPC机制(Hadoop集群间通信,机架感知,怎能没有它?)调用了类JobTracker的submitJob()提交作业方法,实现了Eclipse中的代码提交给JobTracker。


下面是源码分析过程中,非常重要的类,给予简单介绍

JobTracker

负责接收用户提交的作业,负责启动、跟踪任务执行。

注意通信接口:
JobSubmissionProtocol 是JobClient与JobTracker通信的接口。
InterTrackerProtocol 是TaskTracker与JobTracker通信的接口。

TaskTracker
负责执行任务。

JobClient
是用户作业与JobTracker交互的主要接口。
负责提交作业的,负责启动、跟踪任务执行、访问任务状态和日志等。

O了,截图整理略有不易,如若转载,请注明http://blog.csdn.net/aaronhadoop



0 0
原创粉丝点击