0

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

在我的hadoop-vm-1上,我在该机器上启动了一个包含主节点和从属 DataNode 和 TaskTracker 的完整集群。然后我将第二个虚拟机作为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 错误 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.xml:

<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>

当然,我配置了主机文件:

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

有任何想法吗?提前致谢 :-)

4

2 回答 2

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

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

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

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

2) 使用Cloudera Manager自动安装 Hadoop 和其他相关框架,如 Hive、HBase、ZooKeeper 等。还有一些其他公司提供自动安装,如HortonWorks 的HDP。大多数事情都是自动化的,隐藏在 UI 后面。

于 2013-02-08T15:49:12.857 回答
0

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

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

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

于 2013-02-15T12:00:26.897 回答