EMR主节点是否知道其集群ID?

bst*_*mpi 19 hadoop amazon-web-services amazon-emr

我希望能够创建EMR集群,并让这些集群将消息发送回某个中央队列.为了使其工作,我需要在每个主节点上运行某种代理.这些代理中的每一个都必须在此消息中标识自己,以便收件人知道该消息所针对的群集.

主节点是否知道其ID(j-*************)?如果没有,那么是否还有其他一些识别信息可以让邮件收件人推断出这个ID?

我已经看了一下配置文件/home/hadoop/conf,我没有发现任何有用的东西.我发现了ID /mnt/var/log/instance-controller/instance-controller.log,但看起来很难找到.我想知道实例控制器可能从哪个位置获取该ID.

jc *_*nem 37

您可以查看 /mnt/var/lib/info/主节点以查找有关EMR群集设置的大量信息.更具体地说,/mnt/var/lib/info/job-flow.json包含jobFlowId或ClusterID.

您可以使用预安装的json parser(jq)来获取作业流ID.

cat /mnt/var/lib/info/job-flow.json | jq -r ".jobFlowId"
Run Code Online (Sandbox Code Playgroud)

(根据@Marboni更新)

  • 请参阅http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/Config_JSON.html (3认同)
  • @devsda您可以使用预先安装的jq解析文件:`cat /mnt/var/lib/info/job-flow.json | jq -r".jobFlowId"` (2认同)

Vla*_*lad 5

您可以使用Amazon EC2 API来搞清楚.为简单起见,下面的示例使用shell命令.在现实生活中,您应该使用适当的API来执行此步骤.

首先,您应该找到您的实例ID:

 INSTANCE=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用实例ID来查找群集ID:

ec2-describe-instances $INSTANCE | grep TAG | grep aws:elasticmapreduce:job-flow-id
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.