Amazon Elastic Map Уменьшить - Поддержать работу сервера? - PullRequest
4 голосов
/ 25 марта 2010

Я тестирую задания в EMR, и каждый тест занимает много времени для запуска. Есть ли способ сохранить сервер / главный узел живым в Amazon EMR? Я знаю, что это можно сделать с помощью API. Но я хотел знать, можно ли это сделать в консоли aws?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Вы не можете сделать это с консоли AWS. Цитировать руководство разработчика

Вкладка Amazon Elastic MapReduce в Консоли управления AWS не поддерживает добавление шагов в поток работ.

Это можно сделать только через интерфейс командной строки и API, создав поток работ и добавив в него шаги.

$ ./elastic-mapreduce --create --active --stream
1 голос
/ 27 июля 2012

Вы не можете сделать это с помощью веб-консоли, но с помощью API и инструментов программирования вы сможете добавить несколько шагов к длительной работе, что я и делаю. Таким образом, вы можете запускать задания один за другим в одном и том же долговременном кластере, не создавая заново каждый раз.

Если вы знакомы с Python, я настоятельно рекомендую библиотеку Boto . Другие инструменты AWS API также позволяют вам это делать.

Если вы следуете учебнику по Boto EMR , вы найдете несколько примеров:

Просто чтобы дать вам представление, вот что я делаю (с потоковыми заданиями):

# Connect to EMR
conn = boto.connect_emr()

# Start long-running job, don't forget keep_alive setting
jobid = conn.run_jobflow(name='My jobflow',
                          log_uri='s3://<my log uri>/jobflow_logs',
                          keep_alive=True)

# Create your streaming job
step = StreamingStep(...)

# Add the step to the job
conn.add_jobflow_steps(jobid, [step])

# Wait till its complete
while True:
  state = conn.describe_jobflow(jobid).steps[-1].state
  if (state == "COMPLETED"):
    break
  if (state == "FAILED") or (state == "TERMINATED") or (state == "CANCELLED"):
    print >> sys.stderr, ("EMR job failed! Message = %s!") % (state)
    sys.exit(1)
  time.sleep (60)

# Create your next job here and add it to the EMR cluster
step = StreamingStep(...)
conn.add_jobflow_steps(jobid, [step])

# Repeat :)
0 голосов
/ 22 июня 2010

, чтобы поддерживать работу машины, начните интерактивный сеанс свиней. Тогда машина не выключится. Затем вы можете выполнить свою карту / уменьшить логику из командной строки, используя:

cat infile.txt | yourMapper | sort | yourReducer > outfile.txt
...