跳转到主要内容

一个纯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故障有鲁棒性。

项目详情


由以下赞助商支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面