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

时间:2015-01-02 12:00:46

标签: hadoop clojure parallel-processing cascalog

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

基本上,程序读取 a 文件,使用第三方Java jar进行计算,并将结果插入到数据库中

请注意:1。能够使用第三方库/ jar是强制性的 2.没有任何种类的查询

2 个答案:

答案 0 :(得分:1)

因为根据我的理解,整个过程没有“减少”阶段,所以在每台服务器上放置125个目录是有意义的,然后花时间尝试让这个程序更快地处理它们。当然,直到你让DB饱和的程度。

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

答案 1 :(得分:1)

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

https://github.com/MichaelDrogalis/onyx