ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • presto
    ANYTHING 2022. 5. 19. 17:10
    반응형

    Presto란?

    • facebook 에서 대량의 데이터에 대해 대화형 분석을 실행하기 위해 만든 오픈소스 분산 SQL 쿼리 엔진.
    • TB, PB 단위의 데이터를 분산쿼리를 사용하여 분석할 수 있는 툴

    Presto 구성 요소

    • Coordinator
      • Presto 서비스의 중심.
      • Master 역할 1개만 존재.
      • 하는일
        • Client 로 부터 요청을 받음.
        • SQL 구문 파싱, 쿼리 플래닝
        • 쿼리를 실행할 Worker 노드 조정
        • Worker 노드의 활동 트래킹
    • Worker
      • Slave 역할로 여러개 존재 가능
      • Coordinator 에서 전달받은 테스크를 수행하고, 데이터를 처리함.
      • 테스크 수행 결과는 Worker 에서 바로 Client 로 전달됨.

    프레스토의 쿼리 실행 형태

    1. ANSI-SQL 로 작성된 프레스토에서 실행가능한 쿼리문을 받음.
    2. 프레스토 워커에서 실행할 수 있는 쿼리 형태로 변환
    3. 실행 단계별로 분리
    4. 각 단계마다 수행 가능한 업무 단위로 분할.
      1. 각 업무 단위는 입력 데이터와 출력 데이터가 존재하는 블랙박스 형태로 만들어저 fragment 에서 실행
    5. 업무 단위간에 데이터를 교환할 수 있도록 연결고리 구성

    쿼리 실행 과정

    출처 : https://guide-fin.ncloud-docs.com/docs/analytics-cloudhadoop-chadoop-4-6

    1. Presto Worker 프로세스 시작 및 Coordinator의 Discovery Server에 등록
      • Discovery Server에 등록되어야 Coordinator가 태스크 실행에 Worker를 배정할 수 있음
    2. Client는 HTTP로 쿼리를 Coordinator에 전송
    3. Coordinator는 쿼리 플랜을 작성 및 Connector Plugin에 스키마 데이터 요청
    4. Coordinator에서 Worker로 수행해야 할 태스크를 전달
    5. Worker는 Connector Plugin을 통해 Data Sources로부터 데이터를 읽음
    6. Worker는 메모리에서 태스크를 수행
    7. 실행 결과를 바로 Client에 전달

    쿼리 튜닝하는 법

    • 쿼리 튜닝을 위해 쿼리가 어떻게 실행되는지 알아야 함.
    • 대부분의 SQL 처리 엔진에서 사용하는 아래의 명령어를 사용하여 실행계획을 알 수 있음.
    • 데이터베이스의 실행계획과 결과가 다름.
    EXPLAIN query_statement
    

     

    수행시간이나, 대략적인 데이터의 크기를 보고 싶으면 아래의 명령어를 사용

    EXPLAIN ANALYZE query_statement
    
    • 각 부분에서 사용하는 리소스(CPU, 사용 추정 행수)가 표시 됨.
    • 표준 편차를 같이 제공하므로 대략적인 크기를 산정할 수 있음.

    레퍼런스

     

    반응형
Designed by Tistory.