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

我想知道Java领域中是否存在一些对于作业的分布式执行来说不容易表达为MapReduce问题的东西?例如:

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

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

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

有帮助吗?

解决方案

我从此发现 春季批次Spring批量集成 这似乎满足了我的许多要求。我会让你知道我的进展如何。

其他提示

看一眼 石英. 。我认为它支持远程管理作业和集群多台机器来运行作业等功能。

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

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

对于无法修改以适应结构的问题,您可以考虑使用 Java 来设置自己的结构 执行服务. 。但它仅限于一个 JVM,而且级别相当低。然而,它将允许轻松的协调和同步。

主动调度程序 似乎符合您的要求,特别是您提到的任务协调的复杂工作流程。它是开源的并且基于 Java。您可以使用它来运行任何内容,Hadoop 作业、脚本、Java 代码……

免责声明:我为 公司 在它后面

尝试 雷迪森 框架。它提供了简单的 API 来执行和安排 java.util.concurrent.Callablejava.lang.Runnable 任务。这是有关分布式的文档 执行人服务调度服务

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top