Unable to load native-hadoop library for your platform
問題:
在運行hadoop的時候,出現警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
原因:
Apache提供的hadoop本地庫是32位的,而在64位的服務器上就會有問題,因此需要自己編譯64位的版本。
解決:
一、需要準備的軟件:
1.JDK和GCC
2.安裝maven
下載 wget http://www.eng.lsu.edu/mirrors/apache/maven/maven-3/3.2.1/binaries/apache-maven-3.2.1-bin.tar.gz
解壓 tar -zxvf apache-maven-3.2.1-bin.tar.gz
配置環境變量,編輯/etc/profile或者~/.bashrc文件
export MAVEN_HOME=/home/username/apache-maven-3.2.1
export PATH=$PATH:$MAVEN_HOME/bin
最後要source /etc/profile
通過mvn --version來檢查是否安裝正常
3.安裝protobuf
下載wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz
解壓 tar -zxvf protobuf-2.5.0.tar.gz
進入protobuf-2.5.0目錄,執行下面的命令
./configure
make
make check
make install
可以通過protoc --version來查看是否安裝正常
4.安裝cmake
下載 wget http://www.cmake.org/files/v2.8/cmake-2.8.12.2.tar.gz
解壓 tar -zxvf cmake-2.8.12.2.tar.gz
進入cmake-2.8.12.2目錄,執行下面的命令
./bootstrap
make
make install
可以通過cmake --version來查看是否安裝正常
5.安裝autotool
yum install autoconf automake libtool
6.安裝openssl-devel
yum install openssl-devel
7.網上有說可能還需要findingbugs
如果需要可以自己去下載,解壓並配置環境變量即可。
http://sourceforge.jp/projects/sfnet_findbugs/downloads/findbugs/3.0.0/findbugs-3.0.0-dev-20131204-e3cbbd5.tar.gz/
二、編譯haodoop:
1.下載源碼包hadoop-2.2.0-src.tar.gz並解壓
wget http://apache.mirrors.pair.com/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz
tar -zxvf hadoop-2.2.0-src.tar.gz
注:參考的博客中說源碼有問題需要修改,但筆者並未修改也編譯成功了,有需要的可以參考
http://www.linuxidc.com/Linux/2014-01/95938.htm
2.進入hadoop-2.2.0-src目錄,執行
mvn clean package -Pdist,native -DskipTests -Dtar
接下來就是漫長的等待,當你看到一系列的SUCCESS之後,你就成功了。
3.編譯好的hadoop-2.2.0.tar.gz在hadoop-2.2.0-src木目錄下的hadoop-dist/target/的目錄中,接下來就可以安裝了。
4.如果在編譯過程中報錯,缺少的包或者軟件可以自己去網上找。
參考:http://www.linuxidc.com/Linux/2014-01/95938.htm