我目前正在一台运行CentOs的服务器上配置hadoop。当我运行start-dfs.sh或stop-dfs.sh时,我得到以下错误:

警告跑龙套。NativeCodeLoader:无法加载原生hadoop库 你的平台……在适用的地方使用内置java类

我运行的是Hadoop 2.2.0。

我在网上搜索了一下,找到了这个链接:http://balanceandbreath.blogspot.ca/2013/01/utilnativecodeloader-unable-to-load.html

但是,hadoop 2上的/native/目录的内容。x似乎不同,所以我不知道该怎么办。

我还在hadoop-env.sh中添加了以下两个环境变量:

出口HADOOP_OPTS = " HADOOP_OPTS美元 -Djava.library.path = / usr /地方/ hadoop / lib /” 出口HADOOP_COMMON_LIB_NATIVE_DIR = " / usr /地方/ hadoop / lib /本地/”

什么好主意吗?


当前回答

我用JDK6也有同样的问题,我把JDK换成了JDK8,问题解决了。 尝试使用JDK8!!

其他回答

经过KotiI建议的持续研究,这个问题得到了解决。

hduser@ubuntu:~$ cd /usr/local/hadoop

hduser@ubuntu:/usr/local/hadoop$ ls

bin  include  libexec      logs        README.txt  share
etc  lib      LICENSE.txt  NOTICE.txt  sbin

hduser@ubuntu:/usr/local/hadoop$ cd lib

hduser@ubuntu:/usr/local/hadoop/lib$ ls
native

hduser@ubuntu:/usr/local/hadoop/lib$ cd native/

hduser@ubuntu:/usr/local/hadoop/lib/native$ ls

libhadoop.a       libhadoop.so        libhadooputils.a  libhdfs.so
libhadooppipes.a  libhadoop.so.1.0.0  libhdfs.a         libhdfs.so.0.0.0

hduser@ubuntu:/usr/local/hadoop/lib/native$ sudo mv * ../

干杯

原生hadoop库仅支持*nix平台。该库不能在Cygwin或Mac OS X平台上使用。

参考文献:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/NativeLibraries.html

如果您使用的是Windows或Mac OS X,则需要将平台更改为*nix。

首先:您可以修改glibc版本。CentOS提供传统的安全软件,这也意味着版本是旧的,如glibc,protobuf…

ldd --version
ldd /opt/hadoop/lib/native/libhadoop.so.1.0.0

您可以将当前glibc的版本与所需的glibc进行比较。

其次:如果当前glibc版本较旧,可以更新glibc。 下载Glibc

如果当前glibc id的版本正确,则可以将word native附加到HADOOP_OPTS中

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"

我用JDK6也有同样的问题,我把JDK换成了JDK8,问题解决了。 尝试使用JDK8!!

这个答案混合了@chromeeagle的分析和这个链接(Nan-Xiao)。

对于那些其他解决方案根本不起作用的人,请遵循以下步骤:

Edit the file $HADOOP_HOME/etc/hadoop/log4j.properties (credits to @chromeeagle). Add the line at the end: log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG Launch your spark/pyspark shell. You will see additional log information regarding the native library not loading. In my case I had the following error: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: no hadoop in java.library.path To fix this specific problem, add the Hadoop native library path to the LD_LIBRARY_PATH environment variable in your user's profile: export LD_LIBRARY_PATH="$HADOOP_HOME/lib/native:$LD_LIBRARY_PATH"

希望这能有所帮助。我在几个HADOOP安装中遇到了这个问题,它在两个上都有效。