2011-01-07 1 views
7

두 개의 mapreduce 작업이있는 시나리오입니다. 필자는 python을 사용하여 mapreduce 스크립트를 작성하고이를 사용하여 동일한 스트리밍을 사용하기를 더 편하게 생각합니다. 두꺼운 스트리밍을 사용할 때 양식을 따르는 두 작업을 연결하는 것이 편리합니까?Hadoop 스트리밍에서 다중 mapreduce 작업 체인화

MAP1 -> Reduce1 -> Map2에 -> Reduce2

나는 자바에서이 작업을 수행하는 방법을 많이 들었어요,하지만 난 하둡 스트리밍을위한 무언가가 필요합니다.

답변

4

다음은 캐스 캐이 딩 및 스트리밍을 사용하는 방법에 대한 훌륭한 블로그 게시물입니다. http://www.xcombinator.com/2009/11/18/how-to-use-cascading-with-hadoop-streaming/

여기 값은 동일한 응용 프로그램에서 사용자 정의 스트리밍 작업과 함께 Java (계단식 쿼리 흐름)를 혼합 할 수 있다는 것입니다. 나는이 방법이 다른 방법보다 훨씬 덜 부서진다는 것을 안다.

캐스케이드의 캐스케이드 개체를 사용하면 여러 개의 플로를 연결할 수 있습니다 (위의 블로그 게시물을 통해 스트리밍 작업이 MapReduceFlow가 됨).

면책 조항 : 나는 캐스 케이 딩

+0

흠에서 https://github.com/Yelp/mrjob
및 문서의 소스, 나는 이것이 어떻게 작동하는지 모르겠습니다. 나는 질문을했다 : http://stackoverflow.com/questions/35249753/call-mapper-when-reducer-is-done – gsamaras

1

일반적으로 Hadoop 스트리밍과 Python으로이 작업을 수행하는 방법은 처음에 작업을 실행하기 위해 작성한 bash 스크립트에서 가져온 것입니다. 항상 bash 스크립트에서 실행하면 성공과 실패에 대한 이메일을 이메일로받을 수 있고 더 큰 이벤트 처리 시스템에서 작동 할 수있는 다른 Ruby 또는 Python 스크립트에서 매개 변수를보다 유연하게 전달할 수 있습니다.

그래서 첫 번째 명령 (작업)의 출력은 (간단하고 빠른)

명령 줄에서 인수로 전달 배시 스크립트의 변수가 될 수있는 다음 명령 (작업)에 대한 입력은

Hadoop 용 워크 플로우 엔진 Oozie http://yahoo.github.com/oozie/design.html도 도움이 될 수 있습니다 (문제가 아닌 스트리밍 지원). 내가 시작할 때 이것을 가지고 있지 않았기 때문에 나는 내 자신의 물건을 만들어야 만했다. 그러나 이것은 kewl 시스템이고 유용하다 !!

1

이미 파이썬에서 맵퍼 및 감속기를 작성하는 경우의 저자 해요, 나는 그런 작업이 간단입니다 덤보의 사용을 고려한다. 맵 축소 작업의 시퀀스, 매퍼, 감속기 등은 모두 명령 행에서 실행할 수있는 하나의 python 스크립트에 있습니다.

3

Yelp's MRJob 당신의 직업을 얻기 위해 시도해 볼 수 있습니다. Hadoop Cluster 또는 EC2에서 Hadoop Streaming을 실행할 수있는 체인 된 작업을 작성할 수있는 opensource MapReduce 라이브러리입니다. 사용하기가 매우 쉽고 우아합니다 , 데이터를 전달할 마 퍼와 리듀서의 정확한 체인을 지정하기 위해 재정의 할 수있는 단계라는 메서드가 있습니다.

체크 아웃 http://packages.python.org/mrjob/