Linux 使用hadoop2(纱线)时出现连接异常

Linux 使用hadoop2(纱线)时出现连接异常,linux,shell,hadoop,hdfs,yarn,Linux,Shell,Hadoop,Hdfs,Yarn,我已经在ubuntu上安装了Hadoop(纱线)。资源管理器似乎正在运行。当我运行hadoop fs-ls命令时,我收到以下错误: 14/09/22 15:52:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable ls: Call From ubuntu-8.abcd/xxx.xxx.

我已经在ubuntu上安装了Hadoop(纱线)。资源管理器似乎正在运行。当我运行hadoop fs-ls命令时,我收到以下错误:

14/09/22 15:52:14 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ls: Call From ubuntu-8.abcd/xxx.xxx.xxx.xxxx to ubuntu-8.testMachine:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
我在错误消息中查看了建议的URL,但无法找到解决问题的方法。我曾尝试在我的core-site.xml文件(在etc/hadoop中)中设置外部IP地址(与localhost相反),但这并没有解决问题。已在机箱上禁用IPv6。我以hduser(对目录具有读/写访问权限)的身份运行该进程。你有什么想法来解决这个问题吗?我在一个节点上运行这个

bashrc

#HADOOP VARIABLES START
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export HADOOP_INSTALL=/usr/local/hadoop/hadoop-2.5.1
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export HADOOP_YARN_HOME=$HADOOP_INSTALL  ##added because I was not sure about the line below
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_CONF_DIR=$HADOOP_INSTALL/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_INSTALL/lib"
#HADOOP VARIABLES END 

确保已启动所有必要的操作,键入start all.sh,此命令将启动连接到hadoop所需的所有服务

之后,您可以键入jps,使用此命令可以查看在hadoop下运行的所有服务,最后,使用netstat-plnet | grep java检查这些服务打开的端口


希望这能解决您的问题。

您的问题与纱线无关。它受到HDFS使用的限制。 类似的情况——询问者有9000个端口监听外部IP接口,但配置指向本地主机。我建议首先检查是否有人监听端口9000以及监听什么接口。看起来您在IP接口上有服务侦听,这与您查找它的位置不同。查看您的日志,您的客户正在尝试ubuntu-8。testMachine:9000。要解决的IP是什么?如果在/etc/hosts中将其分配给127.0.0.1,您可能会遇到我提到的问题——客户端尝试访问127.0.0.1,但服务正在等待外部IP。好的,你也可以这样做。下面是Hadoop服务的示例

事实上,许多类似的情况都有相同的根错误配置的主机接口。人们通常在/etc/hosts中配置工作站主机名并将此主机名分配给localhost。此外,他们只在这个FQDN之后写第一个短名称。但这意味着IP解析为短主机名,而FQDN解析为IP(非对称)

这反过来又引发了许多情况,其中服务在本地127.0.0.1接口上启动,人们有严重的连接问题(您是否感到惊讶?:-)

正确的方法(至少我鼓励基于到期日):

  • 至少分配一个群集客户端可见的外部接口。如果您有DHCP并且不想使用静态IP,请将您的IP绑定到MAC,但移动到“常量”IP值
  • 将本地主机名写入/etc/hosts以匹配外部接口。先是FQDN名称,然后是短名称
  • 如果可以,请使用DNS解析器将FQDN解析为IP。不要在意短名字
  • 例如,您将外部IP接口1.2.3.4和FQDN(完全限定域名)设置为myhost.com-在这种情况下,您的/etc/hosts记录必须如下所示:

    1.2.3.4 myhost.com myhost

    是的,你的DNS解析器最好知道你的名字。使用以下选项检查直接和反向分辨率:

    主机myhost.com 主机1.2.3.4


    是的,集群在网络管理方面并不容易;-)。从未有过,也永远不会有。

    谢谢分享。我通常会先尝试“start dfs.sh”,然后再尝试“start thread.sh”-但这只会启动资源管理器-不会出现名称节点。我通过start-all.sh脚本观察到同样的情况。我在路径中安装了$HADOOP\u INSTALL/bin&$HADOOP\u INSTALL/sbin($HADOOP\u INSTALL指向HADOOP目录)-不知道这是否会导致问题(因为每次我运行start-dfs.sh时,它都会抱怨找不到$HADOOP_INSTALL/bin/hdfs,即使该文件具有读/写访问权限。我经常遇到这种异常的原因是:1.NodeManager没有运行,或者resourceManager没有运行。2.core-site.xml文件配置不正确,属性fs.defaultFS必须具有大概是这样的:hdfs://ipAddress |localhost:8020和mapred-side.xml文件中的mapred.job.tracker,并进行了相应的配置。此外,运行start-dfs.sh时出现的错误也不正常,因此请检查环境变量。是的,问题是没有出现名称节点。我在原始帖子中复制了上面的bashrc如果您观察到任何错误,请发表评论谢谢-启动dfs的脚本不完全正确,或者很可能我在bashrc中配置了错误的内容。我可以根据另一个答案直接运行namenode、datanode、namenodemanager和jobhistorymanager尝试删除默认情况下创建的datanode和namenode目录d在下面的路径/tmp/hadoop username*中,然后格式化namenode,然后尝试与您共享-非常感谢。如果是这样,为什么我能够按名称运行服务(除非它们的脚本与主机名有不同的逻辑)有些服务使用基于主机名的绑定接口解析,但有些不使用。客户端的操作方式与此相同。但这可能不是您的情况-您需要检查,但我已经看到许多类似的情况。