我想在两个hadoop2.6.0群集nn1
和nn2
之间复制文件。群集只能通过VPN连接,所以在namenode nn1
上我创建了一个到nn2
的VPN连接(只是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
中的datanode之一。
是否因为群集nn1
中的所有数据节点都没有连接到nn2
群集的VPN?我认为我只需要在名称节点之间建立VPN连接以进行群集间复制。
我无法为nn1
到nn2
中的每个数据节点创建VPN连接,因为我没有那么多VPN帐户。在这种情况下做什么是正确的方法?
答案 0 :(得分:2)
以下是Hadoop中写入文件的方式:
因此,如果您需要两个hadoop集群之间的VPN连接,那么您需要在所有节点之间建立VPN连接到所有节点。这是生产集群吗?在典型的企业中,VPN需要从我们的PC连接到集群。但是企业中的两个集群之间将存在直接连接。您不应该依赖VPN,可以有其他替代方案在集群之间建立直接连接。