![Hadoop + NAT 场景](https://linux22.com/image/555621/Hadoop%20%2B%20NAT%20%E5%9C%BA%E6%99%AF.png)
我遇到过一种情况,我想在 2 个集群上运行 Hadoop。第一个集群 (ClusterA) 正常,所有节点均可公开访问。第二个集群 (ClusterB) 位于 NAT 后面。
ClusterA 中的节点将同时运行 Mapred 和 HDFS,而 ClusterB 中的节点将运行 Mapred 而不运行 HDFS,并且不允许运行 Reduce 任务。主节点(jobtracker、namenode、secondary namenode)将位于 ClusterA 中。
我的问题是:如果我不使用 JobTracker 而独立启动 ClusterB TaskTrackers bin/start-all.sh
,此设置是否可行?ClusterB 中的 TaskTrackers 将打开自己的与 JobTracker 的 C&C 连接,并应通过此连接接收 MapTask 分配。HDFS 将完全位于 ClusterA 中,因此所有节点都应该能够正常访问块。
我能想到的唯一问题是 ClusterA 中运行的 Reduce 任务试图获取存储在 ClusterB 节点上的中间数据。这是推送操作还是拉取操作?还有其他 NAT 会导致问题的场景吗?
答案1
答案是 Reduce 任务确实会拉取数据,因此需要通过 NAT 进行访问。否则它似乎可以正常工作。