在ubuntu13.10上编译hadoop-2.4.0源文件
参考这篇文章http://www.superwu.cn/2013/12/26/913/
但是我忽略了第七步中对pom.xml的修改。运行如下命令行,
joe@Tank:~/Desktop/hadoop-2.4.0-src$
mvn package -Pdist,native -Dskiptests -Dtar
会出现如下的错误
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.765s
[INFO] Finished at: Sat Jul 19 15:40:29 CST 2014
[INFO] Final Memory: 52M/1473M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:3.0:descriptor (default-descriptor) on project hadoop-maven-plugins: Error extracting plugin descriptor: 'invalid entry size (expected 2798 but got 2774 bytes)' -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn <goals> -rf :hadoop-maven-plugins
花了整整一个下午,找不到原因。读hadoop-2.4.0-src里面的BUILDING.txt可知,hadoop-maven-plugins包应该是和eclipse插件有关的一个包。因为我的目的是编译hadoop,也一直永命令行,所以直接跳过这个包。在hadoop-2.4.0-src/pom.xml中,98行的 <module>hadoop-maven-plugins</module>直接删除,可以跳过对其的编译。
然后
joe@Tank:~/Desktop/hadoop-2.4.0-src$ mvn clean
joe@Tank:~/Desktop/hadoop-2.4.0-src$mvn package -Pdist,native -Dskiptests -Dtar
又碰到了如下问题
[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:2.4.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: protoc version is 'libprotoc 2.4.1', expected version is '2.5.0' -> [Help 1]
意思很明显,就是protoc的版本过低。首先是卸载原来旧版本的protoc,这里我使用了新立得软件管理器。之后就是编译新的
下载protobuf-2.5.0,执行以下命令编译protobuf。
cd protobuf-2.5.0
./configure --prefix=/usr/local/protoc/
make && make install
只要不出错就可以了。
执行完毕后,编译后的文件位于/usr/local/protoc/目录下,设置一下环境变量
joe@Tank:~/Desktop/hadoop-2.4.0-src$ mvn clean
joe@Tank:~/Desktop/hadoop-2.4.0-src$mvn package -Pdist,native -Dskiptests -Dtar
但是很快又出来一个错误 [ERROR]Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project hadoop-common: Compilation failure
[ERROR] error: error reading /home/joe/.m2/repository/com/google/guava/guava/11.0.2/guava-11.0.2.jar; invalid CEN header (bad signature)
[ERROR] -> [Help 1]
见招拆招吧,直接google,下载一个相同的jar文件放在提示的文件夹中,即可。
后面的运行也出现一些问题,不管了。。。
我的本来目标就是要/native下的包,运行到目前,已经得到了,
坑爹啊。。。。。。。。。第二天我想再重新编译一下,出现的错误和昨天的不同,我觉得很奇怪。后来我意识到这可能和我使用的VPN不稳定有关系。因为在编译前,会自动下载一些jar包到~/.m2下面,如果网络不稳定,会导致这些包出现问题。我换了一个稳定的网络进行编译,各种顺利通过。。。。。。。。。。。。。坑爹啊
本文记录了在Ubuntu 13.10上从源码编译Hadoop 2.4.0的过程,包括解决pom.xml配置问题、protoc版本不匹配及依赖包损坏等常见错误。

被折叠的 条评论
为什么被折叠?



