如何在不可靠的集群上分发程序?

发布于 2024-07-22 04:34:17 字数 296 浏览 2 评论 0原文

我正在寻找的是以下任何/所有内容:

  • 自动发现工作故障(例如计算机关闭)
  • 检测给定 IP 地址范围(计算机打开)上所有正在运行的(linux)PC
  • ...以及自动工作生成(ping + ssh?)
  • 负载平衡,以便工作人员不会减慢其他进程(很好?)
  • 某种形式的消息传递

......并且不想重新发明轮子。

C++ 库、bash 脚本、独立程序……都欢迎。

如果您给出一个软件示例,请告诉我们它具有哪些上述功能。

What I'm looking for is any/all of the following:

  • automatic discovery of worker failure (computer off for instance)
  • detection of all running (linux) PCs on a given IP address range (computer on)
  • ... and auto worker spawning (ping+ssh?)
  • load balancing so that workers do not slow down other processes (nice?)
  • some form of message passing

... and don't want to reinvent the wheel.

C++ library, bash scripts, stand alone program ... all are welcome.

If you give an example of software then please tell us what of above functions does it have.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

漫雪独思 2024-07-29 04:34:17

查看 Spread 工具包,这是一个 C/C++ 群组通信系统。 它将允许您以允许您重新平衡分布式工作负载的方式检测节点/进程故障和恢复/启动。

Check out the Spread Toolkit, a C/C++ group communication system. It will allow you detect node/process failure and recovery/startup, in a manner that allows you to rebalance a distributed workload.

满栀 2024-07-29 04:34:17

您正在寻找的称为“作业调度程序”。 市场上有很多作业调度程序,这些是我熟悉的:

  • SGE处理与多台机器上的作业调度相关的所有问题(恢复、监视、优先级、排队)。 您的软件不必支持 SGE,因为 SGE 只是提供一个供您提交批处理作业的环境。
  • LSF 是一个更好的选择,但不是免费的。

要支持消息传递,请参阅 MPI 规范。 SGE完全支持基于MPI的分发。

What you are looking for is called a "job scheduler". There are many job schedulers on the market, these are the ones I'm familiar with:

  • SGE handles any and all issues related to job scheduling on multiple machines (recovery, monitoring, priority, queuing). Your software does not have to be SGE-aware, since SGE simply provides an environment in which you submit batch jobs.
  • LSF is a better alternative, but not free.

To support message passing, see the MPI specification. SGE fully supports MPI-based distribution.

把时间冻结 2024-07-29 04:34:17

根据您的应用程序要求,我会检查 BOINC 基础设施。 他们在最新版本中实现了一种客户端/服务器通信形式,但尚不清楚您需要哪种形式的通信。 他们的 API 是用 C 语言编写的,我们很容易用 C++ 编写了它的包装器。

BOINC 的另一个优势是,它旨在针对 SETI 或 Rosetta@Home 等大型分布式计算项目进行扩展,因此它支持验证、作业分配以及针对不同平台的不同应用程序版本的管理等功能。

链接如下:

BOINC 网站

Depending on your application requirements, I would check out the BOINC infrastructure. They're implementing a form of client/server communication in their latest releases, and it's not clear what form of communication you need. Their API is in C, and we've written wrappers for it in C++ very easily.

The other advantage of BOINC is that it was designed to scale for large distributed computing projects like SETI or Rosetta@Home, so it supports things like validation, job distribution, and management of different application versions for different platforms.

Here's the link:

BOINC website

比忠 2024-07-29 04:34:17

Hadoop。 它有 MapReduce,但我不确定它是否还有我需要的其他功能。 有人知道吗?

There is Hadoop. It has Map Reduce, but I'm not sure whether it has any other features I need. Anybody know?

凡尘雨 2024-07-29 04:34:17

您确实在寻找“工作调度程序”。 节点“静态”注册到作业调度程序。 这允许作业调度程序检查节点并确定核心数量、RAM、可用暂存盘空间、操作系统等。 所有这些信息都可用于选择作业所需的资源。

作业调度程序还提供集群的基本运行状况监控。 关闭的节点会自动从可用节点列表中删除。 正在运行作业(通过调度程序)的节点也会从可用节点列表中删除。

SLURM 是一个资源管理器和 您可能会考虑的作业调度程序。 SLURM 具有 LSF 和 PBSPro 的集成挂钩。 一些 MPI 实现是“SLURM 感知”的,并且可以使用/设置环境变量,这些变量将允许 MPI 作业在 SLURM 分配给它的节点上运行。

You are indeed looking for a "job scheduler." Nodes are "statically" registered with a job scheduler. This allows the jobs scheduler to inspect the nodes and determine the core count, RAM, available scratch disc space, OS, and much more. All of that information can be used to select the required resources for a job.

Job schedulers also provide basic health monitoring of the cluster. Nodes that are down are automatically removed from the list of available nodes. Nodes which are running jobs (through the scheduler) are also removed from the list of available nodes.

SLURM is a resource manager & job scheduler that you might consider. SLURM has integration hooks for LSF and PBSPro. Several MPI implementations are "SLURM aware" and can use/set environment variables that will allow an MPI job to run on the nodes allocated to it by SLURM.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文