近期,打算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. catkin详细解释

    http://answers.ros.org/question/58498/what-is-the-purpose-of-catkin_depends/

  2. linux--redis的安装和配置和开启多个端口

    在workerman开发过程中需要安装redis来存储用户ip.端口等信息 首先UBUNTU中安装redis: apt-update  //更新apt包源apt-get install redis-s ...

  3. 将datatable导出为excel的三种方式(转)

    一.使用Microsoft.Office.Interop.Excel.DLL 需要安装Office 代码如下:  2         public static bool ExportExcel(Sy ...

  4. Mysql错误:Every derived table must have its own alias

    Mysql报错:Every derived table must have its own alias    <缺少一个别名> 在子查询中经常会犯的错误 .这个别名其实没啥用途....  ...

  5. HBASE启动失败,Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster

    Master日志错误:2015-12-02 06:34:32,394 ERROR [main] master.HMasterCommandLine: Master exitingjava.lang.R ...

  6. 树上两点的最近公共祖先问题(Least Common Ancestors)

    概念: 对于有根树T的两个节点u,v,最近公共祖先LCA(T, u, v)表示一个节点 x, 满足 x 是 u , v 的祖先且 x 的深度尽可能的大.即从 u 到 v 的路径一定经过点 x. 算法: ...

  7. Django项目静态文件加载失败问题

    在我们平时的开发过程中,为了方便调试程序,我们都是打开开发者模式,即Debug=True,当我们正式上线的时候肯定就需要把开发者模式关掉,用uwsgi部署上去以后,突然发现我们平时辛苦做的项目的静态文 ...

  8. Java Retry implement

    There are many cases in which you may wish to retry an operation a certain number of times. Examples ...

  9. 最小生成树Kruskal+LCA+bfs【bzoj4242】水壶

    Description JOI 君所居住的 IOI 市以一年四季都十分炎热著称. IOI 市被分成 \(H\) 行,每行包含 \(W\) 块区域.每个区域都是建筑物.原野.墙壁之一. IOI 市有 \ ...

  10. 2014 非常好用的开源 Android 测试工具

    http://www.php100.com/html/it/mobile/2014/1015/7495.html 当前有很大的趋势是转向移动应用平台,Android 是最广泛使用的移动操作系统,201 ...