Hadoop DataNode不会使用远程IPC服务器地址

时间:2013-02-08 11:11:50

标签: hadoop cluster-computing virtual-machine

对于“快速”概念验证,我想通过连接两个虚拟机来设置一个迷你Hadoop 0.18集群,我发现这些虚拟机在Yahoo以伪分布式模式配置。

在我的 hadoop-vm-1 上,我启动了一个完整的集群,其中包含主节点和该机器上的从属DataNode和TaskTracker。 然后我将第二个VM作为 hadoop-vm-2 并希望它托管第二个DataNode和TaskTracker,它将连接到 hadoop-vm-1 并添加到此集群

不幸的是,我无法启动第二个DataNode,因为它希望连接到本地IPC服务器。这是我希望它连接到 hadoop-vm-1 的地方。日志写如下:

  

2013-02-07 19:55:29,954 INFO org.apache.hadoop.ipc.Client:重试连接到服务器:/192.168.17.135:9000。已经尝试了9次。
  2013-02-07 19:55:29,958 ERROR org.apache.hadoop.dfs.DataNode:java.io.IOException:本地异常调用失败
  ..
  引起:java.net.ConnectException:拒绝连接

应该使用来自 hadoop-vm-1 的192.168.17.134而不是IP 192.168.17.135( hadoop-vm-2 )。

我认为我正确配置了奴隶的hadoop-site.xxml:

<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://hadoop-vm-1/</value>
  <description>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.</description>
</property>

<property>
  <name>mapred.job.tracker</name>
  <value>hadoop-vm-1:9001</value>
  <description>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.
  </description>
</property>

</configuration>

当然我配置了hosts文件:

127.0.0.1   localhost
127.0.1.1   hadoop-vm-2.localdomain hadoop-vm-2
192.168.17.134 hadoop-vm-1

任何想法?提前谢谢: - )

2 个答案:

答案 0 :(得分:0)

/ etc / hosts文件的内容应该类似于

127.0.0.1   localhost
#127.0.1.1  hadoop-vm-1
192.168.0.101 hadoop-vm-1
192.168.0.100 hadoop-vm-2

检查此blog及其评论以获取更多详细信息。此外,在伪分布式模式下,所有守护进程都将在其自己的JVM和单个节点上运行。对于1+节点,它是完全分布式模式。有关不同模式的更多信息here

此外,有多种方法可以设置Hadoop集群。

1)从Apache下载所有相关框架并手动设置它们。这里(12)是一些很好的教程。这种方法需要一些努力,但有很多东西需要学习。

2)使用Cloudera Manager自动化Hadoop和其他相关框架(如Hive,HBase,ZooKeeper等)的安装过程。还有一些其他公司提供HortonWorks的HDP自动安装。大部分内容都是自动化的,隐藏在UI后面。

答案 1 :(得分:0)

我找到了解决问题的方法:确实我的直觉是对的,我的配置确实被忽略了。

YAHOO的preconfigured VM有一些不起眼的附加配置目录。这会覆盖“conf”目录中的所有配置 - 即使您手动启动集群并且不使用提供的教程启动脚本。

所以我删除了目录,并添加了一个同名的符号链接,指向conf目录。现在它按预期工作。 p: - )