有一个appengine-mapreduce似乎是在AppEngine上做事的官方方式.但除了一些黑客攻击的Wiki页面和冗长的视频之外,似乎没有文档.有声明lib只支持该map
步骤.但是消息来源表明还有shuffle的实现.
此appengine-mapreduce库的一个版本似乎也包含在SDK中,但它不受公众使用的祝福.因此,您基本上需要将库加载到运行时两次.
然后是appengine-pipeline."API的主要用例是将各种App Engine MapReduces连接到计算管道中." 但是appengine-mapreduce库中似乎还有与管道相关的代码.
那么我从哪里开始了解这一切是如何组合在一起的呢?哪个是我的项目调用的库.除了解析更改日志之外,还有关于appengine-mapreduce的文档吗?
哪个是我的项目调用的库.
它们用于不同的目的,并且您没有提供有关您尝试执行的操作的详细信息.
这里最基本的层是任务队列,它允许您安排可以高度并行化的后台工作.这是扇动.假设您有一个包含1000个网站的列表,并且您希望检查每个网站的响应时间,并为任何需要超过5秒钟的网站发送电子邮件.通过将这些作为并发任务运行,您可以比按顺序检查所有1000个站点更快地完成工作.
现在假设你不想为每个慢速网站发送电子邮件,你只想检查所有1000个网站,并发送一封摘要电子邮件,说明有多少花了超过5秒,有多少花了更少.这是粉丝.使用任务队列比较棘手,因为您需要知道所有任务何时完成,并且您需要收集并汇总其结果.
输入Pipeline API.Pipeline API抽象了任务队列,使扇入更容易.您编写的内容看起来像同步,过程代码,但使用Python期货并且并行执行(尽可能多).Pipeline API跟踪任务依赖性并收集结果以便于构建分布式工作流.
MapReduce API包装Pipeline API以促进特定类型的分布式工作流:将一件工作的结果映射到一组键/值对,并通过组合它们的值将多组结果减少为一组.
因此,它们围绕分布式任务执行的通用系统提供了越来越多的抽象和便利.正确的解决方案取决于您要完成的任务.