.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.zipprotobuf-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中。

验证windows10下编译hadoop-2.7.3

进入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

windows10下编译hadoop-2.7.3

稍等片刻,输出

windows10下编译hadoop-2.7.3

然后进入hadoop-2.7.3-src中,运行mvn eclipse:eclipse -DskipTests,生成eclipse目录结构的源码,-DskipTests说明跳过测试,这个要等待很久windows10下编译hadoop-2.7.3,视网速和机器性能而定。

编译成功

windows10下编译hadoop-2.7.3

导入后会有一些错误,主要是三个:

 

序号 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标签页中的项删去,也可以】


相关文章: