【问题标题】:Remotely execute program in multiple EC2 instances and wait for results在多个 EC2 实例中远程执行程序并等待结果
【发布时间】:2015-02-16 07:52:53
【问题描述】:

假设有三个名为 A、X、Y 的 EC2 实例。

我想从 A 中的其他 Java 程序 ja 执行 X 中的 Java 程序 jx、jy、Y。 ja 需要传递 jx 和 jy 的命令行参数。

For EC2 instance A, X, Y, and Java program ja, jx, jy, 
A's ja------------> X's jx
     -------------> Y's jy

ja 等待 jx 和 jy 都完成并获取结果值(或文件)

A's ja <---return val -------X's jx
       <---return val ------ Y's jy

同样,ja 执行 jx 和 jy,其他参数由返回值确定。

ja需要分别执行jx和jy 5次。

我认为 ja 的伪代码如下:

for(int i = 0; i < 5; i++){
  rx = executeJX(argx);
  ry = executeJY(argy);

  waitJxJyFinish(); // jx and jy take ~30 min to finish.
  (argx, argy) = determineNextArgXandArgY(rx, ry);
}

约束

这仅用于实验目的,而不是日常使用的生产,这就是为什么开销最少的方式是最好的,即使它是肮脏的方式。 我没有任何 hadoop 或任何其他工作人员的经验。欢迎使用简单易行的方法。

【问题讨论】:

    标签: java amazon-web-services amazon-ec2 remote-access


    【解决方案1】:

    如果您希望以异步方式在实例之间传递变量来运行任务,我认为最好的解决方案是Amazon SQS Queue

    这将允许您在 X 和 Y 上运行 Java 程序,并将结果作为包含要在 A 上使用的结果的消息提交到队列。然后 A 可以间歇性地轮询队列中的消息,这包含结果,然后使用这些变量运行 jA。

    这是最优雅的解决方案,可以解耦您的应用程序。另一种选择是将 X 和 Y 的结果作为文件发布到 S3,然后 A 偶尔会检查该文件并复制它是否存在。

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 1970-01-01
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2021-07-11
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多