clojure:使用多台计算机进行并行处理

clojure: parallel processing using multiple computers

我有 500 个目录,每个目录有 1000 个文件(每个大约 3-4k 行)。我想在这些文件中的每一个上运行 same clojure 程序(已经编写)。我有 4 个八核服务器。在这些核心之间分配流程的好方法是什么? cascalog(hadoop + clojure)?

基本上,程序读取 a 文件,使用第 3 方 Java jar 进行计算,并将结果插入 DB

请注意:1. 必须能够使用第 3 方 libraries/jar 2.没有任何查询

因为据我所知,您的整个过程没有 "reduce" 阶段,所以在每个服务器上放置 125 个目录,然后将剩余的时间花在尝试让这个程序处理它们上是有意义的快点。当然,直到您使数据库饱和为止。

大多数 "big-data" 可用工具(Hadoop、Storm)都专注于需要非常强大的 map 和 reduce 操作的流程,每个流程可能有多个阶段。您真正需要的是一种体面的方式来跟踪哪些工作通过了,哪些没有通过。在预测开发时间方面,我和任何人一样糟糕(并且比许多人更糟糕),但在这种情况下,我会说在其中一个 map-reduce-esque 工具上重写你的过程将比添加更长的时间一个监控过程,用于跟踪哪些作业已完成,哪些作业失败,以便您稍后可以重新运行失败的作业(最好是自动运行)。

Onyx 是最近 Hadoop/Storm 的纯 Clojure 替代品。只要您熟悉 Clojure,使用 Onyx 就非常简单。您应该尝试一下这种数据驱动的方法:

https://github.com/MichaelDrogalis/onyx