hadoop error: util.NativeCodeLoader (hdfs dfs -ls does not work!)

hadoop error: util.NativeCodeLoader (hdfs dfs -ls does not work!)

我看到很多人在安装 hadoop 时遇到问题。我检查了所有相关的 Whosebug 问题,但无法解决问题。

问题是:

hdfs dfs -ls 
16/09/27 09:43:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ls: `.': No such file or directory  
  1. 我正在使用 ubuntu 16.04,我从 Apache 镜像下载了 hadoop 稳定版 2.7.2:
    http://apache.spinellicreations.com/hadoop/common/

  2. 我已经安装了 java 和 ssh。

    哪个java
    java 是 /usr/bin/java
    javac
    javac 是 /usr/bin/javac
    哪个 ssh
    ssh 是 /usr/bin/ssh
    回声$JAVA_HOME
    /usr/lib/jvm/java-9-openjdk-amd64

注:

sudo update-alternatives --config java
There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-9-openjdk-amd64/bin/java       1091      auto mode
  1            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  2            /usr/lib/jvm/java-9-openjdk-amd64/bin/java       1091      manual mode

Press <enter> to keep the current choice[*], or type selection number:
  1. ~/.bashrc 中的 hadoop 环境变量

    出口JAVA_HOME=/usr/lib/jvm/java-9-openjdk-amd64 导出 HADOOP_INSTALL=/home/bhishan/hadoop-2.7.2 导出路径=$路径:$HADOOP_INSTALL/bin 导出路径=$路径:$HADOOP_INSTALL/sbin 导出 HADOOP_MAPRED_HOME=$HADOOP_INSTALL 导出 HADOOP_COMMON_HOME=$HADOOP_INSTALL 导出 HADOOP_HDFS_HOME=$HADOOP_INSTALL 导出 YARN_HOME=$HADOOP_INSTALL 导出 HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native 导出 HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
    导出路径=$路径:$HADOOP_HOME/bin

  2. 修改文件:
    /home/bhishan/hadoop-2.7.2/etc/hadoop/hadoop-env.sh

最后加了一行:

export JAVA_HOME=/usr/lib/jvm/java-9-openjdk-amd64

pastebin 中 hadoop-env.sh 的 link 在这里:
http://pastebin.com/a3iPjB04

  1. 然后我创建了一些空目录:

    /home/bhishan/hadoop-2.7.2/tmp /home/bhishan/hadoop-2.7.2/etc/hadoop/hadoop_store /home/bhishan/hadoop-2.7.2/etc/hadoop/hadoop_store/hdfs /home/bhishan/hadoop-2.7.2etc/hadoop/hadoop_store/hdfs/datanode /home/bhishan/hadoop-2.7.2/etc/hadoop/hadoop_store/hdfs/namenode

  2. 对文件的修改:/home/bhishan/hadoop-2.7.2/etc/hadoop/hdfs-site.xml

<property>  
  <name>dfs.replication</name>  
  <value>1</value>  
  <description>Default block replication.  
  The actual number of replications can be specified when the file is created.  
  The default is used if replication is not specified in create time.  
  </description>  
 </property>  
 <property>  
   <name>dfs.namenode.name.dir</name>  
  <value>file:/home/bhishan/hadoop-2.7.2/etc/hadoop/hadoop_store/hdfs/namenode</value>

 </property>  
 <property>  
   <name>dfs.datanode.data.dir</name>  
   <value>file:/home/bhishan/hadoop-2.7.2/etc/hadoop/hadoop_store/hdfs/datanode</value>

 </property>

pastebin中的link是这样的:
http://pastebin.com/cha7ZBr8

  1. 对文件的修改:/home/bhishan/hadoop-2.7.2/etc/hadoop/core-site.xml

正在关注:

hadoop.tmp.dir
/home/bhishan/hadoop-2.7.2/tmp A base for other temporary directories.

fs.default.name
hdfs://localhost:54310 The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation. The uri's scheme determines the config property (fs.SCHEME.impl) naming the FileSystem implementation class. The uri's authority is used to determine the host, port, etc. for a filesystem.

core-site.xml 的 pastebin 的 link 是这样的: http://pastebin.com/D184DuGB

  1. 文件修改如下:/home/bhishan/hadoop-2.7.2/etc/hadoop/mapred-site.xml

mapred.job.tracker
localhost:54311 The host and port that the MapReduce job tracker runs at. If "local", then jobs are run in-process as a single map and reduce task.

pastebin link 是:
http://pastebin.com/nVxs8nMm

  1. 当我在终端中输入主机名时,它显示 BP

    猫/etc/hosts
    127.0.0.1 本地主机 BP
    127.0.1.1 本地主机

    支持 IPv6 的主机需要以下行

    ::1 ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

  2. 我也禁用了ipv6

    cat /etc/sysctl.conf
    net.ipv6.conf.all.disable_ipv6=1
    net.ipv6.conf.default.disable_ipv6=1
    net.ipv6.conf.lo.disable_ipv6=1

  3. hadoop 描述

    hadoop 版本
    Hadoop 2.7.2

    哪个hadoop
    hadoop 是 /home/bhishan/hadoop-2.7.2/bin/hadoop

    哪个硬盘
    hdfs 是 /home/bhishan/hadoop-2.7.2/bin/hdfs

  4. 正在重启 hadoop

    cd /home/bhishan/hadoop-2.7.2/sbin
    停止-dfs.sh
    停止-yarn.sh

    cd /home/bhishan/hadoop-2.7.2/tmp && rm -Rf *
    hadoop 名称节点格式

    开始-dfs.sh
    开始-yarn.sh

  5. 现在错误来了

hdfs dfs -ls

16/09/26 23:53:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ls: `.': No such file or directory

  1. 正在检查 jps

    jps
    6688sun.tools.jps.Jps
    第3909章 3525 名称节点
    4327 节点管理器
    4184资源管理器
    3662 数据节点

  2. checknative

    hadoop checknative -a
    27 年 9 月 16 日 09:28:18 警告 util.NativeCodeLoader:无法为您的平台加载本机 hadoop 库...在适用的情况下使用内置-java 类 本机库检查:
    hadoop:错误
    zlib: false
    活泼:假
    lz4: 假
    bzip2: 假
    openssl: false
    27 年 9 月 16 日 09:28:18 信息 util.ExitUtil:退出状态为 1

  3. 然后我安装了缺少的库:
    a) which hadoop 给 Hadoop 2.7.2

b) sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
从突触管理器中,我可以看到安装了以下库:
zlib1g, zlib1g-dev , zlib1g:i386, zlibc

c) 安装了 snappy 和 python-snappy.

d) 在 Synaptic 管理器中我可以看到 lz4 liblz4-1、liblz4-工具、python-lz4、python3-lz4

e) bzip2 已经安装。

f) openssl 已经安装。

  1. 所有checknative都是假的,我不能运行 hdfs dfs -ls 到现在为止我找不到任何错误。任何帮助将不胜感激。

此外,我正在尝试 运行 在具有四核的单台笔记本电脑中使用 hadoop。版本是 2.7.2,3.0 版本如何,如果我必须从头开始重新安装 hadoop,可能我应该使用 hadoop3。欢迎提出建议。

相关links:



Namenode not getting started
No Namenode or Datanode or Secondary NameNode to stop
Hadoop 2.6.1 Warning: WARN util.NativeCodeLoader
Hadoop 2.2.0 Setup (Pseudo-Distributed Mode): ERROR// Warn util.NativeCodeLoader: unable to load native-hadoop library
Command "hadoop fs -ls ." does not work

还有,
hadoop fs -mkdir failed on connection exception
Hadoop cluster setup - java.net.ConnectException: Connection refused
Hadoop (local and host destination do not match) after installing hive

我们将不胜感激!

来自这个错误:

hdfs dfs -ls 
16/09/27 09:43:42 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ls: `.': No such file or directory  

忽略有关本机库的警告 - 即使有该警告,该命令也应该可以正常工作。

当您 运行 hdfs dfs -ls 没有路径时,它会尝试列出您在 HDFS 中的主目录的内容,默认情况下为 /user/。在这种情况下,我怀疑这个问题只是你的用户目录不存在。

如果你运行它工作正常吗:

hadoop fs -ls /

然后做:

hadoop fs -mkdir -p /user/<your_user_name>
hadoop fs -ls