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​

...

DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it. // :: WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
report: Failed on local exception: java.io.IOException: Connection reset by peer; Host Details : local host is: "VM_160_34_centos/127.0.0.1"; destination host is: "Master":;
 
wrong ELFCLASS32,难道是加载的so文件系统版本不对
执行命令
file libhadoop.so.1.0.
hadoop@VM_160_34_centos:/usr/local/hadoop-2.4./lib/native> file libhadoop.so.1.0.
libhadoop.so.1.0.: ELF -bit LSB shared object, Intel , version (SYSV), dynamically linked, not stripped

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

  原来直接从apache镜像中下载的编译好的Hadoop版本native library都是32版本的,如果要支持64位版本,必须自己重新编译,这就有点坑爹了,要知道几乎所有的生产环境都是64位的OS
YARN官方对于native library的一段话验证了这一点
“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​”

解决方法:重新编译hadoop

解决方法,就是重新编译hadoop软件:

安装开发环境

1.必要的包
yum install svn

yum install autoconfautomake libtool cmake

yum install ncurses-devel

yum install openssl-devel

yum install gcc*
2.安装maven

下载,并解压

wget  -c http://mirrors.hust.edu.cn/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gz
tar -zxvf apache-maven-3.2.-bin.tar.gz -C /usr/local/

将/usr/local/apache-maven-3.2.3/bin加到环境变量中

root@VM_160_34_centos:~/tools> vi /etc/profile.d/maven-development.sh
export M2_HOME=/usr/local/apache-maven-3.2.
export PATH=$PATH:$M2_HOME/bin
root@VM_160_34_centos:~/tools> source /etc/profile

测试 maven

root@VM_160_34_centos:/usr/local/apache-maven-3.2.> mvn -version
Apache Maven 3.2. (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; --12T04::+:)
Maven home: /usr/local/apache-maven-3.2.
Java version: 1.7.0_55, vendor: Oracle Corporation
Java home: /usr/local/java/jdk1..0_55/jre
Default locale: en_US, platform encoding: ANSI_X3.-
OS name: "linux", version: "2.6.32-220.el6.x86_64", arch: "amd64", family: "unix"
3.安装protobuf

没装 protobuf,后面编译做不完,结果如下:

[INFO] —hadoop-maven-plugins:2.4.:protoc (compile-protoc) @ hadoop-common —

[WARNING] [protoc, --version] failed:java.io.IOException: Cannot run program “protoc”: error=, No suchfile or directory

[ERROR] stdout: []

……………………

[INFO] Apache Hadoop Main………………………….. SUCCESS [.672s]

[INFO] Apache Hadoop Project POM……………………. SUCCESS [.682s]

[INFO] Apache Hadoop Annotations……………………. SUCCESS [.921s]

[INFO] Apache Hadoop Assemblies…………………….. SUCCESS [.676s]

[INFO] Apache Hadoop Project Dist POM……………….. SUCCESS [.590s]

[INFO] Apache Hadoop Maven Plugins………………….. SUCCESS [.172s]

[INFO] Apache Hadoop Auth………………………….. SUCCESS [.123s]

[INFO] Apache Hadoop Auth Examples………………….. SUCCESS [.170s]

[INFO] Apache HadoopCommon ………………………… FAILURE [.224s]

[INFO] Apache Hadoop NFS…………………………… SKIPPED

[INFO] Apache Hadoop Common Project…………………. SKIPPED

[INFO] Apache Hadoop HDFS………………………….. SKIPPED

[INFO] Apache Hadoop HttpFS………………………… SKIPPED

[INFO] Apache Hadoop HDFS BookKeeperJournal …………. SKIPPED

[INFO] Apache Hadoop HDFS-NFS………………………. SKIPPED

[INFO] Apache Hadoop HDFS Project…………………… SKIPPED
安装protobuf过程

下载:

root@VM_160_34_centos:~/tools> wget -c https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz

解压

root@VM_160_34_centos:~/tools> tar -xvzf protobuf-2.5..tar.gz 
root@VM_160_34_centos:~/tools/protobuf-2.5.> cd protobuf-2.5.

依次执行下面的命令即可

./configure

make

make check

make install

测试安装:

root@VM_160_34_centos:~/tools/releaseprotoc -version
protoc: error while loading shared libraries: libprotobuf.so.: cannot open shared object file: No such file or directory
这里报错 解决办法

root@VM_160_34_centos:~/tools/release-2.4.> cat >> /etc/profile.d/protoc-development.sh << end
> export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
> end
root@VM_160_34_centos:~/tools/release-2.4.> source /etc/profile

测试结果

root@VM_160_34_centos:~/tools/release-2.4.> protoc --version
libprotoc 2.5.

libprotoc 2.5.0

重新checkout source code
svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.4.0/
加上编译native的选项,编译时会根据当前的操作系统架构来生产相应的native库
mvn package -Pdist,native -DskipTests -Dtar

验证一下:

