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

用官方的构建好的Hadoop 2.4.0(133MB)安装后,每次输入hadoop命令进去都会得到这样一个Warning,如图:

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

网上搜罗了一些资料,下面是解决办法:

设置logger级别,看下具体原因:

?


1

export HADOOP_ROOT_LOGGER=DEBUG,console

再次随便运行一个hadoop相关的命令,将看到下面的错误:

wrong ELFCLASS32?,难道是加载的so文件系统版本不对?

于是执行命令

?


1

2

cd $HADOOP_HOME/lib/native

file libhadoop.so.1.0.0

结果是这样的:

果然是80386,是32位的系统版本,而我的hadoop环境是64位OS

原来直接从apache镜像中下载的编译好的Hadoop版本native library都是32版本的,如果要支持64位版本,必须自己重新编译,这就有点坑爹了,要知道几乎所有的生产环境都是64位的OS

Hadoop官方对于native library的一段话验证了这一点(详见:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html#Download):

“The pre-built 32-bit i386-Linux native hadoop library is available as part of the hadoop distribution and is located in the lib/native directory” 

于是重新checkout source code:

?


1

svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.4.0/

加上编译native的选项,编译时会根据当前的操作系统架构来生产相应的native库(详见:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html#Build):

?


1

mvn package -Pdist,native -DskipTests -Dtar

待编译完成后,到release-2.4.0/hadoop-dist/target/hadoop-2.4.0/lib/native目录下找到这个libhadoop.so.1.0.0文件,再次查看其file type:

?


1

file libhadoop.so.1.0.0

结果是这样的:

用这个文件替换掉$HADOOP_HOME/lib/native/libhadoop.so.1.0.0,之后再次随便运行一个Hadoop相关命令:

?


1

2

unset HADOOP_ROOT_LOGGER

hadoop fs -ls /

再看输出:

WARN消失,问题解决。

时间: 2024-11-03 03:37:05

YARN加载本地库Unable to load native-hadoop library解决办法的相关文章

YARN加载本地库抛出Unable to load native-hadoop library如何解决

用官方的Hadoop 2.1.0-beta安装后,每次hadoop命令进去都会抛出这样一个Warning WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 设置logger级别,看下具体原因 export HADOOP_ROOT_LOGGER=DEBUG,console 13/08/29

[C#]用HttpWebRequest加载证书建立SSL通道时发生异常的解决办法

编写者:郑昀@UltraPower 关键字:HttpWebRequest, SSL,X509Certificate dotNet  Framwork 1.1 编写时间:2005-3-29 WSE 2.0 SP3   目的: 对于用HttpWebRequest加载证书请求远端https服务器时,发生的 "基础连接已经关闭: 无法与远程服务器建立信任关系."/ "The underlying connection was closed. Could not establish a

解析Java和Eclipse中加载本地库(.dll文件)的详细说明_java

最近在做的工作要用到本地方法,需要在Java中加载不少动态链接库(以下为方便延用Windows平台下的简写dll,但并不局限于Windows).刚刚把程序跑通,赶紧把一些心得写出来,mark.也希望对大家的类似工作有所帮助首先,应当明确,dll有两类:(1)Java所依赖的dll和,(2)dll所依赖的dll.正是由于第(2)种dll的存在,才导致了java中加载dll的复杂性大大增加,许多说法都是这样的,但我实验的结果却表明似乎没有那么复杂,后面会予以详细阐述.其次,Java中加载dll的方式

startJVM错误Unable to load native library: libjvm.so解决方法_java

startJVM是加载jvm用的方法.在JPype,apache mod等等很多地方都用到.但凡要用其他语言来加载jvm进程,就要用到这个. 可惜往往会出错.一般都是 复制代码 代码如下: Unable to load native library: libjvm.so: cannot open shared object file: No such file or directory 但是libjvm.so确实存在啊. 解决方法很简单: 在/etc/profile里面设置: 复制代码 代码如下

开机出现unable to load selinux policy如何解决

情景一: 在修改/etc/selinux/config SELINUX=disable后开机出现 unable to load selinux policy. machine is in enforcing mode. halting now. kernel panic-not syncing:attempted to kill init! 解决方法: 在Grub启动菜单上按e进入编辑模式,在启动项 "kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vo

禁用工行加载后打开IE9总是弹出提示的解决方法

为了不影响IE浏览器打开的速度,一般情况我们会把一些不经常用的IE加载项给禁用了,等到需要的时候在启动.但是如果你安装了工商银行网上银行加载项,那么你就悲剧了. 该加载项启动占用时间太长就算了,想着那就暂时先禁用他吧.然后打开"工具"-> "管理加载项",在里面找到 ICBC Anti-Phishing class 加载项将其禁用,以为至此就OK了. 无奈以后每次启动IE9的时候,他都会弹出"ICBC Anti-Phishing class"

Windows系统中出现无法加载这个硬件的设备驱动程序(代码39)的解决方法介绍

近日不知何故,光驱和虚拟光驱盘符都不见了,查看系统发现硬件前面有黄色感叹号,无法使用,在网上搜索,发现有很多人出现同样的问题,只是解决的方法都不对,找了两天,终于找到了解决的方法: 修复"光驱图标不见"记 电脑没用几天,突然发现光驱图标不见了,系统提示为:Windows 无法加载这个硬件的设备驱动程序.驱动程序可能已损坏或不见了. (代码 39) 1.       我卸载了光驱,结果是能识别,但提示安装出错,错误还是一样: 2.       我把金山模拟光驱卸载,结果还是一样: 3. 

动态加载iframe时get请求传递中文参数乱码解决方法_javascript技巧

当用户的页面需要动态加载iframe 时, 如果iframe的src中包传中文参数会出现编码错误:必须加编码,然后再解码. 编码:encodeURI(encodeURI("包含中文的串")) 解码:java.net.URLDecoder.decode("需要解码的串","utf-8"); 解决方案 使用 encodeURI('中文') 进行编码操作, js代码: 复制代码 代码如下: $(function() { $('#frame').attr

webview加载-如何提高webview缓存效率,或者怎么解决缓存问题??

问题描述 如何提高webview缓存效率,或者怎么解决缓存问题?? 如何提高webview缓存效率,或者怎么解决缓存问题??或者有什么技巧能够让缓存看上去不会那么长!!!不然白屏期太长了!!! 解决方案 有关webview缓存问题WebView使用缓存的问题Android WebView的缓存 解决方案二: 页面本身加载太慢了.可以先后台加载然后再显示