ANYTHING

presto

.노을. 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, 사용 추정 행수)가 표시 됨.
  • 표준 편차를 같이 제공하므로 대략적인 크기를 산정할 수 있음.

레퍼런스

 

반응형