【问题标题】:Distributed Job scheduling, management, and reporting分布式作业调度、管理和报告
【发布时间】:2009-12-16 14:12:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java hadoop distributed-computing job-scheduling


    【解决方案1】:

    我后来发现Spring BatchSpring Batch Integration 似乎可以满足我的许多要求。我会告诉你我的进展情况。

    【讨论】:

    • Spring Batch 如何像 Hadoop 一样帮助跨集群并行工作?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 2015-01-06
              • 2020-09-15
              • 1970-01-01
              • 2015-01-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-01-04
              • 1970-01-01
              相关资源
              最近更新 更多