最近开始看Hadoop源码,本来想对照着《Hadoop技术内幕》看的,但是发现那本书对应的Hadoop版本太老了,还是基于1.x的,构建工具用的Ant,所以没有完全对照书看。
目前Hadoop最新的stable版本为2.8.0-RC1,本文以及之后的Hadoop源码相关的博文都以这个版本为基础。另外写的可能会糙一些。
首先把源码从GitHub上搞下来,查看一下都有哪些tag,并迁出最新的release (3.0.0-alpha版本就不考虑了)
git tag
git checkout release-2.8.0-RC1
Hadoop 2.x版本已经是采用maven构建了,在Intellij idea里面将Hadoop源码作为maven工程导入。
Hadoop是一个分布式系统,对它的学习我考虑首先从RPC机制开始。
打开 hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/ipc
,发现这里面的类还真是多啊……需要选择一个合适的切入点才能开始看。
于是我将目光转向了 src/test/java/org/apache/hadoop/ipc
这个文件夹,里面是一些测试类,通过名字判断 TestPRC.java
是一个不错的切入点,点进去看了一下里面也确实是对Hadoop RPC完整流程的测试。于是开搞吧
如果想要运行测试的话,目前的代码是不行的,你可以看到很多文件都有报错,有一些类找不到。因为源码中只有Protobuf
的定义文件,但是没有生成具体的类。protoc
的安装流程这里不表述了,安装好Hadoop对应的 2.5版本的pro