2010-03-25 3 views
4

EMR에서 작업을 테스트하고 있으며 모든 테스트가 시작하는 데 많은 시간이 필요합니다. Amazon EMR에서 서버/마스터 노드를 활성 상태로 유지할 수 있습니까? 나는 이것이 API로 할 수 있다는 것을 알고있다. 그러나 이것이 aws 콘솔에서 할 수 있는지 알고 싶었습니다.Amazon Elastic Map Reduce - 서버를 활성 상태로 유지 하시겠습니까?

+0

가 상단 답을 확인 같은 질문을 여기에 : http://stackoverflow.com/questions/6880283/re-use-amazon-elastic-mapreduce-instance –

답변

0

기계를 계속 작동 시키려면 대화 형 돼지 세션을 시작하십시오. 그런 다음 기기가 종료되지 않습니다.

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

마스터로 SSHing해야 할 것이고이 명령 체인은에서 실행되지 않습니다. Hadoop이므로 얻을 수있는 병렬 처리가 없습니다. –

2

AWS 콘솔에서는이 작업을 수행 할 수 없으므로 명령 줄에서 맵/논리를 실행할 수 있습니다. 개발자 가이드의 인용문

AWS 관리 콘솔의 Amazon Elastic MapReduce 탭은 작업 흐름에 단계를 추가하는 것을 지원하지 않습니다.

작업 흐름을 작성한 다음 단계를 추가하여 CLI 및 API를 통해서만 수행 할 수 있습니다.

$ ./elastic-mapreduce --create --active --stream 
+0

사실, 당신은 심지어 전달할 필요가 없습니다 - 스트림, 그냥 - 창조 - 살아야 할 것입니다. –

1

당신은 웹 콘솔이 작업을 수행 할 수 있습니다 -하지만 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 :) 
관련 문제