root@VM_160_34_centos:~/tools/release-2.4.>cd hadoop-dist/target/hadoop-2.4./lib/native
root@VM_160_34_centos:~/tools/release-2.4./hadoop-dist/target/hadoop-2.4./lib/native> file libhadoop.so.1.0.
libhadoop.so.1.0.: ELF -bit LSB shared object, x86-, version (SYSV), dynamically linked, not stripped

目录下hadoop-2.4.0.tar.gz也有了,以后应该就可以直接用了。

  

感谢 : http://www.kankanews.com/ICkengine/archives/81648.shtml

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

  1. [转]genymotion Unable to load VirtualBox engine 某种解决办法

    genymotion Unable to load VirtualBox engine 某种解决办法 耳闻genymotion这款模拟器很强力.于是下下来试试看.我的机器上是有virtualbox的了 ...

  2. 执行Socket socket = new Socket(ip, port);时抛出个异常:android.os.NetworkOnMainThreadException解决办法

    首先,确认你的android版本是4.0之后再用此方法解决,因为在4.0之后在主线程里面执行Http请求才会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧.Android在4.0之前的版本 ...

  3. 解决Hadoop无法加载本地库的问题: Unable to load native-hadoop library for your platform

    今天跑Hadoop程序时一直提示我无法加载本地库,然后就直接退出运行了,如下图所示. 原因是由于Apache提供的Hadoop本地库是32位的,而在64位的服务器上就会有问题,因此需要自己编译64位的 ...

  4. JavaScript:用JS实现加载页面前弹出模态框

    用JS实现加载页面前弹出模态框 主要的JavaScript 代码是: <script> //加载模态框 $('#myModal').modal(); $(document).ready(f ...

  5. 文字添加响应事件,js动态加载CSS, js弹出DIV

    文字添加响应事件,js动态加载CSS, js弹出DIV <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  6. ajax加载本地html文件出现 XMLHttpRequest cannot load的问题

    谷歌浏览器ajax加载本地html文件出现 XMLHttpRequest cannot load的问题(火狐中不会出现这问题) Cross origin requests are only suppo ...

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

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

  8. SSL certificate problem unable to get local issuer certificate解决办法

    SSL certificate problem unable to get local issuer certificate 解决办法: 下载:ca-bundle.crt 将它放在自己的wamp或者x ...

  9. 微信内置浏览器浏览H5页面弹出的键盘遮盖文本框的解决办法(转)

    最近在做微信公众号的内嵌页面,发现点击输入框时键盘盖住文本框,找到一段代码解决了这个问题. iOS和android手机都已亲测,需要的可以直接拷贝到代码中使用. js代码如下: $(function ...

随机推荐

  1. Hibernate - 使用注解完成映射

    除了使用XML配置来映射对象和数据库表,还可以使用注解来完成持久化.使用注解需要导入Hibernate Annotations扩展包 @Entity -加在类的前面,将类声明为持久化类. -javax ...

  2. 命令行界面下的用户和组管理之useradd和passwd命令的使用

    命令行界面下的用户和组的管理之useradd和passwd命令的使用 useradd [-c comment] [-d dir] [-e expire] [-g group] [-G group1,g ...

  3. Oracle报错:ORA-01747: user.table.column, table.column 或列说明无效

    1.检查sql书写正确性 2.如果sql书写正确,则是由于数据库列名起的不好引起的,名字用到了数据库的关键字. 如果列很多,又不好确定是哪个列名使用了关键字,以下建议可供参考: 我用以下方法定位 se ...

  4. sql server 表变量、表类型、临时表

    sql server 中临时表分为会话临时表和永久临时表.会话临时表在会话结束后自动被删除,永久临时表与基本表的使用上基本无差异,需要显示调用drop将其删除. 创建临时表 创建会话临时表 creat ...

  5. foo,bar,baz

    https://en.wikipedia.org/wiki/Foobar 原文: The terms foobar, foo, bar, baz and qux are sometimes used ...

  6. 实现html伪静态竟然那么简单

    1.单参数 功能: 把:www.44721.cn/movie.asp?id=123 伪静态为:www.44721.cn/movie.asp?123.html 代码如下: ASP/Visual Basi ...

  7. react native for Android (make you first android app)

    第一步:如果你的电脑安装了node,恭喜你,第一步完成:如果没有,那请先安装node. 第二步:安装react-native-cli,在windows下需要从github签下来的react-nativ ...

  8. redirect_uri参数错误解决方法

    坑,微信改来改去的,找死人了,以前在“开发者中心”中,现在改在”接口权限“中了.

  9. 启发式搜索 A*算法的OC 实现

    前两天重新学习了下A*算法,上次学习A*算法已经是5年前了,看到网上铺天盖地的A*算法都是C.C++等等其他语言的,就是没有OC 的,所以抽空写了一份.今天太晚了就不说明A*算法的细节了,大家如果想学 ...

  10. 2) LINQ编程技术内幕--yield return

    yield return 使用.NET的状态机生成器 yield return关键词组自动实现IDisposable,使用这个可枚举的地方, 还存在一个隐含的try finally块. 示例代码: c ...