是否为失败的Map任务调用cleanup()方法?如果是,它如何确保“原子性”?在我的例子中,我正在mapper中准备一些统计信息,这些统计信息在cleanup()方法中写入db。在这种情况下,如果Map器在执行其输入拆分时失败,cleanup方法将把处理后的数据写入db?这将导致不正确的统计信息,因为备用Map程序尝试也会再次写入相同的数据。
relj7zay1#
根据Map程序失败的时间,可能会调用或不调用清除。例如,如果Map器在map方法中失败,则不会调用清除。但是,如果Map器在cleanup方法中失败,那么已经调用了cleanup。如果Map器失败,hadoop通常会在另一台机器上重新启动Map器任务。因此,您需要确保多次运行Map器或还原器总是输出相同的结果,否则很难进行调试。根据您的情况,您可以设置一些计数器来收集统计数据,并在作业成功后读取计数器。如果某个Map器失败,则部件计数器将退出。工作成功后的计数器将保证正确。
1条答案
按热度按时间relj7zay1#
根据Map程序失败的时间,可能会调用或不调用清除。例如,如果Map器在map方法中失败,则不会调用清除。但是,如果Map器在cleanup方法中失败,那么已经调用了cleanup。
如果Map器失败,hadoop通常会在另一台机器上重新启动Map器任务。因此,您需要确保多次运行Map器或还原器总是输出相同的结果,否则很难进行调试。
根据您的情况,您可以设置一些计数器来收集统计数据,并在作业成功后读取计数器。如果某个Map器失败,则部件计数器将退出。工作成功后的计数器将保证正确。