~~删除线~~
.1.下载maven,http://maven.apache.org/download.cgi,解压并配置环境变量
2.下载JDK,我这里是1.8的,下载并配置环境变量
3.下载并解压hadoop-2.7.3源码,
http://archive.apache.org/dist/hadoop/common/hadoop-2.7.3/hadoop-2.7.3-src.tar.gz
4.下载protobuf2.5,链接:https://pan.baidu.com/s/1JuQDK6r-0al4vsGDyzb-FA 密码:tgoy,解压出两个压缩包,分别是protoc-2.5.0-win32.zip和 protobuf-2.5.0.tar.gz。解压protobuf-2.5.0.tar.gz,得到protobuf-2.5.0文件夹,然后解压protoc-2.5.0-win32.zip,得到protoc.exe,将protoc.exe分别放入C:\Windows\System32中和protobuf-2.5.0/src中。
验证
进入protobuf-2.5.0/java,执行mvn package命令,生成protobuf-java-2.5.0.jar文件,在target中.
5.开始编译
进入hadoop-2.7.3-src/hadoop-maven-plugins,运行mvn install
稍等片刻,输出
然后进入hadoop-2.7.3-src中,运行mvn eclipse:eclipse -DskipTests,生成eclipse目录结构的源码,-DskipTests说明跳过测试,这个要等待很久,视网速和机器性能而定。
编译成功
导入后会有一些错误,主要是三个:
序号 | 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文件,这里我下载的是1.7.7版本的,下载过1,8,1的,可是生成的代码报错,就把版本降低了下。
- 进入源码根目录下的“hadoop-common-project\hadoop-common\src\test\avro”执行命令,java -jar <所在目录>\avro-tools-1.7.7.jar compile schema avroRecord.avsc ..\java 。其中avsc文件是avro的模式文件,上面命令是要通过模式文件生成相应的.java文件。
操作命令:进入 /hadoop-2.7.3-src/hadoop-common-project/hadoop-common/src/test/avro
java -jar 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程序)。
进入 hadoop-2.7.3-src/hadoop-common-project/hadoop-common/src/test/proto
protoc --java_out=../java *.proto ,会生成两个java文件,已经自动建好包关系
- 右键单击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标签页中的项删去,也可以】