2015-08-28 67 views
1

我是Hadoop世界的新手,最近我遇到了面试问题。hadoop jobtracker如何处理长时间运行的任务

Q-如果作业追踪器发现任何特定任务 - 追踪器花费很长时间完成分配给它的任务,作业追踪器是否会使用该任务追踪器暂停执行并分配相同作业的新执行在另一个任务 - 追踪器或它会做什么?

没有网络错误,并且子JVM正在正确执行。 Job-Tracker是否允许Task-Tracker永久执行该作业?

Thnx。

回答

0

如果启用投机执行,则同一任务将分配给另一个任务跟踪器,而不会杀死现有任务。首先完成的任务的输出将被采用,另一个将被杀死。默认情况下启用。有定义这种性质

在新的API两个属性,该属性是

mapreduce.map.speculative 
mapreduce.reduce.speculative 

在旧的API

mapred.map.tasks.speculative.execution 
mapred.reduce.tasks.speculative.execution 

如果该推测执行是假的,如果任务运行良好如果有适当的进展,求职者将允许任务继续下去。

如果任务没有进行,它将等待由属性mapreduce.task.timeout定义的时间,并且它将终止该任务。它会在其他节点重试相同的任务。重试次数由属性mapreduce.map.maxattemptsmapreduce.reduce.maxattempts定义。