使用hadoop2(YARN)时连接exception

我在Ubuntu上设置Hadoop(YARN)。 资源pipe理器似乎正在运行。 当我运行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 

我检查了错误信息中的build议url,但无法弄清楚如何解决这个问题。 我试图在我的core-site.xml文件(在etc / hadoop中)设置外部IP地址(而不是本地主机),但是这并没有解决问题。 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

希望这能解决你的问题。

您的问题与YARN无关。 它受到HDFS使用的限制。 这里是类似情况的问题 – 要求的人在外部IP接口上有9000端口监听,但是配置指向了localhost。 我建议首先检查是否有人听取端口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接口上启动服务的情况,而且人们有严重的连接问题(你感到惊讶吗?:-))。

正确的方法(至少我鼓励它基于expirience):

  1. 至少分配一个对群集客户端可见的外部接口。 如果您有DHCP,并且不想拥有静态IP,请将您的IP绑定到MAC,但移动到“常量”IP值。
  2. 将本地主机名写入/ etc / hosts以匹配外部接口。 FQDN名称,然后短。
  3. 如果可以,请使您的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

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