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

什么好主意吗?


当前回答

我没有使用CentOS。以下是我在Ubuntu 16.04.2, hadoop-2.7.3, jdk1.8.0_121中的内容。运行start-dfs.sh或stop-dfs.sh成功,没有错误:

# JAVA env
#
export JAVA_HOME=/j01/sys/jdk
export JRE_HOME=/j01/sys/jdk/jre

export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${PATH}:.

# HADOOP env
#
export HADOOP_HOME=/j01/srv/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME

export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

将“/j01/sys/jdk”、“/j01/srv/hadoop”替换为安装路径

我还在Ubuntu上做了以下一次设置,这样在运行start-dfs.sh时就不需要多次输入密码了:

sudo apt install openssh-server openssh-client
ssh-keygen -t rsa
ssh-copy-id user@localhost

将user替换为用户名

其他回答

这一行:

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

KunBetter的回答对我很有用。 只需将其附加到.bashrc文件并重新加载.bashrc内容

$ source ~/.bashrc

要安装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等。

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

干杯

以我为例,在我的64位Linux mint操作系统上构建hadoop之后,我替换了hadoop/lib中的本机库。问题仍然存在。然后我发现hadoop指向hadoop/lib而不是hadoop/lib/native。所以我只是把所有的内容从本机库移动到它的父库。警告就这么消失了。

这一行:

export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH

KunBetter的答案是钱在哪里