本篇文章是介紹的hadoop2.6.0的源碼編譯過程,經過實踐驗證是可以編譯成功的。 ...
運行hadoop環境時,常常會出現這種提示
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
意思是無法載入本地native庫。
這裡就需要我們自己本地進行編譯hadoop源碼,用生成的文件來替換原有的native庫。
下麵就是我整理的hadoop編譯流程
首先介紹一下我的環境
centos6.5
jdk-7u79-linux-x64.tar.gz
apache-maven-3.3.9-bin.tar.gz
protobuf-2.5.0.tar.gz
hadoop-2.6.0-cdh5.12.0-src.tar.gz
接下來就進行步驟介紹
第一步,安裝jdk
解壓
1 tar -zxvf jdk-7u79-linux-x64.tar.gz
環境變數
1 vi /etc/profile
#JAVA_HOME export JAVA_HOME=/home/hadoop/jdk1.7.0_79 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
測試是否安裝成功
source /etc/profile
java -version
第二步,安裝maven
>>提君博客原創 http://www.cnblogs.com/tijun/ <<
解壓
tar -zxvf apache-maven-3.3.9-bin.tar.gz
更改名稱
mv apache-maven-3.3.9 maven339
環境變數
vi /etc/profile
#MAVEN_HOME export MAVEN_HOME=/home/hadoop/maven339 export PATH=$MAVEN_HOME/bin:$PATH
測試是否安裝成功
source /etc/profile
mvn -version
第三步,根據多次踩坑,準備編譯時需要的安裝
1 yum install gcc 2 yum intall gcc-c++ 3 yum install make
或者是直接運行
yum install g++ autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev
第四步安裝protoc
解壓編譯,逐步執行
1 tar -zxvf protobuf-2.5.0.tar.gz 2 cd protobuf-2.5.0 3 ./configure --prefix=/home/hadoop/protobuf250 4 make 5 make install
環境變數
vi /etc/profile #PROTOC_HOME export PROTOC_HOME=/home/hadoop/protobuf250 export PATH=$PROTOC_HOME/bin:$PATH
測試
source /etc/profile
protoc --version
第四步,編譯hadoop
1 tar -zxvf hadoop-2.6.0-cdh5.12.0-src.tar.gz 2 mv hadoop-2.6.0-cdh5.12.0 hadoop260-src 3 cd hadoop-2.6.0-src 4 mvn clean package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar
經過一段時間的等待,出現 build success ,說明編譯成功。
>>提君博客原創 http://www.cnblogs.com/tijun/ <<
編譯源碼生成的部分都在hadoop260-src/hadoop-dist/target/目錄下
將編譯後的native文件夾下的東西替換到原來的native目錄
1 cp -r hadoop260-src/hadoop-dist/target/hadoop-2.6.0-cdh5.12.0/lib/native/ /home/hadoop/hadoop260/lib/
同樣,其他機器的文件同樣替換
1 scp -r hadoop260-src/hadoop-dist/target/hadoop-2.6.0-cdh5.12.0/lib/native/ [email protected]:/home/hadoop/hadoop260/lib/ 2 .. 3 .. 4 ..
註意:不同的linux環境,編譯過程中會有不同,有可能會出一些編譯過程的錯誤,我將再接下來的一篇文章中整理出來,供大家參考。
>>提君博客原創 http://www.cnblogs.com/tijun/ <<