在官网上下载了hadoop2.5.2版本的hadoop进行安装,安装完成后一切功能都很正常,是会报这样的的一个警告信息:
INFO util.NativeCodeLoader - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
在网上搜了下原因,是因为hadoop官网的安装包提供的native库是32位的,jar包本身是不分32或64位的,但是so文件是区分的。native库是提供给java调用的c写的接口程序,在需要操作底层硬件的时候或实现某些高性能操作的时候常用到C语言来实现,java通过native方法来调用。在hadoop中,一些文件的读写压缩等操作会用到native库,但是java方法中也是有实现的,所以貌似这个库无法调用不会影响到hadoop的整体功能,只是性能上会比较差。要解决这个问题,网上提供的方法都是要自己重新编译hadoop源文件。不过整个项目编译非常耗时间。实际上只要替换掉{hadoop_home}/lib/native目录下的文件就可以了。在此提供一个native库:native-64,替换上后你的hadoop就变成64位版本了。将包解压替换到{hadoophome}/lib/native目录,注意替换之前请检查原生的native库中的这两个文件的版本是否一致,不一致的话就不建议替换 libhadoop.so.1.0.0 ; libhdfs.so.0.0.0
Failed to load native-hadoop本地库不一致的解决办法
最新推荐文章于 2023-01-17 14:56:48 发布