管理分布式群集?

时间:2011-04-15 00:18:23

标签: python cassandra cluster-computing distributed-computing

假设有人建立了一个cassandra集群。你有一个10 [TB]数据库,它在10个节点之间均匀分布,一切运行顺畅等等。

假设您有100台计算机可供使用,每台计算机都尝试从cassandra集群中读取(不同的)数据。此外,您有许多工作需要经常运行,每个工作都在不同的时间(显然,每个工作都需要在不同的机器上运行)。

您如何管理所有这些任务/工作?你如何在机器之间分配任务?你如何跟踪过程中的工作/机器?

是否有任何开源工具(最好是Python客户端)可以帮助在Linux环境中执行此操作?

1 个答案:

答案 0 :(得分:3)

您需要的是Grid / HPC Framework来处理分布式基础架构和运行作业。

在unix / linux中,有两个系统可能对您有用。 Portable Batch Systems (PBS)Condor

  

你如何管理所有这些   任务/工作?

Condor和PBS都需要充当每个工作/任务的接受者,对于每个工作/任务,您可以将优先级和鉴别器联系起来。群集管理员根据这些鉴别器设置规则以安排作业。

  

你如何分发   机器之间的任务?

Condor或PBS将为您完成,您只需要将作业提交给主节点并指定优先级,输入和输出等。

您可以定期检查作业何时完成,通过不同的机制订阅通知或执行某种job.wait()以阻止作业完成。

  你怎么样?   跟踪工作/机器   这个过程?

PBS和Condor都有top个相似的命令来列出在等待,运行或取消时排队的作业。如果进程允许快照,它们还具有停止或取消作业的实用程序。

对于大型集群,我的建议是尝试Condor。它已经存在很长时间了解问题就像你拥有的那样。这里有Condor + Python的some examples

其他更近期需要考虑的解决方案是:

  • Celery Python的分布式任务队列。
  • DiscoProject基于MapReduce范例的分布式计算框架。