【问题标题】:Distributed Program Execution Manager分布式程序执行管理器
【发布时间】:2017-07-13 18:42:13
【问题描述】:

鉴于集群中的机器信息(IP 地址/机器名称)和要运行的程序(Java 语言),是否有可用的软件(管理器)执行该程序并返回输出以及运行时每台机器?

目前,我正在使用 shell 脚本来执行此操作,但我无法花时间(以秒为单位)来运行 java 程序。如果有像我上面描述的那样的分布式程序执行管理器会很好。

【问题讨论】:

  • “运行时”是什么意思?
  • 运行时是指运行java程序所花费的时间(以秒为单位)

标签: java distributed execution


【解决方案1】:

您可以简单地使用tentakelshmux 之类的东西在多个节点上并行运行您的应用程序,而不是编写自己的脚本。你可以运行tentkel作为

tentakel 'time <your application name>'

获取输出以及应用程序运行所需的时间。

【讨论】:

  • 感谢您的建议 :)。这些看起来正是我需要的。我会检查他们。然而,这两种工具的开发似乎早已停止。但我想,在这里,这不是什么大问题。
【解决方案2】:

我喜欢使用Hudson 来处理类似的事情。它最初是为执行软件构建和测试而编写的,但比这更通用。基本上是一个用于管理作业和执行的控制器以及一个部署在节点上的客户端。 Hadoop 是另一种选择,如果您可以灵活地为特定的分布式计算框架重新编写您的应用程序。

【讨论】:

  • 感谢您的回复。我想到了 Hadoop,抱歉我没有提到这一点。我想要一个类似于 Hadoop 中的作业控制器的功能。类似于在所有节点上运行 map 和 reduce 的方式,我希望我的经理在所有节点上运行我的 java 程序并收集输出。
  • Hudson 会让您在不更改程序的情况下做到这一点。它可以在安装了从属设备的主机上调用任意命令,结果(命令输出和您指定的文件)被发送回控制器机器,在那里可以根据需要对其进行审查。您可以设置要根据其他作业的结果触发的作业、创建要执行的排列矩阵等。
【解决方案3】:

我不太明白你的问题。您想返回什么“运行时”?您使用的是什么集群解决方案?对于 Java 中的分布式通信,我推荐 JGroups。 FOR分布式JVM检查Terracotta。

【讨论】:

  • 我想获得运行程序所需的时间,并且我想获得运行程序的集群中每台机器的程序输出。集群解决方案是什么意思?
猜你喜欢
  • 1970-01-01
  • 2014-05-27
  • 2016-08-25
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 1970-01-01
相关资源
最近更新 更多