如何在不同的节点上存储映射简化的输出?



我想在hadoop的不同节点存储分类数据。

,

Node - 1 >> Animal.txt
Node - 2 >> Sports.txt
Node - 3 >> Life.txt
.
.
.
Node - n >> nnnnn.txt

有办法吗?

可以对数据进行分区,以便每个子集(动物、运动、生活)位于同一节点的本地,尽管您不能可靠地选择存储它们的物理节点的标识。

只要您可以编程地将每个记录标识为集合(动物、运动、生活等)的一部分,那么您就可以实现您自己的Partitioner。这类似于实现一个哈希函数,其中具有相同哈希码的所有键将由相同的reducer减少。

[Raw Input] -> [Identity Mapper] ->[您的自定义分区器]-> [Identity Reducer]

正如其他用户提到的,HDFS默认会将输出数据复制到其他节点。因此,在这种情况下,如果希望保证数据的局部性,就必须禁用复制。当然,这是以容错为代价的。

通过将文件存储在特定节点上,您击败了HDFS的要点-它有冗余副本。我不认为你必须使用HDFS。您可以创建一个reduce作业来写本地文件系统,但我不建议这样做。

底层数据存储设施(HDFS)完全隐藏了数据实际存储的位置。因此,知道这是为你的应用程序一个"你不需要知道这个"。

另一方面,我很好奇你为什么要控制这个?

相关内容

  • 没有找到相关文章

最新更新