天天看点

Hadoop can't load native lib

前几天部门刚来不久的小同学装Hadoop一直失败,报libhadoop加载错误解决不了.过去查看下相关依赖lib都解决了,JAVA_LIBRARY_PATH也指定正确位置了,为啥还会失败呢?

直接强制加载一次nativelib再看发现原来在另外一个目录有人安装了libhadoop,但是版本是错误的,很多依赖都找不到,而HADOOP启动时正加载了这个路径下的libhadoop导致失败的,这是什么原因呢?

查看HADOOP在nativelib的加载过程,最后跟踪到classloader的loadLibrary方法发现:

1

2

<code>usr_paths = initializePath(</code><code>"java.library.path"</code><code>);</code>

<code>sys_paths = initializePath(</code><code>"sun.boot.library.path"</code><code>);</code>

原来在加载javalib时,classloader是优先加载sys_paths然后才是usr_paths.

我也学习了:)

本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1367254,如需转载请自行联系原作者

继续阅读