4

是否可以告诉 HDFS在哪里存储特定文件?

用例

我刚刚将第 1 批文件加载到 HDFS 中,并希望在这些数据上运行作业/应用程序。但是,我还有一批 #2仍然要加载。如果我可以在第一批运行作业/应用程序,例如从 1 到 10 的节点,并将新数据加载到节点,例如,11 到 20,完全并行,那就太好了。

最初我认为NameNode 联合(Hadoop 2.x)正是这样做的,但看起来联合只拆分命名空间,而 DataNode 仍然为所有连接的 NameNode 提供块。

那么,有没有办法控制HDFS中的数据分布呢?这有意义吗?

4

1 回答 1

7

从技术上讲,你可以,但我不会。

如果您想完全控制数据的去向,您可以扩展BlockPlacementPolicy(查看hdfs 如何选择要存储的数据节点)。这并不容易,我不推荐它。

您可能可以采取一些措施,通过一些巧妙的设置来最大限度地减少两组节点之间的流量,以利用机架感知来发挥您的优势。

于 2013-06-24T15:24:16.667 回答