我希望在几个 Amazon EC2 实例上运行一个长时间运行的 python 分析过程。该代码已经使用 pythonmultiprocessing
模块运行,并且可以利用单台机器上的所有内核。
分析是完全并行的,每个实例不需要与任何其他实例进行通信。所有的工作都是“基于文件的”,每个进程单独处理每个文件......所以我计划在所有节点上安装相同的 S3 卷。
我想知道是否有人知道设置多处理环境的任何教程(或有任何建议),以便我可以同时在任意数量的计算实例上运行它。
我希望在几个 Amazon EC2 实例上运行一个长时间运行的 python 分析过程。该代码已经使用 pythonmultiprocessing
模块运行,并且可以利用单台机器上的所有内核。
分析是完全并行的,每个实例不需要与任何其他实例进行通信。所有的工作都是“基于文件的”,每个进程单独处理每个文件......所以我计划在所有节点上安装相同的 S3 卷。
我想知道是否有人知道设置多处理环境的任何教程(或有任何建议),以便我可以同时在任意数量的计算实例上运行它。
文档为您提供了在多台机器上运行多处理的良好设置。使用 s3 是跨 ec2 实例共享文件的好方法,但通过多处理,您可以共享队列和传递数据。
如果您可以将 hadoop 用于并行任务,那么它是一种很好的跨机器提取并行性的方法,但是如果您需要大量 IPC,那么使用多处理构建自己的解决方案并不是那么糟糕。
只需确保将机器放在相同的安全组中即可:-)
我会用小飞象。它是与 Amazon Elastic MapReduce 兼容的 Hadoop 的 Python 包装器。围绕您的代码编写一个小包装器以与 dumbo 集成。请注意,您可能需要一个没有减少步骤的仅地图作业。
我最近一直在研究 IPython,它看起来支持跨多个主机的并行处理,开箱即用:
http://ipython.org/ipython-doc/stable/html/parallel/index.html