是否为失败的Map任务调用cleanup()方法?

kx7yvsdv  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(304)

是否为失败的Map任务调用cleanup()方法?如果是,它如何确保“原子性”?
在我的例子中,我正在mapper中准备一些统计信息,这些统计信息在cleanup()方法中写入db。在这种情况下,如果Map器在执行其输入拆分时失败,cleanup方法将把处理后的数据写入db?这将导致不正确的统计信息,因为备用Map程序尝试也会再次写入相同的数据。

relj7zay

relj7zay1#

根据Map程序失败的时间,可能会调用或不调用清除。例如,如果Map器在map方法中失败,则不会调用清除。但是,如果Map器在cleanup方法中失败,那么已经调用了cleanup。
如果Map器失败,hadoop通常会在另一台机器上重新启动Map器任务。因此,您需要确保多次运行Map器或还原器总是输出相同的结果,否则很难进行调试。
根据您的情况,您可以设置一些计数器来收集统计数据,并在作业成功后读取计数器。如果某个Map器失败,则部件计数器将退出。工作成功后的计数器将保证正确。

相关问题