通过VPN在hadoop集群之间传输数据

通过VPN在hadoop集群之间传输数据,hadoop,hdfs,vpn,Hadoop,Hdfs,Vpn,我想在两个hadoop2.6.0集群nn1和nn2之间复制一个文件。群集只能通过VPN连接,因此在namenodenn1上,我创建了一个到nn2的VPN连接(只是namenode到namenode),并在nn1上运行命令,如下所示: hadoop distcp hdfs://nn1:9000/user/hadoop/src hdfs://nn2:9000/user/hadoop/dest 上面的命令错误: Error: java.net.NoRouteToHostException: No R

我想在两个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
中的数据节点之一

是否因为群集
nn1
中的所有数据节点都没有VPN连接到
nn2
群集?我认为我只需要namenodes之间的VPN连接就可以进行集群间复制


我无法为
nn1
nn2
中的每个数据节点创建VPN连接,因为我没有那么多VPN帐户。在这种情况下,正确的做法是什么?

以下是在Hadoop中写入文件的工作原理:

  • 客户机与Namenode讨论需要复制哪些数据节点数据
  • 然后,客户机建立到数据节点的连接,数据将直接复制到数据节点
  • 然后,客户端更新有关文件的namenode元数据
  • 对于distcp,客户机是第一个集群中的所有数据节点,nn1作为namenode

  • 因此,如果您需要两个hadoop集群之间的VPN连接,那么您需要在所有节点到所有节点之间建立VPN连接。这是生产集群吗?这并不典型,在企业中,VPN需要从我们的PC连接到集群。但企业中的两个集群之间将直接连接。您不应该依赖VPN,可以使用其他替代方案在群集之间直接连接。

    谢谢您的解释。我所处的情况是,企业从外部供应商处购买了仅专用网络的集群,因此本地集群和远程集群之间没有直接连接。那么还有什么其他选择呢?