--- title: "Presto 사용" slug: "hadoop-chadoop-4-7" tags: ["cloud hadoop"] updated: 2026-10-22T09:13:22Z published: 2026-10-22T09:13:22Z canonical: "guide-gov.ncloud-docs.com/hadoop-chadoop-4-7" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Presto(Trino) 사용 Classic 환경에서 이용 가능합니다. [Presto](http://prestodb.github.io/)는 테라바이트, 페타바이트 단위의 데이터를 분산 쿼리(Distributed queries)를 사용하여 분석할 수 있는 툴입니다. HDFS 뿐만 아니라 Hive warehouse, RDBMS 등 다양한 소스로부터 데이터를 읽어올 수 있습니다. 쿼리가 MapReduce Job으로 실행되는 [Hive](https://hive.apache.org/), [Pig](https://pig.apache.org/)와 달리, Presto에는 별도의 쿼리 실행 엔진이 구현되어 있습니다. 단계별 결과를 디스크에 쓰지 않고 메모리에서 메모리로 데이터를 전달하는 구조이기 때문에 HDFS에 저장된 데이터를 Hive보다 빠르고 인터렉티브하게 분석할 수 있습니다. 따라서, [Tableau](https://onlinehelp.tableau.com/current/pro/desktop/en-us/examples_presto.htm) 같은 [BI Tool](https://en.wikipedia.org/wiki/Business_intelligence_software)에는 Hive보다 Presto가 연동하기에 적합합니다. 참고 - Cloud Hadoop 1.9까지는 Presto 란 이름으로 사용되었고, Cloud Hadoop 2.0 에서는 Trino 라는 이름으로 사용됩니다. - Presto 또한 Hive, Pig처럼 OLAP 작업을 처리하기 위해 설계되었기 때문에 트랜젝션(Transaction) 중심의 전통적인 RDBMS를 대체할 수는 없습니다. ## Presto 구성 요소 Presto 서비스를 구성하는 컴포넌트는 크게 두 가지로 Coordinator, Worker가 있습니다. Coordinator는 Master 역할로 한 개, Worker는 Slave 역할로 여러 개 존재할 수 있습니다. Coordinator와 Worker, Worker 노드끼리 통신할 때는 REST API를 사용합니다. - **Coordinator** Coordinator는 Presto 서비스의 중심으로 아래와 같은 역할을 수행합니다. - Client로부터 요청을 받음 - SQL 구문 파싱, 쿼리 플래닝 - 쿼리를 실행할 Worker 노드 조정, Worker 노드의 활동 트래킹 - **Worker** Worker는 Coordinator에서 전달받은 태스크를 수행하고, 데이터를 처리합니다. 태스크 수행 결과는 바로 Worker에서 Client로 전달합니다. ## 쿼리 실행 과정 쿼리 실행 과정은 다음과 같습니다. (아래 이미지 화면 참고) 1. Presto Worker 프로세스 시작 및 Coordinator의 Discovery 서버에 등록 - Discovery 서버에 등록되어야 Coordinator가 태스크 실행에 Worker를 배정할 수 있음 2. Client는 HTTP로 쿼리를 Coordinator에 전송 3. Coordinator는 쿼리 플랜 작성 및 Connector 플러그인에 스키마 데이터 요청 4. Coordinator에서 Worker로 수행해야 할 태스크를 전달 5. Worker는 Connector 플러그인을 통해 데이터 소스(Data Sources)로부터 데이터를 읽음 6. Worker는 메모리에서 태스크를 수행 7. 실행 결과를 바로 Client에 전달 ![chadoop-4-7-001.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-7-001.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) ## 데이터 소스 - **Connector** Presto에서 Connector는 Database에서 드라이버와 같은 역할을 수행합니다. 즉, 데이터 소스에서 데이터를 읽어 올 수 있도록 Coordinator 또는 Worker와 데이터 소스 사이를 이어주는 역할을 합니다. Presto는 기본적으로 Hive, MySQL, Kafka 등 여러 데이터 소스에 대한 [Connector를 제공](https://prestodb.github.io/docs/current/connector.html)합니다. - **Catalog** 카탈로그는 Connector에 대한 마운트 포인트입니다. 모든 카탈로그는 특정 Connector와 관련되어 있습니다. Presto는 카탈로그에 마운트된 Connector를 통해서 데이터 소스에 접근할 수 있습니다. 예를 들어, Hive Connector로 Hive warehouse에 접근하기 위해서는 `/etc/presto/catalog` 아래 Hive 카탈로그(`hive.properties`)를 구성하면 됩니다. Presto 쿼리에서는 하나 이상의 카탈로그를 사용할 수 있습니다. 즉, 하나의 쿼리에서 여러 개의 데이터 소스를 사용할 수 있습니다. 카탈로그는 Presto configuration 디렉터리(`/etc/presto/`) 아래 `config.properties`에 정의되어 있습니다. - **Schema** 스키마는 테이블을 정리하기 위한 방법입니다. 하나의 카탈로그와 스키마로 한 번에 쿼리를 수행할 수 있는 대상인 **테이블 세트**를 정의할 수 있습니다. Presto로 Hive나 RDBMS에 접근할 때 스키마는 여기서 대응되는 개념인 데이터베이스와 같습니다. 이 밖에 다른 데이터 소스에서는 스키마를 구성하기 위한 테이블을 조직화할 수 있습니다. - **Table** RDBMS의 테이블 개념과 동일합니다. Presto에서 테이블을 참조할 때에는 `fully-qualified` 즉, 카탈로그, 스키마, 테이블명을 온점(.)으로 분리하여 명시해야 합니다. (예: **hive.samples.t1**) ## Presto 클러스터 사용 ### 클러스터 생성 콘솔에서 클러스터 생성 시 **클러스터 Type**을 **Presto**로 선택하십시오. 클러스터 생성에 대한 자세한 내용은 [클러스터 생성](/docs/hadoop-chadoop-2-1#%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0%EC%83%9D%EC%84%B1)을 참고해 주십시오. 참고 - Cloud Hadoop 1.1부터 Presto v0.214가 설치된 클러스터를 사용할 수 있습니다. ![chadoop-4-7-002_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-7-002_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) - 클러스터를 Presto 타입으로 생성하지 않았더라도, Ambari Add Service를 이용해서 Presto를 추가할 수 있습니다. ### Ambari UI에서 Presto 서비스 확인 Presto를 설치하면 Ambari UI에서 다음과 같이 서비스를 확인할 수 있습니다. 이 페이지에서 서비스의 각 컴포넌트를 시작, 중지할 수 있습니다. ![chadoop-4-7-003_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-7-003_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) - Summary: 컴포넌트가 설치된 호스트 확인 - Configs: Presto 서비스의 configuration 변경 - Quick Links: Presto Discovery UI - 이 링크를 통해서 접속하려면 [터널링](/docs/hadoop-chadoop-3-6)이 필요합니다. [공인 IP](/docs/hadoop-chadoop-4-7#presto-discovery-ui-%EC%A0%91%EC%86%8D)를 통한 접속을 권장합니다. ### 주요 Configuration - **jvm.properties** Coordinator, Worker 서버에서 사용하는 JVM option을 입력합니다. `-Xmx`옵션으로 JVM heap을 조정할 수 있습니다. Coordinator 노드와 Worker 노드의 스펙이 다를 수 있기 떄문에 메모리 설정을 분리해서 적용합니다. **jvm.properties** 구성은 아래처럼 역할별로 분리되어 있습니다. 실제 서버의 `/etc/presto/conf`경로 아래에는 동일한 파일 이름인 `jvm.properties`이 존재합니다. ![chadoop-4-8-005_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-8-005_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) - **config.properties** 흔하지 않은 경우이지만, 필요하다면 **config.properties**도 Coordinator/Worker 역할별로 다르게 메모리를 설정할 수 있습니다. 주요 구성 항목의 정의는 아래와 같습니다. | 항목 | 기본 값 | 설명 | | --- | --- | --- | | query.max-memory-per-node | 1G | - 하나의 쿼리가 Worker에서 사용할 수 있는 User 메모리의 최댓값 - 어떤 쿼리를 통해 각 Worker가 할당받은 메모리값 중에서, 이 한계를 넘어선 것이 하나라도 있으면 이 쿼리 실행을 취소 | | query.max-memory | 20G | - 하나의 쿼리가 전체 클러스터에 걸쳐서 사용할 수 있는 메모리의 최댓값 - 어떤 쿼리를 통해 모든 Worker 노드에 할당한 User 메모리의 합이 이 한계를 넘어서면 쿼리 실행을 취소 | | query.max-total-memory-per-node | 2G | - 하나의 쿼리가 전체 클러스터에 걸쳐서 사용할 수 있는 User/System 메모리의 최댓값 - 어떤 쿼리를 통해 모든 Worker 노드에 할당한 User/System 메모리의 합이 이 한계를 넘어서면 쿼리 실행을 취소 | ![chadoop-4-8-006_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-8-006_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) 주의 `http-server.http.port`를 변경할 경우 Coordinator의 `http-server.http.port`와 Worker의 `http-server.http.port`를 동일하게 변경해야 합니다. 서로 다른 포트로 지정 시 통신할 수 없습니다. - **node.properties** Presto 데몬이 사용하는 로그 디렉터리, pid 디렉터리 등을 설정할 수 있습니다. 이 디렉터리를 변경하려면 각 서버에서 디렉터리의 소유자와 권한을 체크해야합니다. `node.environment`에서 현재 사용 중인 environment 이름을 지정할 수 있습니다. ![chadoop-4-8-007_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-8-007_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) ### Presto CLI Presto CLI는 쿼리를 실행할 수 있는 반응형 셸을 제공합니다. **Presto Clis** 역할이 할당된 호스트에서는 모두 셸을 사용할 수 있습니다. Presto CLI에 사용에 대한 자세한 내용은 [Presto CLI Documentation](https://prestodb.io/docs/current/installation/cli.html)을 참고해 주십시오. - **Presto Coordinator 서버 접속** ``` /usr/lib/presto/bin/presto-cli --server :8285 ``` - **사용 가능한 Catalog 확인** ``` presto> show catalogs; Catalog --------- system (1 row) Query 20190430_020419_00001_j79dc, FINISHED, 2 nodes Splits: 36 total, 36 done (100.00%) 0:07 [0 rows, 0B] [0 rows/s, 0B/s] ``` 참고 데이터 소스를 추가해서 쿼리를 수행하는 방법은 [Presto로 Hive Warehouse 데이터 분석하기](/docs/hadoop-chadoop-4-6)에서 더 자세하게 설명합니다. ### Presto Discovery UI 접속 Cloud Hadoop 콘솔에서 **Application 별 보기**를 통해 Hue web UI에 접속할 수 있습니다. 자세한 내용은 [Application별 보기](/docs/hadoop-chadoop-3-1#Application%EB%B3%84%EB%B3%B4%EA%B8%B0)를 참조해 주십시오. ![chadoop-4-7-004_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-7-004_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D) Presto Discovery UI 페이지에서 Presto 서비스에 대한 전체적인 상태를 알 수 있습니다. 쿼리 기록도 조회할 수 있습니다. ![chadoop-4-7-005_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-7-005_ko.png?sv=2026-02-06&spr=https&st=2026-10-29T12%3A50%3A41Z&se=2026-10-29T13%3A50%3A41Z&sr=c&sp=r&sig=tnWr%2BAFrqnF5expycg8SVpgKqYz25XLa%2BUrUC4sP9qc%3D)