在Hadoop中,如果中间数据(即Mapper溢出输出)丢失,会发生什么?

时间:2018-12-01 02:36:46

标签: hadoop mapreduce hdfs data-loss

Hadoop存储中间数据-根据here中的设置mapreduce.cluster.local.dir指定,溢出的映射器输出到本地磁盘中。

所以让我们说Hadoop的工作已经到了减少阶段的一半,并且集群中的一台机器死了。这意味着:

  1. reducer任务上的所有进度/数据都丢失了
  2. 该机器的本地文件系统上存储的所有中间映射器输出数据都丢失了
  3. 您必须重新运行其输出数据在(2)中丢失的所有映射器,然后重做Shuffle阶段以将所有数据放入在(1)中死亡的化简器中,然后当然要重新运行化简器任务。

我的问题是这个:

  • 这种推理正确吗?这是否意味着即使有1台机器在Hadoop作业中发生故障,您实际上也将作业总运行时间增加了一倍?
  • 如果机器故障很常见,例如,如果您在经常被中断的竞价型实例(在AWS上或其他方式)上运行,是否将中间输出存储在本地文件系统上而不是HDFS上有意义?
  • Hadoop是否知道重新运行丢失其输出的映射器?如果其他reducer死后仍在从那些mapper中获取数据,它们会暂停执行吗?

谢谢

Arwin

0 个答案:

没有答案