2017-03-20 5 views
0

현재 Amazon EMR에서 모든 돼지 작업을 순차적으로 실행하므로 클러스터를 시작한 다음 모든 돼지 작업을 클러스터 1에 대한 단계로 1을 추가합니다. 이 작업을하는 동안, 그 돼지 작업을 평행하게 운영 할 수있는 것이 있는지 궁금합니다.Amazon AWS에서 병렬 Pig 스크립트 실행

이상적으로 다음을 수행하고 싶습니다. 클러스터를 시작한 다음 (c3.xlarge라고 가정 해 봅시다) 15 개의 돼지 작업을 던집니다. 이러한 작업은 가능한 한 최선의 방식으로 병렬로 실행됩니다 (예 : 동시에 3 개). 1이 완료되면 다른 하나가 실행됩니다.

이 같은 것이 있거나 사용할 수있는 방법이 있으면 도움을 얻을 수 있습니다. 나는 Oozie에 관해 뭔가를 읽었지 만 이것이 우리의 필요에 부합하는지 확신 할 수 없다.

답변

1

EMR 단계를 병렬로 실행할 수 없습니다. 그러나 앞서 언급 한 것처럼 oozie를 사용하여 포크 및 조인 작업을 사용하여 돼지 스크립트 실행을 조율하여 병렬로 실행합니다.

1

일반적으로 페어 스케줄러를 사용하고 쉘을 통해 작업을 제출하도록 EMR 클러스터를 수동으로 재구성 할 수 있습니다. 아니면 Oozie와 함께 qay에 갈 수도 있습니다. 그러나 일반적으로 그것은 상자에서와 같은 것이 아닙니다.

1

Oozie는 돼지 스크립트를 병렬로 실행할 수 있도록 도와줍니다. 돼지 스크립트의 병렬 실행을 예약하기 위해 Fork-Join 제어 노드를 사용할 수 있습니다. 예 : Fork and Join Control Nodes.

유일하게, 모든 병렬 스크립트 실행을 시작할 것이고, 고정 된 병렬 처리를 제어 할 수있는 것은 아닙니다. oozie 워크 플로 응용 프로그램 정의에서 직접 관리해야합니다. Pig action의 경우 문서를 확인하십시오.

두 개의 map-reduce 작업이 동시에 실행됩니다. 당신은 이미

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1"> 
    ... 
    <fork name="forking"> 
     <path start="firstparalleljob"/> 
     <path start="secondparalleljob"/> 
    </fork> 
    <action name="firstparallejob"> 
     <map-reduce> 
      <job-tracker>foo:8021</job-tracker> 
      <name-node>bar:8020</name-node> 
      <job-xml>job1.xml</job-xml> 
     </map-reduce> 
     <ok to="joining"/> 
     <error to="kill"/> 
    </action> 
    <action name="secondparalleljob"> 
     <map-reduce> 
      <job-tracker>foo:8021</job-tracker> 
      <name-node>bar:8020</name-node> 
      <job-xml>job2.xml</job-xml> 
     </map-reduce> 
     <ok to="joining"/> 
     <error to="kill"/> 
    </action> 
    <join name="joining" to="nextaction"/> 
    ... 
</workflow-app> 
+0

감사 정보를 원하시면 등지도-감소 Oozie를 살펴했다, 돼지, 하이브처럼 여기 작업의 조합을 사용할 수 있지만 내 요구에 맞는 있는지 확실하지 않다. Oozie는 사용 가능한 리소스를 고려하지 않기 때문에 (기본적으로) – darkownage

+0

Oozie는 리소스 가용성을 고려하지 않습니다. Yarn/MR 프레임 워크에 작업을 제출하고 그것에 의존합니다. 감사. – YoungHobbit