WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
裝了Hadoop 2.6.0後一直會出現這個Warning 本來以為可以忽略 但是Sqoop在啟動的時候會有問題 所以還是要想辦法解決
因為Apache提供的原生Hadoop bin檔是32bit 我的CentOS是64bit 所以lib會有問題
網路上試了幾種辦法都沒用 只好重新compile一版64bit的Hadoop 2.6.0
編譯Hadoop 2.6.0 error請參考註1.2.3
環境準備:
1. 安裝相關build環境
yum install gcc
yum install gcc-c++
yum install cmake
yum install openssl-devel
yum install ncurses-devel
yum install make
2. JAVA JDK 64bit
安裝JAVA JDK 多叢集安裝那篇文章有介紹
3. Maven 目前是3.3.1
wget http://ftp.mirror.tw/pub/apache/maven/maven-3/3.3.1/binaries/apache-maven-3.3.1-bin.tar.gz
tar -zxvf apache-maven-3.3.1-bin.tar.gz
安裝在/opt/maven
4. ANT 目前是 1.9.4
wget http://ftp.twaren.net/Unix/Web/apache//ant/binaries/apache-ant-1.9.4-bin.tar.gz
tar -zxvf apache-ant-1.9.4-bin.tar.gz
安裝在/opt/ant
5. Protobuf 目前是2.6.0 但建議使用舊版2.5.0 原因參考註二
wget https://protobuf.googlecode.com/svn/rc/protobuf-2.6.0.tar.gz
tar -zxvf protobuf-2.6.0.tar.gz
安裝在/opt/protobuf
編譯
cd /opt/protobuf
./configure
make
make install
驗證
protoc --version
6. vi /etc/profile
export MAVEN_HOME=/opt/maven
export PATH=$PATH:$MAVEN_HOME/bin
export ANT_HOME=/opt/ant
export PATH=$PATH:$ANT_HOME/bin
source /etc/profile
7.在command line下輸入 原因參考註3
export MAVEN_OPTS="-Xms256m -Xmx512m
8.
下載Hadoop 2.6.0 source code
wget ftp://ftp.stu.edu.tw/Unix/Web/apache/hadoop/common/hadoop-2.6.0/hadoop-2.6.0-src.tar.gz
tar -zxvf hadoop-2.6.0-src.tar.gz
編譯
cd /opt/hadoop-2.6.0-src
mvn clean package -Pdist -Dtar -Dmaven.javadoc.skip=true -DskipTests -fail-at-end -Pnative
9.編譯完成後
cd /hadoop-2.6.0-src/hadoop-dist/target
可以看到編譯好的hadoop-2.6.0
10.再來把編好的64位元的lib複製回我們的hadoop
\rm -r /opt/hadoop/lib/native
cp -r /opt/hadoop-2.6.0-src/hadoop-dist/target/hadoop-2.6.0/lib/native /opt/hadoop/lib/
11.vi /opt/hadoop/etc/hadoop/hadoop-env.sh
找到HADOOP_OPTS那行註解掉並新增一行
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"
大功告成
有人想要編譯好的64位元Hadoop或lib可以留言你的mail給我
註1:
我一開始在編譯Hadoop的時候使用"mvn package -DskipTests -Pdist,native"會出現
[INFO] Apache Hadoop Annotations ......................... FAILURE [4.086s]
然後build失敗 看起來是Hadoop的source code有語法錯誤 疑似有不正確的</ul>結尾
另外就是JAVA 8的檢查機制更嚴格 導致以前的coding error現在冒出來了
Hadoop社群有提到這個bug 預計會在2.7.0修復
https://issues.apache.org/jira/browse/HADOOP-8059
但是我們現在還沒有2.7.0所以社群也提供一個workaround去skip掉
https://issues.apache.org/jira/browse/HADOOP-11449
註2:
在編譯的過程又遇到個error死在protobuf的version
Hadoop 2.6.0原先定義的protobuf版本是2.5.0 但我下載的是2.6.0所以我們要更改
vi hadoop-2.6.0-src/hadoop-project/pom.xml
將這行改成2.6.0
註3.
後來又遇到Error
java.lang.OutOfMemoryError: Java heap space
Memory不夠 所以要先執行export MAVEN_OPTS="-Xms256m -Xmx512m"
留言列表