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. Java序列化接口的作用总结

    一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 把堆内存中的对象的生命周期延长,存入硬盘,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从硬盘中读取就可以了. ...

  2. Android开发了解——Dalvik

    Dalvik是Google公司自己设计用于Android平台的Java虚拟机.Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一.它可以支持已转换为 .dex ...

  3. .NET学习笔记(3) — VisualStudio使用总结

    目录 一:VS是什么? 二:VS可以创建什么类型的工程? 三:VS的常用功能? 四:VS都有哪些使用技巧? 五:注意事项 六:资源汇总   一:VS是什么? Microsoft Visual Stud ...

  4. CSS 基本知识

    1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets),是一种用来表现 HTML 文档样式的语言,样式定义如何显示 HTML 元素,是能够真正做到网页表现与结构分离的 ...

  5. Spring MVC中如何指定某个类或方法自适配地响应某个HTTP请求?

    方法已经找到,即调用AbstractHandlerMethodAdapter.handle() public final ModelAndView handle(HttpServletRequest  ...

  6. Java 简单算法--打印乘法口诀(只使用一次循环)

    package cn.magicdu.algorithm; /** * 九九乘法口诀表 * * @author xiaoduc * */ public class NineNineMulitTable ...

  7. poj2594 (最小路径覆盖 + floyd)

    题目链接  http://poj.org/problem?id=2594) 题目大意: 一个有向图中, 有若干条连接的路线, 问最少放多少个机器人,可以将整个图上的点都走过. 最小路径覆盖问题. 分析 ...

  8. SQL SERVER中的逻辑读,预读和物理读

    sqlserver:数据存储方式:最小单位是页,每一页8k,sqlserver 对页的读取是具有原子性,也就是说,要么读取完整一页,要么完全不读取,不会有中间状态,而页之间的数据组织结构是B树 但是每 ...

  9. 一步一步创建一个简单的Package(1)

    创建Package之前首先我们理解需求: 数据源是一组历史货币数据包含在平面文件SampleCurrencyData.txt中,源数据中有四列. 下面是SampleCurrencyData.txt文件 ...

  10. UDP 广播 Java

    1.服务端 public class UdpBroadcastServer { /** * @param args */ public static void main(String[] args) ...