【发布时间】:2015-06-23 18:47:45
【问题描述】:
摘要
我使用两个控制台应用程序(Stage-estimate、Stage-step)完成了我的处理,每个应用程序都处理磁盘上的文件,文件被组织到文件夹中。每个文件夹代表一个处理步骤,当估计所有文件时,该步骤被认为已完成。
假设我们在Step 0 并且文件夹0 包含以下文件:
文件夹0 包含:
000.data
001.data
002.data
...
999.data
我们有data 文件,现在我们需要估计它们,我们运行Stage-estimate 应用程序1000 次,结果如下目录结构:
文件夹0 包含:
000.data
000.estimate
001.data
001.estimate
002.data
002.estimate
...
999.data
999.estimate
Step 0 现已完成,我们拥有所有 data/estimate 对。为了切换到Step 1,我们在每个data/estimate 对文件上运行Stage-step 应用程序1000 次,结果是新的一组1000 个*.data 文件进入文件夹1。在Stage-step 应用程序完成后,我们有一个文件夹1,其结构与我们在Step 0 上的结构相同:
文件夹1 包含:
000.data
001.data
002.data
...
999.data
从现在开始,这个过程会一直重复,直到被取消。
问题
与Stage-step 应用程序相比,应用程序Stage-estimate 进行了一些非常繁重的计算,它消耗了99% 的整体处理能力。
我打算使用 AWS 来加快速度。我不想开始发明特殊的批处理文件来以上述方式调用我的应用程序,我知道有特殊的软件可以在调度进程和其他与集群相关的东西方面做一些高水平的工作。
问题
我从来没有处理过集群计算,在我的脑海中,我发现应用程序的并行化非常好,它适合 AWS 基础设施。另一方面,我在集群计算领域完全是新手,我不知道从哪里开始。我正在与 AWS 打交道,但是与集群计算无关,我不知道如何组织我所描述的流程以及如何使其高效运行,所以如果您指出我正确的方向或提供一些链接,我将不胜感激演示/最佳实践。
提前谢谢你!
【问题讨论】:
-
您介意提供一些有关您的软件的信息吗?您使用什么语言?一个阶段的估算命令是否独立(那么您可以并行运行估算函数吗?)阶段 0 是否必须在阶段 1 开始之前完全准备好?或者如果 000.data 被处理并且 000.estimate 在阶段 0 准备好,您可以在阶段 1 创建 000.data 并估计它,不管任何其他数据文件?
-
它是用 C++ 编写的,
Stage-estimate接受一个文件并输出另一个文件,因此它完全独立于其他文件,Stage-step部分依赖于其他文件(实际上它可能需要几个文件作为输入)。当初始目录中有足够的估计值时,可以开始第 1 阶段。因此,这意味着您可以计算阶段 1 的 50%,而仅完成阶段 0 的 90%,但最终最好先完成Stage 0然后转到Stage 1
标签: amazon-web-services cluster-computing