小集群的工作分配。

mycloud的Python项目详细描述


我的云

利用小机群提高生产率。

mycloud不需要预先设置;如果您可以ssh到您的计算机,那么 它会开箱即用的。mycloud当前导出一个 具有几种常见输入格式的MapReduce API;添加对 自己的也很容易。

用法

启动群集:

import mycloud

cluster = mycloud.Cluster(['machine1', 'machine2'])

# or use defaults from ~/.config/mycloud
# cluster = mycloud.Cluster()

在列表上映射:

result = cluster.map(compute_factors, range(1000))

clientfs使得访问本地文件变得无缝!

def my_worker(filename):
  do_work(mycloud.fs.FS.open(filename, 'r'))

cluster.map(['client:///my/local/file'], my_worker)

使用MapReduce接口轻松处理较大的 数据集:

from mycloud.mapreduce import MapReduce, group
from mycloud.resource import CSV
input_desc = [CSV('client:///path/to/my_input_%d.csv') % i for i in range(100)]
output_desc = [CSV('client:///path/to/my_output_file.csv')]

def map_identity(kv_iter, output):
  for k, v in kv_iter:
    output(k, int(v[0]))

def reduce_sum(kv_iter, output):
  for k, values in group(kv_iter):
    output(k, sum(values))

mr = MapReduce(cluster, map_identity, reduce_sum, input_desc, output_desc)

result = mr.run()

for k, v in result[0].reader():
  print k, v

性能

请记住,它完全是用python编写的。

一些简单的操作(6台机器,96核):

  • 对十亿个数字进行排序:~500万
  • 预处理130万张图像(调整大小和筛选特征 提取):~1小时

输入格式

mycloud内置了处理以下文件类型的支持:

  • 级别数据库
  • CSV
  • 文本(行)
  • 拉链

添加对自己的支持很简单-只需编写一个资源类 描述如何获得读者和作家。(有关 详细信息)。

为什么?!?

有时候你在用python开发一些东西(因为这就是你 做),然后你决定你希望它被并行化。我们的电流 选项是多处理(将我们限制在一台机器上)和hadoop 流(限制我们使用字符串和hadoop的输入格式)。

还有,因为我可以。

学分

mycloud建立在物候有用的基础上 cloud序列化, SSH/Paramiko,和 LevelDB库。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在jetty请求日志中添加milliscond字段?   java在使用Scanner类从文件读取信息时遇到问题   为什么。类不适用于泛型类型?   SQLite插入上的java空指针异常   java能告诉我们Guava缓存是在禁用统计数据的情况下构建的吗?   java在应用程序中使用常量   java无法使用AutoIT和Selenium Webdriver在所需位置/文件夹保存图像   java如何在jtable中更新jprogress栏   java是比较给定日期和当前日期(在给定时区中没有时间段)的最佳方法   安卓代码中的java错误   java无法访问实体类中的字段   java如何在tomcat中处理三个JDBC连接池?   java无法使用Spring Security保护AngularJS页面   如何在没有TCP/IP协议栈的情况下用Java发送以太帧