我正在运行一个单节点集群并处理时间序列数据。我有一组从客户端应用程序定期运行(使用Quartz crontrigger)的MapReduce作业。例如,
job1 : runs every 10 min .priority VERY_HIGH
job2 : runs every hour (it takes input from the output of job1).priority HIGH
job3 : runs every day(it takes input from the output of job2).priority NORMAL
.....
一切正常。但是有时候,可以同时触发多个作业,例如,在上午00:00时将触发job1,job2,job3。即使设置了优先级作业(由于可用的映射槽位),这些作业也被并行执行。因此,低优先级作业缺少一些输入数据。
简介:我需要根据作业优先级严格在FIFO中执行。这意味着应该以每次只能运行一个作业的方式进行限制。即作业1完成,然后作业2完成,作业3 ..
我不知道hadoop调度程序可以如何帮助我。请指教。
最佳答案
尝试将这些设置更改为1:
mapred.tasktracker.map.tasks.maximum 1
mapred.tasktracker.reduce.tasks.maximum 1
如果将Mapper和Reducer的数量限制为1,则下一个作业必须等待下一个Mapper完成。如果您看,这不是一个好的解决方案。
使用Oozie工作流引擎将最适合您的需求。
关于hadoop - 如何依次依次运行MapReduce作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21898559/