基于hadoop 2.0 的hbase "Unable to load native-hadoop library for your platform" 问题解决

在基于hadoop 2.0的hbase上执行命令,经常会看到如下提示:

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

1. 首先要检查hdfs有没有加载native lib库,检查hdfs的日志,如果发现其中有:

ERROR org.apache.hadoop.io.nativeio.NativeIO: Unable to initialize NativeIO libraries

说明hdfs的native的lib没有加载,检查hadoop目录下的lib/native下是否存在libhadoop.so,并且用file命令检查该so是由于操作系统的平台对应,默认下载的bin包中的so是32位的,如果用在64位的操作系统上,需要重新编译。可以参见http://blog.csdn.net/lalaguozhe/article/details/10580727

2. 如果以上问题解决,hdfs的日志中,没有发现有关native的错误信息,则要检查hbase的native库配置,在hbase中默认的native库路径是hbase目录下的lib/native/Linux-*(跟平台类型相关),可以通过ps aux|grep `jps|grep HRegion|awk '{print $1}'`命令获得region server的启动项,检查其中-Djava.library.path=的配置,我的服务器上是lib/native/Linux-amd64-64,于是在hbase目录下创建lib/native/Linux-amd64-64这个目录,并把hadoop目录下的lib/natvie下的so拷贝过来,在集群的所有结点上进行相同的操作,之后重启hbase集群,问题解决


你可能感兴趣的:(基于hadoop 2.0 的hbase "Unable to load native-hadoop library for your platform" 问题解决)