我想在两个hadoop2.6.0集群之间复制一个文件 nn1
以及 nn2
. 群集只能通过vpn连接,所以namenode nn1
我创建了到的vpn连接 nn2
(只是namenode到namenode)然后我在 nn1
如下所示:
hadoop distcp hdfs://nn1:9000/user/hadoop/src hdfs://nn2:9000/user/hadoop/dest
以上命令错误:
Error: java.net.NoRouteToHostException: No Route to Host from dn1/127.0.1.1 to nn2:9000 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host;
哪里 dn1
是群集中的数据节点之一 nn1
.
是不是因为集群中没有我的数据节点 nn1
vpn是否连接到 nn2
集群?我认为我只需要namenodes之间的vpn连接就可以进行集群间的复制。
我无法为中的每个数据节点创建vpn连接 nn1
至 nn2
,因为我没有那么多vpn帐户。在这种情况下,正确的做法是什么?
1条答案
按热度按时间zysjyyx41#
以下是在hadoop中写入文件的工作原理:
客户机与namenode讨论需要复制哪些数据节点
然后,客户机建立到数据节点的连接,数据将直接复制到数据节点
然后,客户端更新有关文件的namenode元数据
对于distcp,client是第一个集群中的所有数据节点,nn1是namenode
因此,如果您需要两个hadoop集群之间的vpn连接,那么您需要在所有节点到所有节点之间建立vpn连接。这是生产集群吗?这是不典型的,在企业vpn需要连接到集群从我们的pc。但将有直接连接的两个集群之间的企业。您不应该依赖于vpn,可以使用其他替代方法在集群之间建立直接连接。