分布式作业调度,管理和报告

时间:2009-12-16 14:12:05

标签: java hadoop distributed-computing job-scheduling

我最近玩过Hadoop,并对MapReduce作业的日程安排,管理和报告印象深刻。它似乎使新工作的分配和执行非常无缝,使开发人员能够专注于他们的工作实施。

我想知道Java域中是否存在任何不容易表示为MapReduce问题的作业的分布式执行?例如:

  • 需要任务协调和同步的作业。例如,它们可能涉及顺序执行任务,但同时执行某些任务是可行的:

                   .-- B --.
            .--A --|       |--.
            |      '-- C --'  |
    Start --|                 |-- Done
            |                 |
            '--D -------------'
    
  • 您要分发的CPU密集型任务但不提供任何减少的输出 - 例如图像转换/调整大小。

那么是否有提供这种分布式计算环境的Java框架/平台?或者这种事情是否可以使用Hadoop接受/实现 - 如果有的话,这些工作有哪些模式/指南?

6 个答案:

答案 0 :(得分:3)

此后我发现Spring BatchSpring Batch Integration似乎解决了我的许多要求。我会告诉你我是怎么过的。

答案 1 :(得分:2)

看看Quartz。我认为它支持远程管理作业和集群多台机器来运行作业等内容。

答案 2 :(得分:0)

我猜您正在为CPU密集型任务寻找工作流引擎(也知道“科学工作流程”,例如http://www.extreme.indiana.edu/swf-survey)。但我不确定你希望它是多么分散。通常所有工作流引擎都有“单点故障”。

答案 3 :(得分:0)

我相信很多问题可以表达为map-reduce问题。

对于无法修改以适应结构的问题,您可以查看使用Java ExecutorService设置自己的问题。但它将仅限于一个JVM,它将是相当低的水平。然而,这将允许容易的协调和同步。

答案 4 :(得分:0)

ProActive Scheduler似乎符合您的要求,尤其是您在任务协调时提到的复杂工作流程。 它是开源的,基于Java的。您可以使用它来运行任何东西,Hadoop作业,脚本,Java代码......

免责声明:我为其背后的company工作

答案 5 :(得分:0)

尝试Redisson框架。它提供了轻松的api来执行和安排java.util.concurrent.Callablejava.lang.Runnable任务。以下是有关分布式Executor serviceScheduler service

的文档