close

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

hh  

將這行改成2.6.0

 

 

註3.

後來又遇到Error 

 java.lang.OutOfMemoryError: Java heap space

Memory不夠 所以要先執行export MAVEN_OPTS="-Xms256m -Xmx512m"

 

arrow
arrow
    全站熱搜

    kurthung1224 發表在 痞客邦 留言(2) 人氣()