我目前正在一台运行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 /本地/”

什么好主意吗?


当前回答

在.bashrc文件的LD_LIBRARY_PATH中添加Hadoop本机库,并使用源~/.bashrc将库重新加载到当前会话中

export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native

(或)如果你有hadoop库安装在/usr/lib/

export LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native

其他回答

经过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 * ../

干杯

export JAVA_HOME=/home/hadoop/software/java/jdk1.7.0_80
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_COMMON_LIB_NATIVE_DIR"

@zhutoulala—FWIW你的链接在Hadoop 2.4.0中为我工作,除了一个例外,我不得不告诉maven不要构建javadocs。我也在2.4.0的第一个链接中使用了补丁,它工作得很好。这是我必须发出的maven命令

mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar

在构建这个并移动库之后,不要忘记更新hadoop-env.sh:)

我想这也许能帮到跟我一样遇到困难的人

export HADOOP_HOME=/home/hadoop/hadoop-2.4.1  
export PATH=$HADOOP_HOME/bin:$PATH  
export HADOOP_PREFIX=$HADOOP_HOME  
export HADOOP_COMMON_HOME=$HADOOP_PREFIX  
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native  
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop  
export HADOOP_HDFS_HOME=$HADOOP_PREFIX  
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX  
export HADOOP_YARN_HOME=$HADOOP_PREFIX  
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

对于那些在OSX上通过Homebrew安装Hadoop的用户,请按照以下步骤替换路径和Hadoop版本

wget http://www.eu.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1-src.tar.gz
tar xvf hadoop-2.7.1-src.tar.gz
cd hadoop-2.7.1-src
mvn package -Pdist,native -DskipTests -Dtar
mv lib /usr/local/Cellar/hadoop/2.7.1/

然后更新hadoop-env.sh

export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc= -Djava.library.path=/usr/local/Cellar/hadoop/2.7.1/lib/native"