【发布时间】:2021-02-05 19:42:27
【问题描述】:
我正在阅读地图缩减论文here。该论文指出,reduce 工作人员将他们的输出写入一个临时文件,然后他们以原子方式将其重命名为某个保留的输出文件名,以表明任务已完成。这在第 3.3 节(出现故障时的语义)中有所提及。
但是为什么重命名需要是原子的?这是我的猜测。
- 假设两个 reduce worker A、B 正在执行相同的任务。
- 将此任务的最终输出文件的名称设为 X。
- 工人 A 开始将其临时文件重命名为 X。
- 它不是原子的,所以工人 B 开始重命名文件。
- 工人 B 将其临时文件重命名为 X。
- 工人 A 完成将临时文件重命名为 X。
- 混乱状态?
如果这就是我们需要原子重命名的原因,那么我想知道重命名是如何工作的。否则,我想知道为什么我们需要原子重命名。
【问题讨论】:
标签: mapreduce distributed-computing distributed-system atomic acid