繁体   English   中英

hadoop错误:util.NativeCodeLoader(hdfs dfs -ls不起作用!)

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

我已经看到很多人在安装hadoop时遇到问题。 我经历了所有相关的stackoverflow问题,但无法解决问题。

问题是 :

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导出PATH = $ PATH:$ HADOOP_INSTALL / bin导出PATH = $ PATH:$ 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 \\ HADOOP_INSTALL
    导出PATH = $ PATH:$ 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的链接在这里:
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中的链接是这样的:
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其他临时目录的基础。

fs.default.name
hdfs:// localhost:54310默认文件系统的名称。 一个URI,其方案和权限确定FileSystem的实现。 uri的方案确定命名FileSystem实现类的config属性(fs.SCHEME.impl)。 uri的权限用于确定文件系统的主机,端口等。

指向core-site.xml的pastebin的链接是这样的: http : //pastebin.com/D184DuGB

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

mapred.job.tracker
localhost:54311 MapReduce作业跟踪程序运行的主机和端口。 如果为“本地”,则作业将作为单个映射在流程中运行,并减少任务。

pastebin链接为:
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

    猫/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
    hdfs是/home/bhishan/hadoop-2.7.2/bin/hdfs

  4. 重新启动Hadoop

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

    cd /home/bhishan/hadoop-2.7.2/tmp && rm -Rf *
    hadoop namenode-格式

    start-dfs.sh
    start-yarn.sh

  5. 现在错误来了

hdfs dfs -ls

16/09/26 23:53:14 WARN util.NativeCodeLoader:无法在适用的平台上使用内置的Java类为您的平台加载本机Hadoop库ls:`。':无此类文件或目录

  1. 检查jps

    jps
    6688 sun.tools.jps.Jps
    3909 SecondaryNameNode
    3525 NameNode
    4327节点管理器
    4184资源管理器
    3662个数据节点

  2. 检验性的

    hadoop checknative -a
    16/09/27 09:28:18 WARN util.NativeCodeLoader:无法使用适用于本机库检查的内置Java类,为您的平台加载本机Hadoop库:
    hadoop:错误
    zlib:假
    snappy:错误
    lz4:错误
    bzip2:错误
    openssl:错误
    16/09/27 09:28:18 INFO util.ExitUtil:以状态1退出

  3. 然后我安装了缺少的库:
    a)哪个hadoop提供了Hadoop 2.7.2

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

c)安装了snappy和python-snappy。

d)在Synaptic管理器中,我可以看到lz4 liblz4-1,liblz4-tool,python-lz4,python3-lz4

e)bzip2已经安装。

f)openssl已经安装。

  1. 所有检查都是错误的,我无法运行hdfs dfs -ls直到现在我都找不到任何错误。 任何帮助将不胜感激。

另外,我试图在具有四个核心的Single笔记本电脑中运行hadoop。 版本是2.7.2,版本是3.0,如果我必须从头重新安装hadoop,也许我应该选择hadoop3。 建议将受到欢迎。

相关链接:
hdfs dfs -ls命令的结果
配置多个节点后,hdfs dfs ls无法正常工作
hadoop fs -ls不起作用
Namenode尚未开始
没有要停止的Namenode或Datanode或Secondary NameNode
Hadoop 2.6.1警告:WARN util.NativeCodeLoader
Hadoop 2.2.0设置(伪分布式模式):错误//警告util.NativeCodeLoader:无法加载本地hadoop库
命令“ hadoop fs -ls”。 不起作用

并且,
hadoop fs -mkdir出现连接异常失败
Hadoop集群设置-java.net.ConnectException:连接被拒绝
安装配置单元后的Hadoop(本地和主机目标不匹配)

帮助将不胜感激!

从这个错误:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM