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

 

posted on 2013-05-03 12:40  甲马  阅读(4614)  评论(1编辑  收藏  举报

导航