hadoop環境搭建過程中遇到Unable to load native-hadoop library for your platform
hadoop環境搭建完成後,在執行hadoop fs -ls 命令的時候,系統報了一個錯:
17/02/19 07:28:58 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
對於初識hadoop的我來說,完全摸不清頭腦。就開始網上到處找解決的辦法,也走了很多彎路。
一開始有的說是本地庫檔案的位數不對,然後我就到HADOOP_HOME/lib/native目錄下看了一眼(命令:file libhadoop.so.1.0.0),經過檢視,位數沒錯是64位的和linux系統一致的。
然後通過檢視hadoop debug日誌知道是系統libc庫版本太低:
先執行命令:export HADOOP_ROOT_LOGGER=DEBUG,console 設定日誌等級。然後再次執行:hadoop fs -ls ,看到日誌資訊:`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
通過命令檢視系統libc版本:
strings /lib64/libc.so.6 | grep GLIBC發現系統版本最高只有2.12,問題確定,開始升級libc版本。
然後看到了這篇文章http://blog.csdn.net/textboy/article/details/50558240,但是按照作者的步驟執行,並沒有成功解決問題,第一次還把系統搞崩潰了~~!還好還有一個系統拷貝,於是又開始折騰,最終成功了,把libc-2.12.so升級到libc-2.14.so。參照原文作者,具體步驟整理如下:
1.下載glibc-2.14
地址:http://mirror.bjtu.edu.cn/gnu/glibc/glibc-2.14.tar.xz
2.放到系統檔案下解壓,我是放在home下的,然後依次執行如下命令:
xz -d glibc-2.14.tar.xz
tar -xvf glibc-2.14.tar
cd glibc-2.14
mkdir build
cd build
../configure --prefix=/home/glibc-2.14
make (要等好幾分鐘,耐心點)
sudo make install(安裝完成會報兩個錯,不用管)
cd /home/glibc-2.14/lib
ln -s /hone/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.6(這一步會報錯,因為/lib64/libc.so.6已經存在)
我的做法是:
ln -s /hone/glibc-2.14/lib/libc-2.14.so /lib64/libc.so.61
mv /lib64/libc.so.61 /lib64/libc.so.6
之後在檢視libc版本,發現成功了!
[[email protected] hadoop]# strings /lib64/libc.so.6 | grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_PRIVATE
這個問題煩了我三四天,還搞崩了一個centos環境,系統我的分享能給遇到同樣問題的人帶來一點幫助,同時感謝http://blog.csdn.net/textboy/article/details/50558240連結的作者!