我们在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