Unable to load native-hadoop library for your platform(已解决)
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 native-hadoop 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/software/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/software/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-hadoop 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(已解决)的更多相关文章
- 【转】Unable to load native-hadoop library for your platform(已解决)
1.增加调试信息寻找问题 2.两种方式解决unable to load native-hadoop library for you platform 附:libc/glibc/glib简介 参考: 1 ...
- 关于cocos2dx 3.0升级崩溃报错(unable to load native library) 和(Fatal signal 11 (SIGSEGV) at 0x00000000)
近期一直在Windows平台开发cocos-2dx游戏,期间做了一次引擎升级,升级到了3.0正式版本号.Windows平台上表现非常正常,没有出现什么问题. 上周五准备公布一个安卓包,编译非常轻松的就 ...
- error:informix Unable to load translation shared library 解决方案
错误:设置informix ODBC时“error:informix Unable to load translation shared library ” 原因 INFORMIXDIR环境变量在操作 ...
- unable to boot the simulator,无法启动模拟器已解决
突然模拟器报错:unable to boot the simulator(无法启动模拟器) 试了好几种解决办法,删除所有的模拟器重启以后再添加,删除钥匙串登陆中的证书,重新安装Xcode都不行 最后通 ...
- macos解决Hadoop之Unable to load native-hadoop library
很显然,native-hadoop library不支持macos,如果是Linux就不会有这个问题.在百度上搜了,要下载在macos上编译的native hadoop library,我在网上下载了 ...
- YARN加载本地库抛出Unable to load native-hadoop library解决办法
YARN加载本地库抛出Unable to load native-hadoop library解决办法 用官方的Hadoop 2.1.0-beta安装后,每次hadoop命令进去都会抛出这样一个War ...
- 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 ...
- Hadoop - Unable to load native-hadoop library for your platform
简介 运行hadoop或者spark(调用hdfs等)时,总出现这样的错误“Unable to load native-hadoop library for your platform”,其实是无法加 ...
- [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 ...
随机推荐
- MySQL中数据中设计中的范式与反范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小.但是有些时候一昧的追求范式减少冗余,反而会降低数据读写 ...
- Integrate-And-Fire Models(转)
Integrate-And-Fire Models 基础知识 轴突:动作电位(电位差形成电流)=神经递质发放=脉冲产生树突或细胞体:神经递质的接受=产生内外膜电位差(电流产生)=接收脉冲脉冲编码:多采 ...
- 高斯过程(GP)
随机过程基本概念: 随机过程是一个比随机变量更广泛的概念.在概率论中,通常研究一个或多个这样有限个数的随机变量,即使在大数定律和中心极限定理中考虑了无穷多个随机变量,但也要假设随机变量之间互相独立.而 ...
- IIS 6.0上部署.NET 4.0网站
最近需要把VS2010开发的网站部署到Windows Server 2003的服务器上去, Windows Server 2003操作系统自带的为IIS 6.0,IIS 6.0一般只支持.NET 2. ...
- Loadrunder脚本篇——web_submit_data实现提交post请求
概述 web_link()和web_url()函数都是页面访问型函数,实现HTTP请求中的GET方法,如果需要实现POST方法,可使用web_submit_form或web_submit_data() ...
- c# 接口(interface)与接口应用
using System; using System.Collections.Generic; using System.Linq; using System.Text; //接口(interface ...
- Zuul
一.zuul是什么 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架. ...
- $ 用python处理Excel文档(1)——用xlrd模块读取xls/xlsx文档
本文主要介绍xlrd模块读取Excel文档的基本用法,并以一个GDP数据的文档为例来进行操作. 1. 准备工作: 1. 安装xlrd:pip install xlrd 2. 准备数据集:从网上找到的1 ...
- 【Tech】SQL Server2008使用笔记
1.64位win7系统报错“未在本地计算机上注册 Microsoft.ACE.OLEDB.12.0 ”. 解决方法:从这个网址下载和安装一个驱动http://www.microsoft.com/zh- ...
- 【转载】wget 命令用法详解
wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能和特点:(1)支持断点下传功能:这一点,也是网络蚂蚁和Fl ...