gpt4 book ai didi

hadoop - 重复的任务被杀死

转载 作者:可可西里 更新时间:2023-11-01 16:26:50 25 4
gpt4 key购买 nike

在我将作业提交到 Hadoop 集群并且作业输入在节点之间拆分后,我可以看到一些任务得到了两次并行运行的尝试。

例如在节点 39 任务尝试 attempt_201305230321_0019_m_000073_0启动并在 3 分钟内 attempt_201305230321_0019_m_000073_1在节点 25 开始。在额外的 4 分钟内,第一次尝试 ( attempt_201305230321_0019_m_000073_0) 被杀死(没有任何通知,日志不包含任何信息),第二次尝试在半小时内成功完成。

这是怎么回事?如何防止创建重复尝试?这些重复的尝试是否可能导致神秘的杀戮?

最佳答案

你开启推测执行了吗?您可以使用以下代码来阻止它:

job.getConfiguration().setBoolean(                                                                                                                 
"mapred.map.tasks.speculative.execution", false);
job.getConfiguration().setBoolean(
"mapred.reduce.tasks.speculative.execution", false);

这里是关于推测执行的定义,来自Hadoop document :

推测执行:Hadoop 系统的一个问题是,通过将任务划分到多个节点,少数慢速节点可能会限制程序其余部分的速率。例如,如果一个节点的磁盘 Controller 速度较慢,那么它读取输入的速度可能仅为所有其他节点的 10%。所以当99个map任务已经完成时,系统还在等待最后一个map任务的check in,这个时间比其他所有节点都要长很多。

通过强制任务彼此隔离运行,单个任务不知道它们的输入来自哪里。任务信任 Hadoop 平台来提供适当的输入。因此,可以并行处理相同的输入多次,以利用机器能力的差异。当作业中的大部分任务即将结束时,Hadoop 平台将在没有其他工作要执行的多个节点上调度剩余任务的冗余副本。此过程称为推测执行。当任务完成时,他们向 JobTracker 宣布这一事实。任务的最先完成的副本成为最终副本。如果其他副本正在推测性地执行,Hadoop 会告诉 TaskTrackers 放弃任务并丢弃它们的输出。然后,Reducers 首先从成功完成的 Mapper 接收输入。

默认情况下启用推测执行。您可以通过将 mapred.map.tasks.speculative.execution 和 mapred.reduce.tasks.speculative.execution JobConf 选项分别设置为 false 来禁用映射器和缩减器的推测执行。

关于hadoop - 重复的任务被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16775655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com