【问题标题】:How to run script on specific instance group in EMR如何在 EMR 中的特定实例组上运行脚本
【发布时间】:2016-08-05 08:48:55
【问题描述】:

我被一个任务困住了,我必须只在任务实例组实例上运行 1 个脚本。

我目前的做法-

为此,我在集群启动时将脚本作为引导操作传递,但它在所有机器上运行脚本。 (主、核心、任务实例组)。

您能帮我只在特定(任务)实例组上运行该脚本吗?

实际任务是在任务实例组实例上运行终止通知轮询脚本。 - https://blog.fugue.co/2015-01-06-spot-termination-notices.html

【问题讨论】:

  • 您必须在启动时运行该脚本还是可以随时运行?
  • @error2007s 我的用例是,每当任何现场实例(在任务实例组下)出现故障时,只需用新实例替换即可。因此,根据我的理解,如果我将此作为引导操作传递,那么它将始终在所有任务实例上运行,即使我们也启动了新实例。纠正我,如果我错了。

标签: amazon-web-services hadoop amazon-ec2 mapreduce amazon-emr


【解决方案1】:

您可以查看文件 /mnt/var/lib/info/extraInstanceData.json,其中包含键 instanceRole 值,它可以是 master、core 或 task。 例如,将此添加到您的脚本中:

INSTANCE_ROLE=$(jq .instanceRole /mnt/var/lib/info/extraInstanceData.json)

或者,您可以使用集群中任何节点上存在的这个文件/mnt/var/lib/info/instance.json,它看起来像这样:

  {
    "instanceGroupId": "ig-XXXXXXXXXX",
    "isMaster": false
  }

您可以将 ig-XXXXXXXXXX 与集群的 TASK 组 ID 匹配。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 2017-04-04
    • 2018-08-30
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多