我正在寻找一个开源 Java 作业调度程序,它允许发送不同类型的作业(不仅是 flop 密集型的)并将它们分布在多台机器上。它还应该监视作业并在任何作业失败或从节点崩溃时在不同节点上重试。我也很欣赏类似于 OpenMP 或 MPI 的负载平衡。理想情况下,您应该能够传入作业依赖图,并且作业将以拓扑排序的方式进行处理,并且应尽可能进行并行化。
我所知道的最接近的匹配是 Quartz,但它只允许按时间安排单个作业,并且没有远程处理、故障转移、负载平衡和依赖处理能力。
这样的解决方案可以构建在 Quartz 和 MOM 服务器(例如 ActiveMQ)之上,但我想确保在构建它之前首先没有任何东西。
可能 MapReduce 端口到 Java 也可以。