hadoop将中间数据溢出Map器输出存储到本地磁盘中,如设置所指定 mapreduce.cluster.local.dir
在这里。
因此,假设hadoop作业已经过了reduce阶段的一半,集群中的一台机器就死了。这意味着:
减速机任务的所有进度/数据都将丢失
存储在该机器本地文件系统上的所有中间Map器输出数据都将丢失
您必须重新运行(2)中输出数据丢失的所有Map器,然后重新执行shuffle阶段,将所有数据放入(1)中的reducer中,然后当然要重新运行reducer任务。
我的问题是:
这个推理正确吗?这是否意味着即使一台机器在hadoop作业中出现故障,也会使总作业运行时间增加一倍?
如果机器故障很常见,例如,如果您运行的是经常中断的现场示例(在aws或其他系统上),那么将中间输出存储在hdfs上而不是本地文件系统上有意义吗?
hadoop知道重新运行丢失输出的Map程序吗?如果其他还原程序在死后仍在从这些Map程序获取数据,它们会暂停执行吗?
谢谢,
阿文
暂无答案!
目前还没有任何答案,快来回答吧!