--- title: "Presto 사용" slug: "chadoop-app5-vpc" tags: ["cloud hadoop"] updated: 2026-08-20T09:03:19Z published: 2026-08-20T09:03:19Z canonical: "guide-gov.ncloud-docs.com/chadoop-app5-vpc" --- > ## 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) 사용

VPC 환경에서 이용 가능합니다.

[Presto(Trino)](http://prestodb.github.io/){target="_blank"}는 테라바이트, 페타바이트 단위의 데이터를 분산 쿼리를 사용하여 분석할 수 있는 툴입니다. HDFS 뿐만 아니라 Hive warehouse, RDBMS 등 다양한 소스로부터 데이터를 읽어올 수 있습니다. 쿼리가 MapReduce Job으로 실행되는 [Hive](https://hive.apache.org/){target="_blank"}, [Pig](https://pig.apache.org/){target="_blank"}와 달리, Presto(Trino)에는 별도의 쿼리 실행 엔진이 구현되어 있습니다. 단계별 결과를 디스크에 쓰지 않고 메모리에서 메모리로 데이터를 전달하는 구조이기 때문에 HDFS에 저장된 데이터를 Hive보다 빠르고 인터렉티브하게 분석할 수 있습니다. 따라서, [Tableau](https://onlinehelp.tableau.com/current/pro/desktop/en-us/examples_presto.htm){target="_blank"} 같은 [BI Tool](https://en.wikipedia.org/wiki/Business_intelligence_software){target="_blank"}에는 Hive보다 Presto(Trino)가 연동하기에 적합합니다. :::(Info) (참고) * Cloud Hadoop 1.9까지는 Presto 란 이름으로 사용되었고, Cloud Hadoop 2.0 에서는 Trino 라는 이름으로 사용됩니다. * Presto(Trino) 또한 Hive, Pig처럼 OLAP 작업을 처리하기 위해 설계되었기 때문에 트랜젝션(Transaction) 중심의 전통적인 RDBMS를 대체할 수는 없습니다. ::: ## Presto(Trino) 구성 요소 Presto(Trino) 서비스를 구성하는 컴포넌트는 크게 두 가지로 Coordinator, Worker가 있습니다. Coordinator는 Master 역할로 한 개, Worker는 Slave 역할로 여러 개 존재할 수 있습니다. Coordinator와 Worker, Worker 노드끼리 통신할 때는 REST API를 사용합니다. * **Coordinator** Coordinator는 Presto(Trino) 서비스의 중심으로 아래와 같은 역할을 수행합니다. * Client로부터 요청을 받음 * SQL 구문 파싱, 쿼리 플래닝 * 쿼리를 실행할 Worker 노드 조정, Worker 노드의 활동 트래킹 * **Worker** Worker는 Coordinator에서 전달받은 태스크를 수행하고, 데이터를 처리합니다. 태스크 수행 결과는 바로 Worker에서 Client로 전달합니다. ## 쿼리 실행 과정 쿼리 실행 과정은 다음과 같습니다. (아래 이미지 화면 참고) 1. Presto(Trino) 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){height="" width="80%"} ## 데이터 소스 * **Connector** Presto(Trino)에서 Connector는 Database에서 드라이버와 같은 역할을 수행합니다. 즉, 데이터 소스에서 데이터를 읽어 올 수 있도록 Coordinator 또는 Worker와 데이터 소스 사이를 이어주는 역할을 합니다. Presto(Trino)는 기본적으로 Hive, MySQL, Kafka 등 여러 데이터 소스에 대한 [Connector를 제공](https://prestodb.github.io/docs/current/connector.html){target="_blank"}합니다. * **Catalog** 카탈로그는 Connector에 대한 마운트 포인트입니다. 모든 카탈로그는 특정 Connector와 관련되어 있습니다. Presto(Trino)는 카탈로그에 마운트된 Connector를 통해서 데이터 소스에 접근할 수 있습니다. 예를 들어, Hive Connector로 Hive warehouse에 접근하기 위해서는 `/etc/presto/catalog` 아래 Hive 카탈로그(`hive.properties`)를 구성하면 됩니다.
Presto(Trino) 쿼리에서는 하나 이상의 카탈로그를 사용할 수 있습니다. 즉, 하나의 쿼리에서 여러 개의 데이터 소스를 사용할 수 있습니다.
카탈로그는 Presto(Trino) configuration 디렉터리(`/etc/presto/`) 아래 `config.properties`에 정의되어 있습니다. * **Schema** 스키마는 테이블을 정리하기 위한 방법입니다. 하나의 카탈로그와 스키마로 한 번에 쿼리를 수행할 수 있는 대상인 **테이블 세트**를 정의할 수 있습니다.
Presto(Trino)로 Hive나 RDBMS에 접근할 때 스키마는 여기서 대응되는 개념인 데이터베이스와 같습니다. 이 밖에 다른 데이터 소스에서는 스키마를 구성하기 위한 테이블을 조직화할 수 있습니다. * **Table** RDBMS의 테이블 개념과 동일합니다. Presto(Trino)에서 테이블을 참조할 때에는 `fully-qualified` 즉, 카탈로그, 스키마, 테이블명을 온점(.)으로 분리하여 명시해야 합니다. (예: **hive.samples.t1**) :::(Info) (참고) Ranger를 사용해 Catalog, Schema, Table 레벨에 대한 접근 권한을 제어할 수 있습니다. 자세한 내용은 [Trino 접근 권한 관리](/docs/hadoop-chadoop-3-8-vpc#trino-접근-권한-관리)를 참조해 주십시오. ::: ## Presto(Trino) 클러스터 사용 ### 클러스터 생성 네이버 클라우드 플랫폼 콘솔에서 Cloud Hadoop 클러스터를 생성해 주십시오. 클러스터 생성에 대한 자세한 내용은 [클러스터 생성](/docs/hadoop-chadoop-2-1-vpc#클러스터생성)을 참고해 주십시오. :::(Info) (참고) * Cloud Hadoop 1.3부터 Presto v0.240가 설치된 클러스터를 사용할 수 있습니다. ![cloudhadoop-create_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/cloudhadoop-create_ko.png){height="" width="70%"} * Cloud Hadoop 1.3에서는 클러스터를 Presto(Trino) 타입으로 생성하지 않더라도 Ambari Add Service를 이용하여 Presto(Trino)를 추가할 수 있습니다. ::: ### Ambari UI에서 Presto(Trino) 서비스 확인 Presto(Trino)를 설치하면 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){height="" width="80%"} * Summary: 컴포넌트가 설치된 호스트 확인 * Configs: Presto(Trino) 서비스의 configuration 변경 * Quick Links: Presto(Trino) Discovery UI * 이 링크를 통해서 접속하려면 [터널링](/docs/chadoop-4-vpc)이 필요합니다. 콘솔에서 제공하는 Web UI 링크를 이용한 접속을 권장합니다. 자세한 내용은 [Presto(Trino) Discovery UI 접속](#presto-discovery-ui-접속)을 참조해 주십시오. ### 주요 Configuration * **jvm.properties** Coordinator, Worker 서버에서 사용하는 JVM 옵션을 입력합니다. `-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){height="" width="80%"} * **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){height="" width="80%"} :::(Warning) (주의) `http-server.http.port`를 변경할 경우 Coordinator의 `http-server.http.port`와 Worker의 `http-server.http.port`를 동일하게 변경해야 합니다. 서로 다른 포트로 지정 시 통신할 수 없습니다. ::: * **node.properties** Presto(Trino) 데몬이 사용하는 로그 디렉터리, pid 디렉터리 등을 설정할 수 있습니다. 이 디렉터리를 변경하려면 각 서버에서 디렉터리의 소유자와 권한을 체크해야합니다. `node.environment`에서 현재 사용하는 환경 이름을 지정할 수 있습니다. ![chadoop-4-8-007_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-8-007_ko.png){height="" width="80%"} ### Trino CLI Trino CLI는 쿼리를 실행할 수 있는 반응형 셸(shell)을 제공합니다. **Trino Clis** 역할이 할당된 호스트에서는 모두 셸을 사용할 수 있습니다. Trino CLI 사용에 대한 자세한 내용은 [Trino CLI Documentation](https://prestodb.io/docs/current/installation/cli.html)을 참고해 주십시오. * Trino CLI를 사용하려면 먼저 해당 환경이 구성된 엣지 노드에 SSH로 접속해야 합니다. ```bash /usr/lib/trino/bin/trino-cli --server :8285 ``` :::(Info) (참고) Presto(Trino) Coordinator 서버 접속 시 ``는 엣지 노드(e-001)의 Private IP 주소입니다. **Ambari UI > Hosts** 메뉴에서 확인할 수 있습니다. ::: * **사용 가능한 Catalog 확인** ```bash trino> show catalogs; Catalog --------- hive system (2 rows) Query 20260130_085922_00000_8gfjs, FINISHED, 2 nodes Splits: 12 total, 12 done (100.00%) 1.41 [0 rows, 0B] [0 rows/s, 0B/s] ``` :::(Info) (참고) 데이터 소스를 추가해서 쿼리를 수행하는 방법은 [Presto(Trino)로 Hive Warehouse 데이터 분석하기](/docs/chadoop-app6-vpc) 가이드에서 더 자세하게 설명합니다. ::: ### Presto(Trino) Discovery UI 접속 Cloud Hadoop 콘솔에서 **[Application 별 보기]** 를 통해 Presto(Trino) Discovery UI에 접속할 수 있습니다. 자세한 내용은 [Application 별 보기](/docs/chadoop-3-vpc#application-별-보기)를 참조해 주십시오. ![cloudhadoop-access-webui_ko](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/cloudhadoop-access-webui_ko.png){height="" width="50%"} Presto(Trino) Discovery UI 페이지에서 Presto(Trino) 서비스에 대한 전체적인 상태를 알 수 있습니다. 쿼리 기록도 조회할 수 있습니다. ![chadoop-4-7-005_ko.png](https://cdn.document360.io/f2d93c92-8957-408f-94df-b9b370f76a32/Images/Documentation/chadoop-4-7-005_ko.png){height="" width="80%"}