繁体   English   中英

在多个EC2实例中远程执行程序并等待结果

[英]Remotely execute program in multiple EC2 instances and wait for results

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

我想从A中的其他Java程序ja在X,Y中执行Java程序jx,jy。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或其他任何人员的经验。 欢迎简单的方法。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM