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

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 /home/gesturewei/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本地库。


你可能感兴趣的:(hbase,Hadoop本地库)