EMR에서 작업을 테스트하고 있으며 모든 테스트가 시작하는 데 많은 시간이 필요합니다. Amazon EMR에서 서버/마스터 노드를 활성 상태로 유지할 수 있습니까? 나는 이것이 API로 할 수 있다는 것을 알고있다. 그러나 이것이 aws 콘솔에서 할 수 있는지 알고 싶었습니다.Amazon Elastic Map Reduce - 서버를 활성 상태로 유지 하시겠습니까?
답변
기계를 계속 작동 시키려면 대화 형 돼지 세션을 시작하십시오. 그런 다음 기기가 종료되지 않습니다.
cat infile.txt | yourMapper | sort | yourReducer > outfile.txt
마스터로 SSHing해야 할 것이고이 명령 체인은에서 실행되지 않습니다. Hadoop이므로 얻을 수있는 병렬 처리가 없습니다. –
AWS 콘솔에서는이 작업을 수행 할 수 없으므로 명령 줄에서 맵/논리를 실행할 수 있습니다. 개발자 가이드의 인용문
AWS 관리 콘솔의 Amazon Elastic MapReduce 탭은 작업 흐름에 단계를 추가하는 것을 지원하지 않습니다.
작업 흐름을 작성한 다음 단계를 추가하여 CLI 및 API를 통해서만 수행 할 수 있습니다.
$ ./elastic-mapreduce --create --active --stream
사실, 당신은 심지어 전달할 필요가 없습니다 - 스트림, 그냥 - 창조 - 살아야 할 것입니다. –
당신은 웹 콘솔이 작업을 수행 할 수 있습니다 -하지만 API 및 프로그래밍 도구를 통해, 당신은 내가 무엇 인 장기 실행 작업에 여러 단계를 추가 할 수 있습니다. 그렇게하면 매번 새로운 클러스터를 다시 만들 필요없이 동일한 장기 실행 클러스터에서 작업을 차례로 실행할 수 있습니다.
여러분이 파이썬에 익숙하다면, Boto 라이브러리를 적극 권장합니다. 다른 AWS API 도구로도이 작업을 수행 할 수 있습니다. 당신이 Boto EMR tutorial를 수행하면
, 당신은 몇 가지 예를 확인할 수있는 것들 :
그냥 당신에게 아이디어를주고, 이것은 내가 (스트리밍 작업과 함께) 할 것입니다 :
# 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 :)
가 상단 답을 확인 같은 질문을 여기에 : http://stackoverflow.com/questions/6880283/re-use-amazon-elastic-mapreduce-instance –