是否可以告诉HDFS 存储特定文件的位置?
用例
我刚刚将第1批文件加载到HDFS中,并希望在这些数据上运行作业/应用程序。但是,我还有第2批仍然需要加载。如果我可以在第一批上运行作业/应用程序,比如从1到10的节点,并将新数据加载到节点(例如11到20,完全并行),那将是很好的。
最初我认为NameNode federation(Hadoop 2.x)就是这样做的,但看起来联邦只会拆分命名空间,而DataNodes仍然为所有连接的NameNode提供块。
那么,有没有办法控制HDFS中的数据分发?它有意义吗?
答案 0 :(得分:7)
从技术上讲,你可以,但我不会。
如果您想完全控制数据的去向,可以扩展BlockPlacementPolicy
(请参阅how does hdfs choose a datanode to store)。这不容易做到,我不推荐它。
您可以采取措施尽量减少两组节点之间的流量,并通过一些巧妙的设置来利用机架感知。