有没有可能告诉hdfs在哪里存储特定的文件?
用例
我刚刚将一批文件加载到hdfs中,并希望对这些数据运行作业/应用程序。但是,我还有第2批仍在加载中。如果我能在第一批上运行作业/应用程序,比如说,在1到10个节点上运行,并将新数据完全并行地加载到11到20个节点上,那就太好了。
起初我认为namenode联合(hadoop2.x)确实做到了这一点,但看起来联合只是拆分名称空间,而datanodes仍然为所有连接的namenodes提供块。
那么,有没有一种方法可以控制hdfs中数据的分布呢?这有意义吗?
1条答案
按热度按时间zdwk9cvp1#
严格来说,你可以,但我不会。
如果您想完全控制数据的去向,可以扩展
BlockPlacementPolicy
(请参见hdfs如何选择要存储的数据节点)。这不容易做到,我不推荐。您可以采取一些措施,通过一些巧妙的设置,使两组节点之间的通信量最小化,从而使机架感知发挥优势。