2015-12-21 26 views
2

我想在使用Docker的多裸集群中使用Hadoop 2.3.0。我有一个主容器和一个从容器(在第一个设置中)。当Master和Slave容器位于同一个主机(因此,同一个Flannel子网)时,Hadoop可以很好地工作。但是,如果主设备和从设备位于不同的裸机节点(因此,不同的绒布子网),它根本不起作用(我得到一个连接拒绝错误)。两个容器都可以ping通并彼此通信,所以没有连通性问题。出于某种原因,hadoop似乎需要群集中的所有节点都位于同一个子网中。有没有办法绕过这个?分布在不同子网中的Hadoop集群(Docker + Flannel)

谢谢

回答

1

ssh和ping是不够的。如果你有iptables或其他防火墙,你需要禁用或打开端口。只要主机可以互相通信并且端口已打开,您就可以设置群集。运行telnet <namenode> <port>以确保主机在所需的端口上进行通信。

1

我认为让单独的绒布子网中的节点引入一些导致此类问题的NAT相关规则。

参见下面的链接似乎有解决类似问题的 Re: Networking Problem in creating HDFS cluster.

Hadoop的使用一束用于节点之间的通信的其它端口,在上述假定这些端口解除阻塞。