10

我最近玩了Hadoop,对 MapReduce 作业的调度、管理和报告印象深刻。它似乎使新作业的分配和执行非常无缝,使开发人员可以专注于他们的作业的实施。

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

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

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

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

4

6 回答 6

4

从那以后,我发现Spring BatchSpring Batch Integration似乎可以满足我的许多需求。我会让你知道我是怎么过的。

于 2010-01-04T15:40:55.100 回答
3

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

于 2009-12-17T14:28:51.330 回答
0

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

于 2009-12-16T14:21:53.633 回答
0

我相信相当多的问题可以表示为 map-reduce 问题。

对于无法修改以适应结构的问题,您可以查看使用 Java 的ExecutorService设置自己的问题。但它将仅限于一个 JVM,而且级别非常低。但是,它将允许轻松协调和同步。

于 2009-12-16T14:26:53.670 回答
0

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

免责声明:我为它背后的公司工作

于 2014-03-26T13:48:51.463 回答
0

试试Redisson框架。它提供了简单的 api 来执行和安排java.util.concurrent.Callable任务java.lang.Runnable。这是关于分布式执行器服务调度器服务的文档

于 2016-08-25T14:11:15.993 回答