在 Hadoop MapReduce 中是否可能存在以下架构?
使用分布式键值存储 (HBase)。因此,除了值之外,还会有一个与值关联的时间戳。 Map & Reduce 任务迭代执行。 map ,在每次迭代中应该接受在前一次迭代中添加到商店的值(也许是具有最新时间戳的值?)。 Reduce 应该接收 Map 的输出以及存储中的键与 reduce 在当前迭代中必须处理的键匹配的对。 reduce 的输出进入商店。
如果可能,应扩展哪些类(例如:InputFormat、Reduce 的 run()),以便代替常规操作进行上述操作。如果这是不可能的,是否有任何替代方法可以实现同样的目标?
最佳答案
因此您在第 n-1 次迭代中的“存储”可能是这样的:
键(时间戳 | 值)
a 1|x, b 2|x, c 3|x, d 4|x
在第 n 次迭代中,添加了这些对: ... b 5|x, d 6|x
映射器会找到这 2 条记录,因为时间戳 > 4 并将其放入中间结果
reducer 现在会发现,对于这两条记录,在 n-1 存储中还有另外两条匹配记录: b 2|x, d 4|x
因此,reduce 阶段的输出将是(无论顺序如何): b 5|x, d 6|x, b 2|x, d 4|x
这是你想要的吗?
关于hadoop - 这种架构在 Hadoop MR 中可行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2261123/