получить ip главного узла emr из yarn cli

Чтобы получить список IP-адресов подчиненных узлов emr, необходимо запустить следующий код:

yarn node -list 2>/dev/null \
| sed -n "s/^\(ip[^:]*\):.*/\1/p"

yarn node -list выводит IP-адрес главного узла на stderr:

19/04/02 18:59:26 INFO client.RMProxy: подключение к ResourceManager по адресу ip-10-1-0-238.ec2.internal/10.1.0.238:8032

Как мне изменить приведенный выше код, чтобы вместо этого получить частный IP-адрес главного узла emr?


person Walrus the Cat    schedule 02.04.2019    source источник
comment
если IP-адрес печатается в stderr, вы должны заменить 2>/dev/null на 2>&1 в своей команде   -  person MAGA    schedule 02.04.2019
comment
это начало, но как мне изменить сопоставление шаблона sed, чтобы получить основной IP-адрес?   -  person Walrus the Cat    schedule 02.04.2019


Ответы (2)


Вы можете использовать:

yarn node -list |& sed 's/.*ip-\([^.]*\).*/\1/g'

где |& — это сокращение от 2>&1. Это возвращает:

10-1-0-238
person MAGA    schedule 02.04.2019
comment
лол, так что... это не сработало... но оказалось, что можно просто набрать hostname -f. Спасибо хоть! - person Walrus the Cat; 03.04.2019

Если вы работаете на Amazon Elastic Map Reduce, это считывает главный IP-адрес из объекта JSON рабочего процесса и анализирует его с помощью jq:

jq .masterPrivateDnsName /emr/instance-controller/lib/info/job-flow.json
person vy32    schedule 09.08.2019