Hadoop問題解決:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable


 

 

 在配置好hadoop的環境之后,命令啟動./start-all.sh發現經常出現這樣的一個警告:

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

關於解決這個問題總結了一下方法:

按警告的描述是說  hadoop的native庫導入失敗,定位這個問題就是要看下native目錄下的靜態庫 libhadoop.so.1.0.0文件,一般出現這個問題都是依賴包版本的過低導致不兼容問題。

1、因為網上有的說是linux系統是32位,libhadoop.so.1.0.0是64位,就會導致這個問題,那我們先來看一下系

[root@master sbin]# uname -r
2.6.32-279.el6.x86_64

在看一下libhadoop.so.1.0.0的版本

[root@master native]# file libhadoop.so.1.0.0
libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped

可以看到版本都是64位,不存在問題。

 

2、排除了第一個問題,那我們只能來查看一下依賴庫的版本了

[root@master native]# ldd libhadoop.so.1.0.0
./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
        linux-vdso.so.1 =>  (0x00007fff31efd000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f654dd25000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f654db07000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f654d775000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f654e155000)

GLIBC_2.14的版本未找到,那我們接下來確認下glibc的系統庫版本

[root@master sbin]# ldd --version
ldd (GNU libc) 2.12
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
由 Roland McGrath 和 Ulrich Drepper 編寫。

可以看到當前的版本是2.12,可以確認下GLIBC所支持的版本

由 Roland McGrath 和 Ulrich Drepper 編寫。
[root@master sbin]# 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_PRIVATE

最大支持到2.12版本,而我們hadoop中的版本是2.14,可以確定基本是這個問題造成的;那接下來的解決辦法就是更新系統的CLIBC版本。

這里有GLIBC的官方版本  http://ftp.gnu.org/gnu/libc/

我們選擇一個比2.12高的版本

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

接下來安裝一下glibc-2.17.tar.gz

[root@master /]# cd /opt/
[root@master opt]# wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.gz
[root@master opt]# tar -zxvf glibc-2.17.tar.gz
[root@master opt]# cd glibc-2.17
[root@master glibc-2.17]#
[root@master glibc-2.17]# mkdir build
[root@master glibc-2.17]# cd build/
[root@master build]#
[root@master build]#../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
[root@master build]#make && make install

安裝完成后再查一下CLIBC版本:

[root@master build]# 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_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE

已經支持到2.17了,然后再啟動一下hadoop,發現那個警告消失了,證明我們的問題解決了。

[root@master sbin]# ./start-all.sh 
Starting namenodes on [master]
Starting datanodes
Starting secondary namenodes [master]
Starting resourcemanager
Starting nodemanagers

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM