5

假设已经建立了一个cassandra集群。你有10 [TB]数据库,平均分布在10个节点之间,一切运行平稳等。管理分布式集群?

假设你有100台机器可供选择,每个机器试图从cassandra集群读取(不同)数据。另外,你有很多不断需要运行的工作,每个工作在不同的时间(显然,每个工作需要在不同的机器上运行)。

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

是否有任何开源工具(最好是Python客户端)可以在Linux环境中实现它?

回答

3

您需要的是一个Grid/HPC框架来处理您的分布式基础架构并运行作业。

在unix/linux中有两个系统可能很适合你。 Portable Batch Systems (PBS)Condor

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

Condor和PBS都有一个主人需要作为每个工作/任务的受体,为每个工作/任务你可以关联优先级和鉴别器。集群的管理员根据这些鉴别器设置规则来安排作业。

如何在机器之间分配 任务?

神鹰或PBS将会为你做,你只需要在作业提交到主节点,并指定优先级,输入和输出等

您可以定期检查时,作业完成的,通过不同的机制订阅通知或者做一种job.wait()来阻止它完成。

你怎么 跟踪作业/机器 的过程?

PBS和Condor都有top类似的命令来列出正在等待,正在运行或取消排队的作业。如果流程允许快照,他们也有公用事业来停止或取消工作。

对于大型集群,我的建议是尝试Condor。它已经存在了很长时间,可以像解决问题一样解决问题。这里有some examples为神鹰+ Python的

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

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

完美答案 - 正是我一直在寻找的。 “condor”真的是要走的路吗?它在多台Ubuntu机器上安装/维护有多难? (我知道一旦安装,作业提交很容易)。 我们如何处理这样一个事实,即我们提交了一份工作,工作正在运行,然后它运行的机器就会死亡? (在这种情况下,我们想重新提交到另一台机器) 也可以'芹菜'比较? 顺便说一句,我不仅限于'基于python'的解决方案,所以如果你有其他的想法,如果你列出他们会很高兴。谢谢。 – user3262424 2011-04-15 13:12:34

+0

关于芹菜我不能说太多我只用它来进行玩具测试,它非常酷,非常适合Python。关于Condor ...我在4年前使用了它,并且我记得它可以处理节点失败的情况,并且可以重新安排工作,请参阅(http://www.cs.wisc.edu/condor/manual/v7.2/) 2_10DAGMan_Applications.html#SECTION003106100000000000000)。 Condor并不难安装和使用,但它需要unix/linux管理技能的中等水平。 – 2011-04-15 13:27:51

+0

谢谢。给你的经验提一个简单的问题:'condor'节点之间需要无密码的SSH吗?或者没关系? – user3262424 2011-04-15 14:23:00