您的位置:首页 > 运维架构

在HBase中使用Hadoop本地库(适用于HBase 1.x及Hadoop 2.x)

2015-12-09 00:00 645 查看
摘要: 解决HBase无法正常加载hadoop本地库的问题

hadoop提供的本地库包含了压缩、循环冗余校验在内的多种功能,与内建的相应Java类相比,使用该库能够明显地提高运行效率。在HBase中默认未提供该库,在运行时或日志中可以发现如下警告:

2015-12-08 21:47:42,194 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

运行如下命令可以检测本地库的加载情况:

$ ./bin/hbase org.apache.hadoop.util.NativeLibraryChecker
2015-12-08 21:47:42,194 WARN  [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Native library checking:
hadoop: false
zlib:   false
snappy: false
lz4:    false
bzip2:  false
2015-12-08 21:47:42,266 INFO  [main] util.ExitUtil: Exiting with status 1

jvm默认在lib/native/PLATFORM中搜索本地库,其中PLATFORM是平台相关的描述字符串,由os.name和os.arch决定,可由如下代码获取这两个属性:

System.out.println("os.name: " + System.getProperty("os.name"));
System.out.println("os.arch: " + System.getProperty("os.arch"));

在通常的64位机器、GNU/Linux操作系统及64位jvm中,PLATFORM为“Linux-amd64-64”,将同一版本的hadoop本地库放入lib/native/PLATFORM中,再次检测本地库加载情况:

$ ./bin/hbase org.apache.hadoop.util.NativeLibraryChecker
2015-12-08 21:47:53,224 INFO  [main] bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native
2015-12-08 21:47:53,226 INFO  [main] zlib.ZlibFactory: Successfully loaded & initialized native-zlib library
Native library checking:
hadoop: true ~/develop/hbase-1.1.2/lib/native/Linux-amd64-64/libhadoop.so.jvm7
zlib:   true /lib64/libz.so.1
snappy: true /lib64/libsnappy.so.1
lz4:    true revision:99
bzip2:  true /lib64/libbz2.so.1

HBase已经能够正常使用hadoop本地库。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop本地库 HBase