ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Apache Tez란?
    Data 2021. 9. 2. 23:18
    반응형

     

    주요개념

     

    • 빠르게 확장성있고 효율적인 데이터 플로우 중심 엔진 개발을 목적으로 함. 
    • 조금 학술적인 개념을 많이 사용하였고 그것이 코드에 반영되어 있음
      • DAG: Directed Acyclic Graph로 데이터 프로세싱 워크플로우를 나타냄. 데이터는 edge의 방향으로 흐름.
      • Vertex: 프로세싱의 논리적인 흐름을 나타냄. 프로세싱 스텝은 애플리케이션에서 제공된 코드를 통해 데이터를 변경함.
      • Logical DAG: 논리적 DAG은 vertices 세트로 구성되며 각 vertex는 특정 컴퓨팅 스텝을 나타냄.
      • Task: vertex 내에서 한 단위의 프로세싱을 나타냄. 분산 프로세싱에서 하나의 vertex로 나타내어지는 논리적 work는 물리적으로 여러 기기에서 실행되는 tasks들로 구성됨
    • Physical DAG: 물리적 DAG는 논리적 DAG의 vertices를 확장하여 실질적인 task로 대체하며 구성되게 됨
    • Edge: 프로듀서와 컨슈머 간의 데이터 이동을 나타냄. 논리적 DAG의 vertices 간의 edge는 데이터 의존성을 나타내고, 물리적 DAG의 vertices 간의 edge는 데이터 전송을 나타냄.

     

     

    내부구조

     

    • 논리적 DAG는 각 Vertex에 Input, Processor, Output로 이뤄진 task로 구성되며 물리적 DAG를 만듬

    • DAG 구성 시에 각 Vertex는 VertexManager와 관계를 맺음
    • VertexManager는 DAG 실행 중 vertex 재설정, vertex 병렬화를 담당함

     

    실행최적화

     

    • Container reuse
      • YARN에 의해 할당된 컨테이너 안에서 Taks가 실행됨
      • Task가 종료되고 나서 App Master는 사용하던 container를 반납하고 다음 task를 위해 새로운 container를 요청하게 되는데, 이러한 리소스 재요청에서 오버헤드가 발생하기에 컨테이너를 다음 task 실행에 재사용하여 최적화 할 수 있음(특정 조건이 맞는다면)
      • 이러한 긴 시간의 컨테이너 실행은 Java Optimizer에게 많은 learning time을 제공하는 장점도 존재함
      • 다른 dag이 컨테이너를 재사용하는 케이스 (다음에 나올 Session mode가 적용된 상태)

     

     

    • Session
      • 컨테이너 재사용 개념에서 한발 더 나아가 App Master가 session 모드로 실행되며 클라이언트에서 요청받은 DAG들을 하나의 세션에서 실행함
      • 여러 DAG들의 task들이 컨테이너를 재사용하고 더 높은 효율화를 이룸
      • 실제 task 실행 전에 AM에게 컨테이너를 요청하여 task 전에 pre-warmed 될 수 있으며 이 부분에서 몇몇의 JVM 최적화가 적용되도록 하는 코드 실행이 가능

     

    • Shared objects registry
      • task에 의해 발생하는 객체에 대한 인메모리 캐싱을 지원
      • 하나의 vertex, DAG 또는 session 레벨의 캐싱 가능

     

    Reference

    [1] http://web.eecs.umich.edu/~mosharaf/Readings/Tez.pdf

    [2] https://tsktech.medium.com/apache-tez-2fd0d6a1d4e3

     

    반응형
Kaden Sungbin Cho