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

什么好主意吗?


当前回答

要安装Hadoop,从Cloudera安装免费版要容易得多。它提供了一个很好的GUI,可以简单地添加节点,没有编译或填充依赖关系,它提供了像hive, pig等东西。

http://www.cloudera.com/content/support/en/downloads.html

步骤是: 1)下载 2)运行 3)进入web GUI (1.2.3.4:7180) 4)在web gui中添加额外的节点(不要在其他节点上安装cloudera软件,它会为你做所有的事情) 5)在web GUI中进入Home,单击Hue和Hue web UI。这让你可以访问Hive, Pig, Sqoop等。

其他回答

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

在.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

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

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

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

@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:)

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

首先:您可以修改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"