1. 程式人生 > >hadoop 2.2 hbase "Unable to load native-hadoop library for your platform" 問題解決

hadoop 2.2 hbase "Unable to load native-hadoop library for your platform" 問題解決

在基於hadoop 2.x的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叢集,問題解決。