1、增加调试信息寻找问题

2、两种方式解决unable to load native-hadoop library for you platform

附:libc/glibc/glib简介

参考:

1、http://my.oschina.net/swuly302/blog/515853【66号公路: Hadoop Unable to load­ ­n­­ati­v­e­-­h­a­­d­o­o­­p library for your platform】

2、http://blog.sina.com.cn/s/blog_4eca88390102vn86.html

增加调试信息寻找问题

在执行hdfs命令时,会有一个警告:

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

我们增加调试信息看问题出在了哪里。

增加调试信息有两种方式,

1、在执行命令前加一条如下命令:

export HADOOP_ROOT_LOGGER=DEBUG,console

比如:

[wangqi@node001 ~]$ export HADOOP_ROOT_LOGGER=DEBUG,console

[wangqi@node001 ~]$ hdfs dfs -ls /

2、在$HADOOP_CONF_DIR/log4j.properties(hadoop2.6.0的路径是/home/wangqi/softwar­e­­/­hadoop-2.6.0/etc/hadoop/log4j.properties)文件中添加如下代码:

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG

我选择的是第二种(因为后面的一种解决方案也需要动这个文件)。

然后执行一条命令,查看调试信息,如下:

[wangqi@node001 ~]$ hdfs dfs -ls /

16/01/05 15:05:49 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-hadoop library...

16/01/05 15:05:49 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: no hadoop in java.library.path

16/01/05 15:05:49 DEBUG util.NativeCodeLoader: java.library.path=/home/wangqi/softwar­e/hadoop-2.6.0/lib

16/01/05 15:05:49 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

Found 1 items

drwxr-xr-x - wangqi supergroup 0 2016-01-05 10:07 /user

问题出来了。对于这个问题,网上有的解决方案是加两个软链接,即:

ln -s libhadoop.so.1.0.0 libhadoop.so

ln -s libhdfs.so.0.0.0 libhdfs.so

但我加上了这两个软链接,问题依旧。

两种方式解决unable to load native-hadoop library for you platform

我们查看一下libhadoop.so.1.0.0的glibc版本,如下:

[wangqi@node001 native]$ ldd libhadoop.so

./libhadoop.so: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so)

linux-vdso.so.1 => (0x00007fffb53ff000)

libdl.so.2 => /lib64/libdl.so.2 (0x00007fbb73129000)

libc.so.6 => /lib64/libc.so.6 (0x00007fbb72d94000)

/lib64/ld-linux-x86-64.so.2 (0x000000399b800000)

问题其实已经出现了,libhadoop.so需要的glibc版本是glibc_2.14,没有找到。

我们再看一下当前系统的glibc版本,如下:

[wangqi@node001 native]$ 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.

Written by Roland McGrath and Ulrich Drepper.

可以看到,当前系统的glibc版本是2.12。

那么怎么解决这个警告呢?这里提供两种方式。

1、配置$HADOOP_CONF_DIR/log4j.properties/log4j.properties文件来忽略掉这个警告,即将前面配置的log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG该成:

log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR

2、升级系统的glib版本。

下载glibc-2.14.tar.bz2,地址为:http://ftp.ntu.edu.tw/gnu/glibc/

下载glibc-linuxthreads-2.5.tar.bz2,地址为:http://ftp.ntu.edu.tw/gnu/glibc/

安装步骤如下:

1) 把下载的bz2包放到一个文件夹下

[wangqi@node001 download]$ ls

glibc-2.14.tar.bz2 glibc-linuxthreads-2.5.tar.bz2

2) 解压glibc-2.14.tar.bz2到当前目录

[wangqi@node001 download]$ tar -xjvf glibc-2.14.tar.bz2

[wangqi@node001 download]$ ls

glibc-2.14.tar.bz2 glibc-2.14 glibc-linuxthreads-2.5.tar.bz2

3) 解压glibc-linuxthreads-2.5.tar.bz2到glibc-2.14

[wangqi@node001 download]$ cd glibc-2.14

[wangqi@node001 glibc-2.14]$ tar -xjvf ../glibc-linuxthreads-2.5.tar.bz2

此时,glibc-2.14目录下会多出两个文件夹,即linuxthreads和linuxthreads_db

4) 回到上一级目录,执行如下命令:

//回到上一级目录

[wangqi@node001 glibc-2.14]$ cd ..

//加上优化开关,否则会出现错误'#error "glibc cannot be compiled without optimization"'

[wangqi@node001 download]$ export CFLAGS="-g -O2"

5) 执行如下命令:

[wangqi@node001 download]$ glibc-2.14/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin --disable-sanity-checks

6) 执行make

//编译,执行很久(5-10分钟),可能出错,出错再重新执行

[wangqi@node001 download]$ make

7) 执行make install

//安装,必须root用户执行,执行很久

[wangqi@node001 download]$ sudo make install

8) 使用命令ls -l /lib/libc.so.6查看是否升级成功

[wangqi@node001 download]$ ll /lib64/libc.so.6

lrwxrwxrwx 1 root root 11 Nov 12 09:24 /lib/libc.so.6 -> libc-2.14.so

9) 重启hadoop

[wangqi@node002 ~]$ stop-dfs.sh

[wangqi@node002 ~]$ stop-yarn.sh

10) 执行一条hdfs命令,发现本地库被成功加载

[wangqi@node001 ~]$ export HADOOP_ROOT_LOGGER=DEBUG,console

[wangqi@node001 ~]$ hdfs dfs -ls /

16/01/05 20:02:40 DEBUG util.Shell: setsid exited with exit code 0

16/01/05 20:02:41 DEBUG util.NativeCodeLoader: Trying to load the custom-built native-h­a­doo­p library...

