这些问题是2013年初整理的,不过到目前为止,即使最新的hadoop2.0系列,编译总体上变化不大,因此还能适用。
执行命令: mvn package -Pdist,native -DskipTests -Dtar
1. [ERROR] Failed to execute goal org.codehaus.mojo:make-maven-plugin:1.0-beta-1:autoreconf (compile) on project hadoop-common: autoreconf command returned an exit value != 0. Aborting build; see debug output for more information. -> [Help 1]
原因: 未安装autotool
解决方法: sudo apt-get install autocong
sudo apt-get install automake
sudo apt-get install libtool
2. [ERROR] Failed to execute goal org.codehaus.mojo:make-maven-plugin:1.0-beta-1:configure (compile) on project hadoop-common: ./configure returned an exit value != 0. Aborting build; see command output above for more information. -> [Help 1]
原因: configure: error: Native java headers not found. Is $JAVA_HOME set correctly?
解决方法: ubuntu已安装的为open jdk, 需要sun的jdk, 从虚拟机复制下来, 然后指定JAVA_HOME
jdk的安装: 下载 http://www.oracle.com/technetwork/java/javase/downloads/index.html
chmod +x jdk-6u43-linux-i586.bin
./jdk-6u43-linux-i586.bin
3. [INFO] configure: error: Zlib headers were not found... native-hadoop library needs zlib to build. Please install the requisite zlib development package.
原因: 未安装zlibc
解决方法: 安装 sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
4. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (make) on project hadoop-pipes: An Ant BuildException has occured: Execute failed: java.io.IOException: Cannot run program "cmake" (in directory "/home/yuling.sh/trunk/hadoop-tools/hadoop-pipes/target/native"): java.io.IOException: error=2, No such file or directory -> [Help 1]
解决方法: sudo apt-get install cmake
5. [ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (generate-sources) on project hadoop-yarn-api: Command execution failed. Cannot run program "protoc" (in directory "/home/ads/build25_5u4_x64/workspace/t_dp_hadoop2/t_dp_hadoop2/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api"): java.io.IOException: error=2, No such file or directory -> [Help 1]
机器上未安装protobuf导致
6. [exec] -- Configuring incomplete, errors occurred!
[exec] CMake Error at /usr/share/cmake/Modules/FindOpenSSL.cmake:66 (MESSAGE):
[exec] Could NOT find OpenSSL
[exec] Call Stack (most recent call first):
[exec] CMakeLists.txt:20 (find_package)
本机出错, 虚拟机上编译成功
The OpenSSL library is usually already installed, but you have to install the header files. Depending on your Linux distribution, you'll need these packages:
Red Hat, Fedora, CentOS - openssl-devel http://rpm.corp.taobao.com/find.php?q=openssl-devel+++++&t=yum&d=0
Debian, Ubuntu - libssl-dev sudo apt-get install libssl-dev
Arch - openssl
7. native的编译问题, 应该在运行的环境下编译, 然后打jar包.
1.0环境下是使用已有的native包