use*_*424 5 python distributed-computing cluster-computing cassandra
假设有人建立了一个cassandra集群.你有一个10 [TB]数据库,它在10个节点之间均匀分布,一切运行顺畅等.
假设您有100台计算机可供使用,每台计算机都尝试从cassandra集群中读取(不同的)数据.此外,您有许多不断需要运行的作业,每个作业都在不同的时间(显然,每个作业都需要在不同的机器上运行).
你如何管理所有这些任务/工作?你如何在机器之间分配任务?你如何跟踪过程中的工作/机器?
是否有任何开源工具(最好是有Python客户端)可以帮助在Linux环境中进行操作?
您需要的是一个网格/HPC 框架来处理分布式基础设施并运行作业。
在 unix/linux 中,有两个系统可能对您有用。便携式批量系统 (PBS)或Condor
您如何管理所有这些任务/工作?
Condor 和 PBS 都有一个主需求来充当每个作业/任务的接收器,对于每个作业/任务,您可以将优先级和鉴别器关联起来。集群管理员根据这些鉴别器设置规则来安排作业。
如何在机器之间分配任务?
Condor或PBS会帮你完成,你只需要将作业提交到主节点并指定优先级、输入和输出等。
您可以定期检查作业何时完成,通过不同的机制订阅通知或执行某种job.wait()阻止直到其完成。
您如何跟踪流程中的作业/机器?
PBS 和 Condor 都有top类似的命令来列出排队等待、正在运行或取消的作业。如果进程允许快照,他们还提供实用程序来停止或取消作业。
对于大型集群,我的建议是尝试 Condor。它已经存在很多年了,可以解决与您所遇到的问题一模一样的问题。这里有一些Condor + Python 的例子
其他最近需要考虑的解决方案是: