Есть ли способ использовать конфигурацию жизненного цикла sagemaker для запуска кластера EMR при запуске ноутбука? - PullRequest
0 голосов
/ 12 февраля 2019

Я хотел бы запускать кластер EMR каждый раз, когда запускается ноутбук Sagemaker.Однако я обнаружил, что сценарии конфигурации жизненного цикла не могут работать дольше 5 минут.К сожалению, мой кластер EMR занимает больше 5 минут.Это проблема, так как мне нужно подождать, пока кластер включится, чтобы получить главный IP-адрес (этот IP-адрес затем используется для настройки соединения между sagemaker notebbok и кластером).

Нижеизвлечение кода, который запускается в сценарии конфигурации жизненного цикла.

Есть ли кто-нибудь, кто сталкивался с подобной проблемой и нашел решение?

job_flow_id = client.run_job_flow(**CLUSTER_CONFIG)['JobFlowId']

...
...

# Retrieve private Ip of master node for later use
master_instance = client.list_instances(ClusterId=job_flow_id, InstanceGroupTypes=['MASTER'])['Instances'][0]
master_private_ip = master_instance['PrivateIpAddress']

# Send to sagemaker the config file in order to tell him how to communicate with spark
s3 = boto3.client('s3')
file_object = s3.get_object(Bucket='dataengine', Key='emr/example_config.json')
data = json.loads(file_object['Body'].read().decode('utf-8'))
data['kernel_python_credentials']['url'] = 'http://{}:8998'.format(master_private_ip)
data['kernel_scala_credentials']['url'] = 'http://{}:8998'.format(master_private_ip)
data['kernel_r_credentials']['url'] = 'http://{}:8998'.format(master_private_ip)

with open('./sparkmagic/config.json', 'w') as outfile:
    json.dump(data, outfile)```

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Вы также можете рассмотреть возможность использования nohup в конфигурации жизненного цикла для выполнения вашего скрипта в фоновом режиме, чтобы вас не блокировали 5-минутным лимитом.

Дайте нам знать, если вам нужна помощь.

Спасибо,

Хан

0 голосов
/ 13 февраля 2019

AWS CloudFormation автоматизирует все это для вас и позволит вам также передать IP-адрес.

Так как вам нравится Python, я бы порекомендовал Troposphere: https://github.com/cloudtools/troposphere. Написать код Python, создать шаблон CloudFormation, запустить его:)

Julien (AWS)

...