-
반응형
Presto란?
- facebook 에서 대량의 데이터에 대해 대화형 분석을 실행하기 위해 만든 오픈소스 분산 SQL 쿼리 엔진.
- TB, PB 단위의 데이터를 분산쿼리를 사용하여 분석할 수 있는 툴
Presto 구성 요소
- Coordinator
- Presto 서비스의 중심.
- Master 역할 1개만 존재.
- 하는일
- Client 로 부터 요청을 받음.
- SQL 구문 파싱, 쿼리 플래닝
- 쿼리를 실행할 Worker 노드 조정
- Worker 노드의 활동 트래킹
- Worker
- Slave 역할로 여러개 존재 가능
- Coordinator 에서 전달받은 테스크를 수행하고, 데이터를 처리함.
- 테스크 수행 결과는 Worker 에서 바로 Client 로 전달됨.
프레스토의 쿼리 실행 형태
- ANSI-SQL 로 작성된 프레스토에서 실행가능한 쿼리문을 받음.
- 프레스토 워커에서 실행할 수 있는 쿼리 형태로 변환
- 실행 단계별로 분리
- 각 단계마다 수행 가능한 업무 단위로 분할.
- 각 업무 단위는 입력 데이터와 출력 데이터가 존재하는 블랙박스 형태로 만들어저 fragment 에서 실행
- 업무 단위간에 데이터를 교환할 수 있도록 연결고리 구성
쿼리 실행 과정
- Presto Worker 프로세스 시작 및 Coordinator의 Discovery Server에 등록
- Discovery Server에 등록되어야 Coordinator가 태스크 실행에 Worker를 배정할 수 있음
- Client는 HTTP로 쿼리를 Coordinator에 전송
- Coordinator는 쿼리 플랜을 작성 및 Connector Plugin에 스키마 데이터 요청
- Coordinator에서 Worker로 수행해야 할 태스크를 전달
- Worker는 Connector Plugin을 통해 Data Sources로부터 데이터를 읽음
- Worker는 메모리에서 태스크를 수행
- 실행 결과를 바로 Client에 전달
쿼리 튜닝하는 법
- 쿼리 튜닝을 위해 쿼리가 어떻게 실행되는지 알아야 함.
- 대부분의 SQL 처리 엔진에서 사용하는 아래의 명령어를 사용하여 실행계획을 알 수 있음.
- 데이터베이스의 실행계획과 결과가 다름.
EXPLAIN query_statement
수행시간이나, 대략적인 데이터의 크기를 보고 싶으면 아래의 명령어를 사용
EXPLAIN ANALYZE query_statement
- 각 부분에서 사용하는 리소스(CPU, 사용 추정 행수)가 표시 됨.
- 표준 편차를 같이 제공하므로 대략적인 크기를 산정할 수 있음.
레퍼런스
반응형'ANYTHING' 카테고리의 다른 글
데이터 일관성과 메시징: Outbox 패턴과 대안들 (0) 2024.11.28 문서자료 작성. 나만 어려운가? (2) 2024.11.08 Re:dash (0) 2022.05.19 고대인들이 무거운 돌을 가볍게 운반한 원리 (0) 2019.04.19 T머니 데이터 공개를 보면서 느끼는 소회... (0) 2019.04.11