一个纯Python的高度分布式MapReduce集群。
项目描述
在刚刚阅读完原始的GoogleMapReduce论文后,显然我感到需要尝试在Python中实现这样一个系统。
我的目标是实现论文中描述的功能的一部分,尽管我强烈警告不要将此代码用于任何真实的事情。
由于目标之一(见以下目标)是从最终用户的角度来看简单易用,因此我遵循了Kenneth Reitz的建议,并从readme和文档开始。
示例
经典的单词计数示例
# myjob.py from pluribus import job @job.map_ def emit_words(key, value): # key: document name # value: document contents for word in value.split(): yield word, 1 @job.reduce_ def sum_occurences(key, values): # key: a word # values: a list of counts return sum(values)
假设你在同一台主机上运行一切,你可以忽略网络连接信息。
启动pluribus master
$ pluribus master
启动pluribus worker(或数百个)
$ pluribus worker
在master上或在可以与master通信的机器上
$ pluribus job myjob # ... wait <results>
目标
明确的目标是
简单易用,无论是管理员还是最终用户。
良好的文档。
对worker故障有鲁棒性。
足够快。
仅使用Python(2.7+)标准库(至少用于运行)。
明确非目标是
成为文件系统。
对master故障有鲁棒性。