Hadoop存储中间数据-根据here中的设置mapreduce.cluster.local.dir
指定,溢出的映射器输出到本地磁盘中。
所以让我们说Hadoop的工作已经到了减少阶段的一半,并且集群中的一台机器死了。这意味着:
- reducer任务上的所有进度/数据都丢失了
- 该机器的本地文件系统上存储的所有中间映射器输出数据都丢失了
- 您必须重新运行其输出数据在(2)中丢失的所有映射器,然后重做Shuffle阶段以将所有数据放入在(1)中死亡的化简器中,然后当然要重新运行化简器任务。
我的问题是这个:
- 这种推理正确吗?这是否意味着即使有1台机器在Hadoop作业中发生故障,您实际上也将作业总运行时间增加了一倍?
- 如果机器故障很常见,例如,如果您在经常被中断的竞价型实例(在AWS上或其他方式)上运行,是否将中间输出存储在本地文件系统上而不是HDFS上有意义?
- Hadoop是否知道重新运行丢失其输出的映射器?如果其他reducer死后仍在从那些mapper中获取数据,它们会暂停执行吗?
谢谢
Arwin