草庐IT

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

coder 2024-01-09 原文

我已经看到很多人在安装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  
  • 我正在使用ubuntu 16.04,并且从Apache镜像下载了hadoop稳定版2.7.2:
    http://apache.spinellicreations.com/hadoop/common/
  • 我已经安装了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:
    

    〜/ .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 / native
    export HADOOP_OPTS =“-Djava.library.path = $ HADOOP_INSTALL / lib”
    导出PATH = $ PATH:$ HADOOP_HOME / bin
  • 修改文件:/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
  • 然后我创建了一些空目录:

    /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
  • 对文件的修改:/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
  • 对文件的修改:/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的链接是这样的:
    http://pastebin.com/D184DuGB
  • 对文件的修改如下:/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链接为:
    http://pastebin.com/nVxs8nMm
  • 当我在终端中输入主机名时说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
  • 我也禁用了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
  • 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
  • 重新启动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
  • 现在出现错误

  • 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


  • 检查jps

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

    hadoop checknative -a
    16/09/27 09:28:18 WARN util.NativeCodeLoader:无法在适用的情况下使用内置Java类为您的平台加载本机Hadoop库。
    本机库检查:
    hadoop:错误
    zlib:否
    活泼的:错误的
    lz4:错误
    bzip2:错误
    openssl:错误
    16/09/27 09:28:18 INFO util.ExitUtil:以状态1
  • 退出
  • 然后我安装了缺少的库:
    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已经安装。
  • 所有检查码均为假,我无法运行hdfs dfs -ls
    到目前为止,我找不到任何错误。任何帮助将不胜感激。

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

    相关链接:
    Result of hdfs dfs -ls command
    hdfs dfs ls not working after multiple nodes configured
    hadoop fs -ls does not work
    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
    

    关于hadoop - hadoop错误:util.NativeCodeLoader(hdfs dfs -ls不起作用!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39728216/

    有关hadoop - hadoop错误:util.NativeCodeLoader(hdfs dfs -ls不起作用!)的更多相关文章

    1. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

      我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

    2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

      大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

    3. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

      如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

    4. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

      我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

    5. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

      我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

    6. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

      我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

    7. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

      我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

    8. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

      在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

    9. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

      我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

    10. ruby-on-rails - Rails 5 Active Record 记录无效错误 - 2

      我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa

    随机推荐