2011-11-07 3 views
5

(심지어 기본적인 Difference between Pig and Hive? Why have both? 이상)데이터 마이닝 대신 돼지/하이브를 사용하여 코드를 줄일 수 있습니까?

나는 작성된 데이터 처리 파이프 라인을 가지고 여러 자바지도-감소 (하둡의 매퍼 및 감속기에서 파생 된 내 자신의 사용자 지정 코드) 하둡 이상 작업을. 조인, 역 정렬, 정렬 및 그룹화와 같은 일련의 기본 작업입니다. 내 코드가 관련되어 있으며 매우 일반적이지 않습니다.

여러 가지 UDF를 사용하여 모든 것을 돼지/하이브로 마이그레이션하는 것과 달리 이처럼 개발 집약적 인 방법을 계속 사용하는 것에 대한 장단점은 무엇입니까? 어떤 직무를 수행 할 수 없습니까? 나는 성능 저하를 겪을 것인가? (결핵 100 대 근무)? 유지 보수 할 때 코드를 수정하고 디버깅 할 수있는 능력을 잃게됩니까? 작업의 일부분을 Java Map-Reduce로 파이프 라인 할 수 있고 Pig/Hive 작업에 입출력을 사용할 수 있습니까?

답변

8

참조 Twitter : 일반적으로 돼지 스크립트는 약 5 %의 시간에 작성된 기본지도/축소 코드의 5 %입니다. 그러나 쿼리는 일반적으로 네이티브 맵/축소 작업을 수행하는 데 걸리는 시간을 110-150 % 사이에서 가져옵니다. 물론 성능에 민감한 루틴이 있다면 네이티브 맵을 손으로 직접 코딩하거나 함수를 직접 줄일 수있는 옵션이 있습니다.

위의 참고 자료는 MapReduce에서 응용 프로그램을 개발하는 것에 대한 Pig의 장단점에 대해서도 설명합니다.

더 높은 수준의 언어 또는 추상화와 마찬가지로, 개발자 생산성을 희생시키면서 돼지/하이브의 유연성과 성능이 손실됩니다.

+8

(나는 Twitter에서 돼지를 연구한다) : 110-150 %의 숫자는 다소 임의적이다. Pig는 많은 최적화 작업을 수행하기 때문에 코드보다 훨씬 빠를 것입니다. 근본적으로, 그것은 MR로 물건을 변환하므로 MR보다 빠를 수 없습니다. 그러나 간단한 초급 - 중급 MR 코드는 종종 돼지에게 빠질 것입니다. – SquareCog

+0

통찰력을위한 Thnx. –

3

2009 년 현재이 paper에서 돼지는 일반 MapReduce보다 1.5 배 느리게 실행됩니다. Hadoop 위에 구축 된 고급 툴은 일반 MapReduce보다 느리게 수행 될 것으로 예상되지만, MapReduce가 많은 양의 상용 코드 (예 : 바이너리 비교 프로그램)를 작성하는 고급 사용자를 최적으로 수행하도록하는 것은 사실입니다.

Pangool (개발자가 됨)이라는 새로운 API를 언급하는 것이 적절하다는 것을 알았습니다. 많은 것들을 코드 작성 및 이해하기가 쉬워 진 평범한 Hadoop MapReduce API로 대체하려고합니다 (보조 정렬, 측면 조인). Pangool은 퍼포먼스 오버 헤드 (간략하게는 first benchmark에서 5 %)를 부과하지 않으며 원래 MapRed API의 모든 유연성을 유지합니다.