hadoop 错误:util.NativeCodeLoader(hdfs dfs -ls 不起作用!)
Posted
技术标签:
【中文标题】hadoop 错误:util.NativeCodeLoader(hdfs dfs -ls 不起作用!)【英文标题】:hadoop error: util.NativeCodeLoader (hdfs dfs -ls does not work!) 【发布时间】:2016-09-27 15:09:37 【问题描述】:我看到很多人在安装 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
我使用的是 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 导出 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 一个基地 对于其他临时目录。
fs.default.name hdfs://localhost:54310 的名称 默认文件系统。一个 URI,其方案和权限决定了 文件系统实现。 uri 的方案决定了配置 命名文件系统实现的属性 (fs.SCHEME.impl) 班级。 uri的权限用于确定主机、端口、 等文件系统。
core-site.xml 的 pastebin 链接如下: http://pastebin.com/D184DuGB
-
对文件的修改如下:
/home/bhishan/hadoop-2.7.2/etc/hadoop/mapred-site.xml
mapred.job.tracker localhost:54311 的主机和端口 MapReduce 作业跟踪器运行在。如果是“本地”,则运行作业 在进程中作为单个 map 和 reduce 任务。
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-所有节点 ff02::2 ip6-allrouters
我也禁用了 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
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 - 格式
开始-dfs.sh start-yarn.sh
现在错误来了
hdfs dfs -ls
16/09/26 23:53:14 警告 util.NativeCodeLoader:无法加载 适用于您平台的 native-hadoop 库...使用内置 java 类 如果适用 ls: `.': 没有这样的文件或目录
检查 jps
jps 6688 sun.tools.jps.Jps 3909 次要名称节点 3525 名称节点 4327 节点管理器 4184 资源管理器 3662 数据节点
检查本机
hadoop checknative -a 16/09/27 09:28:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... 在适用的情况下使用内置 java 类 本机库检查: 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 --reinstall zlibc zlib1g zlib1g-dev 从突触管理器中,我可以看到安装了以下库: zlib1g, zlib1g-dev , zlib1g:i386, zlibc
c) 安装 snappy 和 python-snappy。
d) 在突触管理器中,我可以看到 lz4 liblz4-1、liblz4-tool、python-lz4、python3-lz4
e) bzip2 已经安装。
f) openssl 已经安装。
-
所有 checknative 都是假的,我无法运行 hdfs dfs -ls
到目前为止,我找不到任何错误。任何帮助将不胜感激。
另外,我正在尝试在具有四核的单台笔记本电脑中运行 hadoop。版本是2.7.2,版本3.0怎么样,如果我必须从头开始重新安装hadoop,可能我应该用hadoop3。欢迎提出建议。
相关链接:Result of hdfs dfs -ls commandhdfs dfs ls not working after multiple nodes configuredhadoop fs -ls does not workNamenode not getting startedNo Namenode or Datanode or Secondary NameNode to stopHadoop 2.6.1 Warning: WARN util.NativeCodeLoaderHadoop 2.2.0 Setup (Pseudo-Distributed Mode): ERROR// Warn util.NativeCodeLoader: unable to load native-hadoop libraryCommand "hadoop fs -ls ." does not work
还有,hadoop fs -mkdir failed on connection exceptionHadoop cluster setup - java.net.ConnectException: Connection refusedHadoop (local and host destination do not match) after installing hive
我们将不胜感激!
【问题讨论】:
【参考方案1】:从此错误:
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
【讨论】:
如果你运行“hdfs dfs -mkdir /user”,会报错还是工作? 哦等等!,现在我又重新启动了 hadoop,现在 hadoop fs -ls / WORKS! 但是:hadoop fs -mkdir -p /user/bhishan 失败! sudo mkdir -p /user/bhishan 工作。 再次:hadoop fs -mkdir -p /user/bhishan/junk_sep27 失败! “hdfs dfs mkdir -p /user/bhishan”给出了什么错误?如果您只想玩 Hadoop,最简单的方法是从 Cloudera.com 下载一个快速启动 VM - 它是所有设置和工作,让您专注于学习 Hadoop 并避免这些安装类型问题。以上是关于hadoop 错误:util.NativeCodeLoader(hdfs dfs -ls 不起作用!)的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop:错误 BlockSender.sendChunks() 异常