如何在不同的节点中存储mapreduce输出???

时间:2011-10-31 07:05:51

标签: hadoop mapreduce

我想在hadoop的不同节点中存储catagorized数据。

例如:

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

有没有办法做到这一点。

**如果我的描述很薄,请抱歉。

3 个答案:

答案 0 :(得分:1)

有可能对数据进行分区,以便每个子集(动物,运动,生命)对同一节点是本地的,尽管您无法可靠地选择存储它们的物理节点的身份。

只要你能以编程方式将每个记录识别为一组(动物,运动,生活等等),那么你就可以实现自己的Partitioner。这类似于实现散列函数,其中具有相同散列码的所有键将由相同的缩减器减少。

[原始输入] - > [身份映射器] - > [您的自定义分区程序] - > [身份减速机]

正如其他用户所提到的,HDFS默认会将输出数据复制到其他节点。因此,如果要保证数据位置,则必须在此情况下禁用复制。当然,这是以容错为代价的。

答案 1 :(得分:0)

通过在特定节点上存储您正在击败HDFS点的文件 - 它具有冗余副本。我不认为你必须使用HDFS。您可以创建一个写入本地文件系统的reduce作业,但我不推荐它。

答案 2 :(得分:0)

底层数据存储设施(HDFS)完全隐藏了实际存储数据的位置。所以知道这对你的应用来说是“你不应该知道这个”。

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