近期,打算hbase建表用snappy压缩时,碰到一些hadoop本地库的问题。

事实上这些问题是一直存在的,仅仅是不影响正常使用,就没有引起重视。

这次希望彻底解决下面问题:

问题一:运行start-dfs.sh时出现下面日志

xxxx: Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /usr/local/hadoop-2.4.0/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now.

xxxx: It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.

这是由于官网提供的版本号本地库是32位的,在64位主机环境下无法运行。须要下载hadoop源代码进行编译(怎样编译源代码能够上网搜索),编译成功后,找到native下的文件复制到${HADOOP_HOME}/lib/native文件夹下就可以。

问题二:运行start-dfs.sh时出现下面日志

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

在网上找到的全部文章中,都是说在hadoop-env.sh中增加下面两行配置:

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/"

可是在測试过程中,增加以上配置还是会提示告警信息,说明本地库未载入成功。

开启debug:

export HADOOP_ROOT_LOGGER=DEBUG,console

运行start-dfs.sh,发现下面日志:

DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: no hadoop in java.library.path

从日志中能够看出hadoop库不在java.library.path所配置的文件夹下,应该是java.library.path配置的路径有问题。在hadoop-env.sh中又一次配置:

export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native

export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native/"

运行start-dfs.sh,告警信息不再显示。经測试。事实上仅仅需export HADOOP_OPTS就可以解决这个问题。

验证本地库是否载入成功:hadoop checknative

15/08/18 10:31:17 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native

15/08/18 10:31:17 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib library

Native library checking:

hadoop: true /usr/local/hadoop-2.4.0/lib/native/libhadoop.so.1.0.0

zlib:   true /lib64/libz.so.1

snappy: true /usr/local/hadoop-2.4.0/lib/native/Linux-amd64-64/libsnappy.so.1

lz4:    true revision:99

bzip2:  true /lib64/libbz2.so.1

以上说明本地库已经载入成功。

安装snappy压缩配置能够參考下面两篇文章:

http://www.micmiu.com/bigdata/hadoop/hadoop-snappy-install-config/

http://www.cnblogs.com/shitouer/archive/2013/01/14/2859475.html

依据以上文章配置hbase的时候,建表的时候会卡住。且regionserver报错:IOException: Compression algorithm 'snappy' previously failed test

在网上搜了非常多的文章。都是千篇一律的复制粘帖,始终无法解决以上问题。只是幸运的是。最后找到了这篇文章http://blackwing.iteye.com/blog/1943575,尽管描写叙述上一直让我非常费解,可是经过摸索终于还是攻克了我的问题,非常感谢这位博主。

最后配置hbase须要做的步骤:

1、把hadoop的本地库和snappy的本地库都复制到$HBASE_HOME/lib/native/Linux-amd64-64/文件夹下,例如以下截图:

2、在hbase-env.sh中加入下面配置:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/

export HBASE_LIBRARY_PATH=$HBASE_LIBRARY_PATH:$HBASE_HOME/lib/native/Linux-amd64-64/

希望对碰到相同问题的童鞋有点帮助。

hadoop native本地库问题总结的更多相关文章

  1. Hadoop的本地库(Native Libraries)介绍

    Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作. 目 ...

  2. [hadoop] hadoop native libraries 编译

    安装hadoop启动之后总有警告:Unable to load native-hadoop library for your platform... using builtin-Javaclasses ...

  3. spark使用hadoop native库

    默认情况下,hadoop官方发布的二进制包是不包含native库的,native库是用C++实现的,用于进行一些CPU密集型计算,如压缩.比如apache kylin在进行预计算时为了减少预计算的数据 ...

  4. Hadoop支持的压缩格式对比和应用场景以及Hadoop native库

    对于文件的存储.传输.磁盘IO读取等操作在使用Hadoop生态圈的存储系统时是非常常见的,而文件的大小等直接影响了这些操作的速度以及对磁盘空间的消耗. 此时,一种常用的方式就是对文件进行压缩.但文件被 ...

  5. hadoop native

    http://blog.csdn.net/benben85/article/details/4161134 http://stackoverflow.com/questions/19943766/ha ...

  6. 更改hadoop native库文件后datanode故障

    hadoop是用cloudra的官方yum源安装的,服务器是CentOS6.3 64位操作系统,自己写的mapreduce执行的时候hadoop会提示以下错误: WARN util.NativeCod ...

  7. hadoop-2.6.0-cdh5.4.5.tar.gz(CDH)的3节点集群搭建(含zookeeper集群安装)

    前言 本人呕心沥血所写,经过好一段时间反复锤炼和整理修改.感谢所参考的博友们!同时,欢迎前来查阅赏脸的博友们收藏和转载,附上本人的链接 http://www.cnblogs.com/zlslch/p/ ...

  8. hadoop本地库与系统版本不一致引起的错误解决方法

    hadoop本地库与系统版本不一致引起的错误解决方法 部署hadoop的集群环境为 操作系统 centos 5.8 hadoop版本为cloudera   hadoop-0.20.2-cdh3u3 集 ...

  9. Hadoop本地库介绍及相关问题解决方法汇总

    1.hadoop本地库的作用是什么?2.哪两个压缩编码器必须使用hadoop本地库才能运行?3.hadoop的使用方法?4.hadoop本地库与系统版本不一致会引起什么错误?5.$ export HA ...

随机推荐

  1. C#给IIS添加禁止IP限制

    /// <summary> /// 给IIS添加禁止IP限制 /// 仅针对iis 7及以上版本 /// 首先需要引入Microsoft.Web.Administration.dll // ...

  2. go语言多态接口样例

    感觉比java玄幻啊~~~ package main import ( "fmt" ) type notifier interface{ notify() } type user ...

  3. 变量与指针 --- WalMart 寄存箱设计者不懂计算机

    一.场景: 今天星期天,难得公司售后同事很给力,项目运行正常,无运维事务需要处理.于是满足堂客(湖南人称老婆)很久来的心愿 陪其逛街(这里要惭愧 检讨作为IT码农常常容易忽略身边的人.大声疾呼:“码农 ...

  4. api接口思路介绍

    现在很流行api了,但各种api做法不一样,下面我整理了一些自己的想法,也是看了各大门户网站开放的api应用想到的,与大家分享分享,高手跳过.   API(Application Programmin ...

  5. A - Enterprising Escape 【BFS+优先队列+map】

    The Enterprise is surrounded by Klingons! Find the escape route that has the quickest exit time, and ...

  6. 【前缀和】【分类讨论】hdu5163 Taking Bus

    #include<cstdio> using namespace std; int T,n,m,x,y; long long sum[100001],ans,d[100001]; int ...

  7. 安装virtualenvwrapper

    理解:virtualenv 和 virtualenvwrapper 是两种东西,前者可以单独使用,后者是管理前者的工具,尤其是当有多个 virtualenv(隔离环境时).所以下面的配置都是在为了使用 ...

  8. go时间转化

    将string转化为time.Time layout := "2006-01-02 15:04:05" str := "2017-11-24 15:10:22" ...

  9. (转)关于Unity3D的编辑器崩溃时的线索定位

    今天在Unity3D编辑器中进行功能测试的时候,编辑器突然崩溃了(就是整个窗口突然消失,进程直接结束)之后也没有任何错误报告信息提示.好吧,应该是偶现问题,我侥幸地想,我用的好歹也是正版啊,不应该总出 ...

  10. Target runtime Apache Tomcat 7.1 is not defined 解决方法

    在工作台目录下找到 自己操作的项目的文件夹 /.settings/org.eclipse.wst.common.project.facet.core.xml 打开后,显示 <?xml versi ...