我有一些昂贵的工作,非常适合在map-and-reduce模型下运行(长话短说,就是将之前通过某种耗时算法计算的几百个排名汇总起来)。在
我想在集群上并行化这些作业(不仅仅是多处理),并将重点放在两个实现上:Celery和Disco。Celery不支持NaiveMap和reduce开箱即用,尽管“map”部分很容易使用TaskSet完成,但如何有效地实现“reduce”部分?在
(我对disco的问题是它不能在Windows上运行,而且我已经为程序的另一部分设置了celery,因此运行另一个map reduce框架似乎相当不雅观。)
Tags:
请看下面的博客。在
http://mikecvet.wordpress.com/2010/07/02/parallel-mapreduce-in-python/
基本上,您需要获取一个任务的输出,并将其作为输入应用于另一个任务。芹菜用起来不方便。在
以celery的方式,您可以有一个周期性的任务调度器,它以异步的方式执行作业(映射部分),如果任务引用是单台计算机,或者将引用发布到DB backend(redis/mongo/etc)。您可能需要调度程序来收集此结果并应用于reduce函数。在
我想说的是,您在所有集群上运行自己的python进程来执行map和reduce,并确保将结果存储在类似redis的内存db中,并使用celery来执行map和reduce上的任务。你的主要过程将收集并合并结果。在
相关问题 更多 >
编程相关推荐