16/01/05 20:02:41 DEBUG util.NativeCodeLoader: Loaded the native-hadoop library

16/01/05 20:02:42 DEBUG ipc.ProtobufRpcEngine: Call: getListing took 2ms

Found 2 items

drwxrwx--- - wangqi supergroup 0 2016-01-05 19:40 /tmp

drwxr-xr-x - wangqi supergroup 0 2016-01-05 19:41 /user

附:libc/glibc/glib

glibc和libc都是Linux下的C函数库。

libc是Linux下的ANSIC函数库;glibc是Linux下的GUNC函数库。

glib是用C写的一些utilities,即C的工具库,和libc/glibc没有关系。

glibc是linux下面c标准库的实现,即GNU C Library。glibc本身是GNU旗下的C标准库,后来逐渐成为了Linux的标准c库,而Linux下原来的标准c库Linux libc逐渐不再被维护。

glibc在/lib目录下的.so文件为libc.so.6。

查看当前系统的glibc版本的两种方法:

[root@node001 ~]# ll /lib64/libc.so.6 

lrwxrwxrwx. 1 root root 12 Oct 11 00:27 /lib64/libc.so.6 -> libc-2.12.so
[root@node001 ~]# 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.

Written by Roland McGrath and Ulrich Drepper.

这两种方法都可以看到当前系统的glibc的版本是2.12。

【转】Unable to load native-hadoop library for your platform(已解决)的更多相关文章

  1. Unable to load native-hadoop library for your platform(已解决)

    1.增加调试信息寻找问题 2.两种方式解决unable to load native-hadoop library for you platform 附:libc/glibc/glib简介 参考: 1 ...

  2. 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)

    近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...

  3. error:informix Unable to load translation shared library 解决方案

    错误:设置informix ODBC时“error:informix Unable to load translation shared library ” 原因 INFORMIXDIR环境变量在操作 ...

  4. unable to boot the simulator,无法启动模拟器已解决

    突然模拟器报错:unable to boot the simulator(无法启动模拟器) 试了好几种解决办法,删除所有的模拟器重启以后再添加,删除钥匙串登陆中的证书,重新安装Xcode都不行 最后通 ...

  5. macos解决Hadoop之Unable to load native-hadoop library

    很显然,native-hadoop library不支持macos,如果是Linux就不会有这个问题.在百度上搜了,要下载在macos上编译的native hadoop library,我在网上下载了 ...

  6. YARN加载本地库抛出Unable to load native-hadoop library解决办法

    YARN加载本地库抛出Unable to load native-hadoop library解决办法 用官方的Hadoop 2.1.0-beta安装后,每次hadoop命令进去都会抛出这样一个War ...

  7. Genymotion 常见问题Unable to configure the network adapter for the virtual device解决

    Genymotion 常见问题Unable to configure the network adapter for the virtual device解决 参考:http://www.pczhis ...

  8. Hadoop - Unable to load native-hadoop library for your platform

    简介 运行hadoop或者spark(调用hdfs等)时,总出现这样的错误“Unable to load native-hadoop library for your platform”,其实是无法加 ...

  9. [hadoop] hadoop “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”

    执行 bin/hdfs dfs -mkdir /user,创建目录时出现警告信息. WARN util.NativeCodeLoader: Unable to load native-hadoop l ...

随机推荐

  1. (数位DP)51NOD 1042 数字0-9的数量

    给出一段区间a-b,统计这个区间内0-9出现的次数. 比如 10-19,1出现11次(10,11,12,13,14,15,16,17,18,19,其中11包括2个1),其余数字各出现1次.   输入 ...

  2. redis主从集群搭建

    一.安装redis 首先登陆官网下载压缩包,我安装的是最新版本5.X,下载地址http://download.redis.io/releases/redis-5.0.2.tar.gz. 进入文件所在目 ...

  3. Jquery | 基础 | 慕课网 | 层级选择器

    选择器中的层级选择器处理关系类型: 子元素 后代元素 兄弟元素 相邻元素 <!DOCTYPE html> <html> <head> <meta http-e ...

  4. 题解报告:hdu 6440 Dream(费马小定理+构造)

    解题思路:给定素数p,定义p内封闭的加法和乘法运算(运算封闭的定义:若从某个非空数集中任选两个元素(同一元素可重复选出),选出的这两个元素通过某种(或几种)运算后的得数仍是该数集中的元素,那么,就说该 ...

  5. printf格式化输出参数

    1.类型 类型字符用以表示输出数据的类型,其格式符和意义如下表所示: 格式字符 意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进 ...

  6. AJPFX总结string类和简单问题

    String表示字符串,所谓字符串,就是一连串的字符;String是不可变类,一旦String对象被创建,包含在对象中的字符序列(内容)是不可变的,直到对象被销毁://一个String对象的内容不能变 ...

  7. AJPFX总结java 中类的创建和使用

    //面向对象中类的创建和 调用 ============================================================= 类的使用: 类的使用分为两个动作:创建对象与 ...

  8. Spring-aop(一)

    写一个计算类,计算前后需要打印日志. interface ArithmeticCalculator { public int add(int i, int j); public int sub(int ...

  9. hdu4003/蓝桥杯 金属采集

    思路: 树形dp + 分组背包dp. 参考https://www.cnblogs.com/kuangbin/archive/2012/08/29/2661928.html 实现: #include & ...

  10. Arduino中数据类型转换 float/double转换为char 亲测好使,dtostrf()函数

    如何轻松玩转Arduino单片机,当我在进行数据转换的时候,遇到了问题,尝试了C语言和C++中的好多函数,都没有达到将float型数据转换为char型的目的.苦苦查阅资料后,终于找到了一个大神级函数! ...