hadoop start namenode deamon and datanode deamon failed

執行命令hadoop/sbin/start-dfs.sh失敗,報錯信息以下:java

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

image.png
查找緣由:
一、查看更詳細的debug信息node

執行命令export HADOOP_ROOT_LOGGER=DEBUG,console,而後再執行命令hadoop/sbin/start-dfs.sh,發現version `GLIBC_2.14' not found:
Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /usr/local/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/hadoop/lib/native/libhadoop.so.1.0.0)

image.png

好了,如今發現問題了,是查找GLIBC_2.14這個東西找不到,那麼接下來就來了解一下這是個什麼東西,怎樣才能讓hadoop找到這個東西。

二、GLIBC是什麼linux

glibc是GNU發佈的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux操做系統所提供的系統服務外,它自己也提供了許多其它一些必要功能服務的實現…

三、/lib64/libc.so.6是什麼ubuntu

libc.so.6 是c運行時庫 glibc的軟連接,而系統幾乎全部程序都依賴c運行時庫。程序啓動和運行時,是根據libc.so.6 軟連接找到glibc庫。每一個glibc.so文件有它支持的libc版本,能夠經過 strings /lib64/libc.so.6 |grep GLIBC查看,必定要選擇這條命令列出的版本。若是程序編譯的時候連接的libc庫版本不在程序運行環境下的glibc庫支持的libc版本以內,也會報錯。因而,系統的全部命令 ls,cp,cd 等等都沒法使用了。

四、查看系統的GLIBC版本api

執行命令strings /lib64/libc.so.6 |grep GLIBC
發現支持的最大版本是GLIBC_2.12,而hadoop錯誤信息裏提到須要GLIBC_2.14

image.png

好了,如今咱們就想辦法來添加GLIBC_2.14或更高版本,如今要考慮升級到哪一個版本呢?
查資料發現:對於CentOS這樣的系統,爲了追求穩定性每每各類庫版本都很低,好比6.5(個人機器系統版本)自帶的仍是glibc2.12, 而ubuntu 14.04帶glibc2.19,若是升級基本C運行庫到一個太新的版本,可能會影響CentOS的運行。因此我選擇升級一個恰好夠用的版本GLIBC_2.14,能解決問題就好,不找麻煩,嘻嘻。
如今就來解決實際的問題:
搭配這裏找須要的版本http://ftp.gnu.org/gnu/glibc/

五、下載GLIBC_2.14包app

wget http://ftp.gnu.org/gnu/glibc/glibc-2.14.tar.gz

六、解壓GLIBC_2.14包oop

tar -zxf glibc-2.14.tar.gz

七、編譯ui

cd  glibc-2.14,創建臨時目錄 mkdir build
cd build 
執行../configure --prefix=/usr/local/glibc-2.14指定安裝目錄爲/usr/local/glibc-2.14
執行make && make install安裝
cp /usr/local/glibc-2.14/lib/libc-2.14.so /lib64/ ,也就是把
編譯好的so複製到/lib64下面

八、安裝spa

重建軟件,這一步最重要,操做不當,系統會直接沒法使用
cd /lib64
刪除舊的文件LD_PRELOAD=/lib64/libc-2.12.so rm libc.so.6
更新爲新的文件 LD_PRELOAD=/lib64/libc-2.14.so ln -s /lib64/libc-2.14.so libc.so.6
注:libc.so.6只是一個軟連,刪除後可能會致使ls等命令都沒法正常使用。這時不要慌張,能夠經過LD_PRELOAD環境變量來解決。

九、查看更新成功操作系統

strings /lib64/libc.so.6 |grep GLIBC

image.png 十、再次執行./sbin/start-dfs.sh沒有報錯信息了

相關文章
相關標籤/搜索