Hadoop 源码编译导出

https://svn.apache.org/repos/asf/hadoop/common/branches/branch-trunk-win/BUILDING.txt

http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os

 $ mvn package -Pdist -DskipTests -Dtar 

错误:

1.错误: 类重复: org.apache.hadoop.ipc.protobuf.TestProtos....

原因是在导入eclipse是手动生成的文件和hadoop的maven自动配置出现冲突。

将手动添加的部分删除。

可在源码同级建立临时文件夹执行如下bat

mv ../hadoop-2.4.0-src/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/protobuf/TestProtos.java ./

mv ../hadoop-2.4.0-src/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/AvroRecord.java ./

mv ../hadoop-2.4.0-src/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/protobuf/TestRpcServiceProtos.java ./
move out
mv TestProtos.java ../hadoop-2.4.0-src/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/protobuf/

mv AvroRecord.java ../hadoop-2.4.0-src/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/io/serializer/avro/

mv TestRpcServiceProtos.java ../hadoop-2.4.0-src/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/ipc/protobuf/
move back
2.内部专用 API, 可能会在未来发行版中删除

可能是java版本问题。java8不行,换成了java6

3.cp: cannot stat .... File or path name too long

源码最好直接放到分区下的一级目录。目录名也可以重命名的短一点

4.common中的native编译可能出错

这个可以参考http://www.tuicool.com/articles/M3MRvea。

打开“开始”--“所有程序”--“Microsoft Windows SDK v7.1”--“Windows SDK 7.1 Command Prompt”,进入VC++的命令行工具(一定要从此处进入方可顺利编译Hadoop源代码,记着是以管理员身份运行)

但是还是失败,这些貌似是与操作系统相关的c代码,目前不需要变更,暂时不用编译。

可以修改:hadoop-common-projecthadoop-commonpom.xml

在project>profiles>profile>id=native-win的profile中将<properties>和<build>两个结点删除。

原文地址:https://www.cnblogs.com/errorx/p/3784558.html