我是Hadoop世界的新手,最近我遇到了一个面试问题。
问题 - 如果作业跟踪器发现任何特定任务 - 跟踪器花费很长时间完成分配的任务,那么作业跟踪器是否会暂停执行该任务跟踪器并分配相同作业的新执行另一个任务 - 跟踪器或它将做什么?
没有网络错误,子JVM正在正常执行。 Job-Tracker是否允许Task-Tracker永远执行该工作?
日Thnx。
答案 0 :(得分:0)
如果启用了推测执行,则会将同一任务分配给另一个任务跟踪器,而不会终止现有任务。首先完成的任务的输出将被取消,另一个将被杀死。默认情况下启用此功能。有两个属性定义了这种性质
在新API中,属性为
mapreduce.map.speculative
mapreduce.reduce.speculative
在旧API中
mapred.map.tasks.speculative.execution
mapred.reduce.tasks.speculative.execution
如果推测执行为假,并且任务运行正常并且进度正常,则jobtracker将允许该任务继续。
如果任务没有进展,它将等待属性mapreduce.task.timeout
定义的时间,它将终止任务。它将在其他节点中重试相同的任务。重试次数由属性mapreduce.map.maxattempts
和mapreduce.reduce.maxattempts
定义。