【发布时间】:2015-08-28 11:22:22
【问题描述】:
我是 Hadoop 世界的新手,最近我被一个面试问题卡住了。
Q- 如果作业跟踪器发现任何特定的任务跟踪器需要很长时间才能完成分配给它的任务,作业跟踪器是否会暂停该任务跟踪器的执行并分配相同作业的新执行另一个任务跟踪器或它将做什么?
没有网络错误,并且子 JVM 正在正常执行。 Job-Tracker 是否允许 Task-Tracker 永远执行该作业?
谢谢。
【问题讨论】:
标签: hadoop
我是 Hadoop 世界的新手,最近我被一个面试问题卡住了。
Q- 如果作业跟踪器发现任何特定的任务跟踪器需要很长时间才能完成分配给它的任务,作业跟踪器是否会暂停该任务跟踪器的执行并分配相同作业的新执行另一个任务跟踪器或它将做什么?
没有网络错误,并且子 JVM 正在正常执行。 Job-Tracker 是否允许 Task-Tracker 永远执行该作业?
谢谢。
【问题讨论】:
标签: hadoop
如果启用了推测执行,相同的任务将被分配给另一个 tasktracker 而不会杀死现有的任务。首先完成的任务的输出将被获取,另一个将被杀死。默认情况下,这是启用的。有两个属性定义了这种性质
在新的 API 中,属性是
mapreduce.map.speculative
mapreduce.reduce.speculative
在旧 API 中
mapred.map.tasks.speculative.execution
mapred.reduce.tasks.speculative.execution
如果推测执行为假,并且任务运行良好且进度正常,则作业跟踪器将允许任务继续。
如果任务没有进行,它将等待属性mapreduce.task.timeout 定义的时间,然后终止任务。它将在其他节点重试相同的任务。重试次数由属性mapreduce.map.maxattempts 和mapreduce.reduce.maxattempts 定义。
【讨论】: