在弹性 mapreduce 流作业中,如果 mapper 突然挂掉会发生什么?已经处理过的数据会被重播?如果是这样,是否有任何选项可以禁用它?

我问是因为我正在使用 EMR 将一些数据插入第三方数据库。每个映射器发送通过 HTTP 传入的数据。在这种情况下,如果映射器崩溃,我不想重播 HTTP 请求,我需要从我离开的地方继续。

请您参考如下方法:

MR 是一个容错框架。当 Map 任务失败时(流式 API 或 Java API),行为是相同的。

一旦作业跟踪器收到任务失败的通知,它将尝试重新安排任务。失败任务生成的临时输出被删除。

关于MR中如何处理失败的更详细的讨论可见here

对于您的特殊情况,我认为您需要在 setup() 方法中引用外部资源以找出已处理的记录,然后在 mapper() 方法中使用此信息来决定特定记录是否应该是否被处理。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!