假设有人建立了一个cassandra集群。你有一个10 [TB]数据库,它在10个节点之间均匀分布,一切运行顺畅等等。
假设您有100台计算机可供使用,每台计算机都尝试从cassandra集群中读取(不同的)数据。此外,您有许多工作需要经常运行,每个工作都在不同的时间(显然,每个工作都需要在不同的机器上运行)。
您如何管理所有这些任务/工作?你如何在机器之间分配任务?你如何跟踪过程中的工作/机器?
是否有任何开源工具(最好是Python
客户端)可以帮助在Linux环境中执行此操作?
答案 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
其他更近期需要考虑的解决方案是: