映射/减少织物
reductio的Python项目详细描述
因为映射和还原并不难。
什么是还原?
reductio是一个针对python的极简的map-reduce框架。它运行在 fabric和setuptools,您可能已经使用它们将代码放到其他 机器。
它没有数据库。它没有分布式文件系统。它不使用其他服务器 比sshd。因此,它基本上没有内存需求!
reductio是为磁盘绑定的大数据任务而设计的,其中许多任务都是这样。如果 你需要映射的部分完全适合你的工人 电脑,你为此付出了巨大的代价。如果他们没有,一个系统 试图在ram中缓冲东西的做法将浪费它所有的精力。在 有一点,你不会再看到你的数据,除非你把它写到该死的磁盘上, 这就是大部分时间要做的。
我创造还原是出于绝对的需要,所以我可以开始计算 数据。您可能会注意到它的文档实际上是不存在的。 时刻。 还原做什么 ———-- 还原延伸结构(http://fabfile.org)。它是为了支持 遵循近似过程:
- 在所有工作机上设置适当的python环境, 包括必需的包、保存数据的位置和最新的 要运行的代码的版本。
- 告诉每台工人机器如何联系所有其他机器,这样他们就可以 当他们处理完数据后,再把它们发送出去。
- 为每台工作机提供一些python函数来运行所有数据。 这些通常是“地图”或“减少”。
- 使用unix的 极其优化的排序命令。
示例
reducetio/example/fabfile.py是如何计算所有字母的示例 无处不在的“words”文件中的bigrams(相邻字母对),以及 把它们聚合成一个频率表。
运行任务
如果您有一个任务定义为mymodule.py中的函数 首先,要运行安装程序以确保代码和其他内容符合 日期,您可以使用以下命令运行它们:
fab -f mymodule setup do_stuff
为什么不做Hadoop?
面对现实,如果你知道如何配置hadoop并让代码运行它, 你现在就这么做。
另外,hadoop是为java程序员编写的,python显然是 世界上的二等公民。hadoop似乎认为所有的python代码 采取独立脚本的形式,没有依赖关系,这可能是 说明了java程序员对python的看法。
reducetio意识到除非你有 正确的python设置,因此它构建在python程序员已经使用的工具上 部署他们的代码。
为什么不跳迪斯科呢?
我赞成迪斯科项目(http://discoproject.org)及其目标 创建一个围绕python设计的map-reduce生态系统,但我也发现了 复杂和太“神奇”的时刻。
这使得我们很难理解它的内部情况,然而 当出了问题或者你想的时候,你必须了解它的内在 做一些设计师没想到的事情。