1. 安装Apache Maven。
这方面的文章挺多,参考:http://blog.csdn.net/july_2/article/details/32102959
修改eclipse maven配置:windows->preference->maven->user setting,到自己maven安装目录下。我的:/home/zfh/apache/maven-3.3.9/conf/settings.xml
在settings.xml文件里可以配置maven下载的jar包在本地的存放目录:<localRepository>/home/zfh/apache/mavenRepository</localRepository>
可以设置maven的源配置,可以修改成国内的源:
<mirrors>
<!-- mirror
| Specifies a repository mirror site to use instead of a given repository. The repository that
| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
|
<mirror>
<id>mirrorId</id>
<mirrorOf>repositoryId</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://my.repository.com/repo/path</url>
</mirror>
-->
<mirror>
<id>Central</id>
<url>http://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>nexus-osc</id>
<mirrorOf>*</mirrorOf>
<name>Nexus osc</name>
<url>http://maven.oschina.net/content/groups/public/</url>
</mirror>
</mirrors>
2:安装protobuf,不然在执行maven install时会报:
checking for gcc... no
checking for cc... no
checking for cl.exe... n
安装命令:---yum install -y gcc-c++
安装完毕后,在环境变量配置protobuf的PATH
这块可参考:https://my.oschina.net/zhangjie830621/blog/412831
3: cd到 hadoop-2.6.0-src/hadoop-maven-plugins 目录下 使用:mvn intall
4.:cd到hadoop-2.6.0-src 目录下 使用mvn eclipse:eclipse -DskipTests
注意第四步可能会报错:可以执行mvn org.apache.maven.plugins:maven-eclipse-plugin:2.6:eclipse,选择eclipse插件,然后再执行第4步
5:经过漫长等待,成功后会显示BUILD SUCCESS。
6:在Eclipse中:File-Import-Existing Projects into Workspace 选择hadoop-2.6.0-src目录导入。
7:
导入后会有一些错误,主要是三个:
序号 | Description | Resource | Path | Location | Type |
(1) | AvroRecord cannot be resolved to a type | TestAvroSerialization.java | /hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro | line 32 | Java Problem |
(2) | EchoRequestProto cannot be resolved | RPCCallBenchmark.java | /hadoop-common/src/test/java/org/apache/hadoop/ipc | line 397 | Java Problem |
(3) | Project 'hadoop-streaming' is missing required source folder: '<你的源代码根目录>/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf' | hadoop-streaming | Build path | Build Path Problem |
解决第一个错误:
- 需要下载avro-tools-x.x.x.jar文件。
- 进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\avro”执行命令,java -jar <所在目录>\avro-tools-1.7.7.jar compile schema avroRecord.avsc ..\java 。其中avsc文件是avro的模式文件,上面命令是要通过模式文件生成相应的.java文件。
操作命令:cd /home/zfh/hadoopSourceCode/hadoop-2.6.2-src/hadoop-common-project/hadoop-common/src/test/avro
java -jar /home/zfh/hadoopSourceCode/hadoop-2.6.2-src/hadoop-common-project/avro-tools-1.7.7.jar compile schema avroRecord.avsc ../java
- 右键单击eclipse中的hadoop-common项目,然后refresh。【如果refresh不成功,直接refresh出错源码文件所在的包】
解决第二个错误,也是要生成一些.java文件:
- 进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\proto”,执行protoc --java_out=..\java *.proto 命令(protoc就是在上面第三步下载的protoc程序)。
操作命令:cd /home/zfh/hadoopSourceCode/hadoop-2.6.2-src/hadoop-common-project/hadoop-common/src/test/proto
protoc --java_out=../java *.proto
- 右键单击eclipse中的hadoop-common,然后refresh。【如果refresh不成功,直接refresh出错源码文件所在的包】
解决第三个错误:
- 在eclipse中,右键单击hadoop-streaming项目,选择“Properties”,左侧栏选择Java Build Path,然后右边选择Source标签页,注意出错的那个路径(先不要删除)。
- 点击“Link Source按钮”,选择被链接的目录为“<你的源代码根目录>/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/conf”,链接名可以使用显示的(也可以随便取);
- inclusion patterns中添加capacity-scheduler.xml,exclusion patters中添加**/*.java,这个信息与出错的那项一样;完毕后将出错的项删除。刷新hadoop-streaming项目。
【补充:好像直接将出错的Source标签页中的项删去,也可以】
至此可以成功导入Hadoop 2.6.0 的源代码到eclipse中,结果如下图所示: