Hama筆記:Unable to load native-hadoop library 和 Snappy native library not loaded 的解決


Hama日志中總會看到這兩句話:

13/05/03 11:58:57 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
13/05/03 11:58:57 WARN snappy.LoadSnappy: Snappy native library not loaded

這兩個庫都是壓縮文件時使用的,最近用Hama跑一些較大的數據的時候總是報錯,不知道是不是跟這兩個庫不能loaded有關,解決之后再試試。看了hadoop-snappy的源代碼(在這里),它裝載庫文件時使用的都是java.library.path,也就是java的默認庫地址。在我的機器上,這個地址是這樣的:

/usr/lib/jvm/java/jdk1.6.0_38/jre/lib/i386/server:/usr/lib/jvm/java/jdk1.6.0_38/jre/lib/i386:/usr/lib/jvm/java/jdk1.6.0_38/jre/../lib/i386:/usr/lib/jvm/java/jdk1.6.0_38/jre/lib/i386/client:/usr/java/packages/lib/i386:/lib:/usr/lib

只要把libhadoop.so和libsnappy.so拷貝到以上路徑中任何一個位置即可。libhadoop.so可以在hadoop_home/lib/native下找到,有兩個文件夾,一個是AMD,一個是I386 . 里面有相應的架構的.so文件。libsnappy.so可以自己編譯生成,下載tar包(在這里),解壓之后 ./configure和make,.libs文件夾下可以看到.so文件。但該文件只是一個link文件,需要將它以及它的target文件一起復制到java.library.path下。編譯snappy.so時可能用到的命令:

sudo apt-get install g++
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
./configure
make

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM