這些問題是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包