-
맵리듀스의 제약과 Apache TezData 2021. 9. 2. 23:04반응형
하둡의 분산처리엔진인 맵리듀스는 이후 많은 분산처리엔진에 영향을 주었습니다.
맵리듀스 개선에 대한 많은 논의와 연구와 동시에 한계점을 파악하고 새로운 프레임워크를 만드는데 그러한 맵리듀스의 한계점이 많이 고려되었는데요. 이 글에서는 맵리듀스의 한계점과 하둡 환경에서 대체제로 개선된 성능을 보여주는 테즈(Apache Tez)를 비교하는 내용을 다뤄보도록 하겠습니다.
맵리듀스의 제약들 [1]
- 하이 레벨 언어의 부재: 맵리듀스 자체로는 어떠한 하이 레벨 언어와 쿼리 레벨의 최적화를 제공하지 않음. 유저는 맵, 리듀스 함수로 구현해야 함.
- 스키마와 인덱스가 없음: 스키마와 인덱스가 없음. MR 잡은 인풋에 대해 작업을 하고 스토리지에 바로 저장할 수 있으나 이러한 부분은 데이터 모델링의 장점을 제외해 버림. 맵리듀스는 인풋을 읽을 때 모든 인풋을 파싱해야하고, 그것을 데이터 프로세싱을 위해 데이터 객체로 변형해야하기에 성능 저하를 발생시킴.
- 하나의 고정된 데이터 플로우: 맵리듀스는 간단한 추상화를 통해 사용하기 편하지만, 데이터 플로우가 고정되어 있음. 그러므로, 많은 복잡한 알고리즘은 맵리듀스로 구현하기 어려움. 다수의 인풋을 요구하는 알고리즘의 경우 맵리듀스에서 지원될 수 없음.
- 저효율: 확장성과 fault-tolerance가 주요 목표였기에 맵리듀스는 IO에 최적화 되어 있지 않음. 맵과 리듀스는 blocking 오퍼레이션이라서, 현재 스테이지의 모든 task가 끝나지 않으면 다음 단계로 넘어가지 못함. 또한, block-level 리스타트, 1 to 1 셔플링 전략, 간단한 런타입 스케쥴링도 효율을 낮추고 있음. 맵리듀스는 DBMS가 하는 것처럼 노드 간 데이터 송신을 최적화 하지 않기에 어떠한 경우 DBMS보다 낮은 성능을 보임.
Apache Tez의 특징
- 사용자가 컴퓨팅을 DAG로 모델할 수 있도록 함
- DAG 정의를 동적으로 진화시키도록 API를 제공
- 확장성 있고 효율적인 구현을 제공함
- 실행 성능
- 맵리듀스보다 빠름
- 최적 리소스 사용
- 런타입 시 플랜 재설정
- 동적 물리 데이터흐름 결정
Hadoop MapReduce vs Apache Tez
- 테즈는 인터랙티브 쿼리 지원
- 테즈는 리듀스 작업 전에 언제나 Map을 생성하진 않음
- 테즈는 HDFS에 중간 결과물을 write하지 않음
- 테즈는 tasks를 적은 수의 잡으로 나누고, 컨테이너 reuse를 사용하여 컨테이너 생성으로 인한 지연을 피함
Reference
[1] Parallel Data Processing with MapReduce: A Survey
[2] Apache Tez: A Unifying Framework for Modeling and Building Data Processing Applications
[3] Analyzing performance of Apache Tez and MapReduce with hadoop multinode cluster on Amazon cloud
[4] https://www.sjsu.edu/people/robert.chun/courses/CS259Fall2013/s3/F.pdf
반응형'Data' 카테고리의 다른 글
Apache Tez란? (0) 2021.09.02 맵리듀스 처리 흐름 알아보기 (MapReduce Phases) (0) 2021.09.01 맵리듀스 작업 개선을 위한 추가적인 사항들 (2) 2021.08.28 맵리듀스란? (Hadoop MapReduce) (2) 2021.08.22 CDC(Change Data Capture)란? (0) 2021.07.16 Apache Spark(아파치 스파크) Web UI 관찰하기 (2) 2021.07.01 Apache Spark(아파치 스파크) 학습을 위한 도커 환경 셋업하기 (feat. Zeppelin) (0) 2021.06.20 Databricks(데이터브릭스) Platform 아키텍쳐 및 주요개념 살펴보기 (2) 2021.06.12