Data

맵리듀스의 제약과 Apache Tez

Kaden Sungbin Cho 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

반응형