安裝hadoop啓動以後總有警告:Unable to load native-hadoop library for your platform... using builtin-Java classes where applicablehtml
緣由:
Apache提供的hadoop本地庫是32位的,而在64位的服務器上就會有問題,所以須要本身編譯64位的版本。java
解決方法:c++
1、 去網站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下載對應的編譯版本,解壓到hadoop安裝目錄的lib/nativegit
2、本地編譯github
1. 下載hadoop 源碼 並解壓apache
官網下載 http://hadoop.apache.org/releases.html ,此處選擇2.8.0服務器
2. 安裝配置mavenapp
配置環境變量maven
mvn -v 驗證工具
3. 打包編譯
mvn package -Pdist,native -DskipTests -Dtar
構建出錯
序列化工具 protobuf 未安裝,安裝配置protobuf .
1).github 上下載protobuf : https://github.com/google/protobuf/releases
解壓
配置
./configure --prefix=/usr/local/protoc/
出現錯誤
安裝c++ 庫
yum install glibc-headers gcc-c++
再次執行配置./configure --prefix=/usr/local/protoc/
以下信息,配置成功。
執行 make && make install ,
又出錯
參考了一下google 的bug, https://github.com/google/protobuf/pull/2599/commits/141a1dac6ca572056c6a8b989e41f6ee213f8445
修改 metadata_lite.h 源碼
再次執行 make && make install , 沒有出錯信息。
配置環境變量,驗證 protoc --version
至此,protobuf 安裝配置成功。
繼續hadoop 編譯,臥槽 ,版本太高,重裝爲2.5.0 .
2.5.0 安裝配置過程一切正常。
繼續 hadoop 編譯
沒法執行 cmake ,安裝cmake
繼續 hadoop 編譯
安裝 zlib-devel , openssl-devel 包,再次編譯hadoop.
將lib/native 下的包放到hadoop 下
編譯完成後執行 hadoop checknative -a ,以下信息成功。
至此,hadoop native 編譯結束。
native 文件 :
hadoop-2.8.0-native.tar.gz