在Hadoop代码结构中,按照功能的不同将项目划分到不同目录当中。
整个项目可以用maven进行构建,因此根目录下有pom.xml文件。
每个子目录也可作为独立的maven项目进行编译,因此每个子目录下也都有pom.xml。
Mapreduce、HDFS是Hadoop最主要的两个功能模块,这两个部分就分别放到了hadoop-mapreduce-project、hadoop-hdfs-project这两个目录当中。由于各子项目之间会使用些共同的基础功能,这部分基础功能的代码实现,在hadoop-common-project下。
主要子目录中的功能如下:
如果只为研究目的,不考虑特殊版本需求的话,直接从apache的Hadoop官网https://hadoop.apache.org/releases.html下载一份最新的源代码。
或者,可以从github上获取:
maven的Eclipse插件可以用于生成eclipse项目文件(.classpath、.project),使得对应项目可以直接在Eclipse中打开。
在项目根目录下,可以执行:
如上所述,Hadoop有多个子项目组成,在根目录中执行该项目之后,每个子目录都会生成单独的子项目。在Eclipse中打开就会同时载入所有子项目。
由于Hadoop项目比较大,一般会根据需要到某个子项目中执行Eclipse项目生成操作,比如:
执行完成之后,可以在Eclipse中导入项目:
选择子项目所在的目录,并打开:
之后,便可以像平常查看普通Java项目那样,进行查找文件、跳转到定义处等操作了:
Hadoop的编译过程看似只需要mvn的命令启动一下即可,但过程中会对某些工具及项目有所依赖。
如果是连上网络的一台Linux机器,装这些并不困难,在CentOS中使用yum install,在Ubuntu中使用apt-get install。
Hadoop依赖于Google的Protobuf,需要下载、编译并安装Protobuf之后才能保证Hadoop的正确编译。
下载的链接:https://developers.google.com/protocol-buffers/docs/downloads。
需要根据需求下载正确的版本(比如Hadoop2.6.x、2.7.x需要Protobuf v2.5.0)。
解压之后,在Protobuf项目目录执行如下命令完成安装:
点击阅读原文跳转github链接