플러그인

플러그인 (Plugins)

Trino는 플러그인 아키텍처를 사용해 기능을 확장하고 다양한 데이터 소스 및 다른 시스템과 통합해요. Trino에는 바이너리 패키지(특히 tarball과 Docker 이미지)의 일부로 많은 플러그인이 포함돼 있어요.

출처: 문서

본문

Trino는 플러그인 아키텍처를 사용해 기능을 확장하고 다양한 데이터 소스 및 다른 시스템과 통합해요. Trino에는 바이너리 패키지, 특히 tarball과 Docker 이미지의 일부로 많은 플러그인이 포함돼 있어요.

플러그인은 다음 기능 중 일부를 구현해요.

  • 커넥터(Connectors)
  • 인증 타입(Authentication types)
  • 접근 제어 시스템(Access control systems)
  • 이벤트 리스너(Event listeners)
  • 추가 타입과 전역 함수(Additional types and global functions)
  • 블록 인코딩(Block encodings)
  • 리소스 그룹 구성 매니저(Resource group configuration managers)
  • 세션 프로퍼티 구성 매니저(Session property configuration managers)
  • Exchange 매니저(Exchange managers)
  • Spooling 매니저(Spooling managers)

모든 플러그인은 특정 기능을 지원하기 위한 것이고, 여러분의 사용 사례에 필요하지 않을 수 있으므로 Trino 사용에 있어 모두 선택적이에요. 플러그인은 Trino 설치의 plugin 폴더에 있으며, Trino 시작 중에 자동으로 로드돼요.

다운로드 (Download)

보통 플러그인 다운로드는 필요하지 않아요. Trino 바이너리가 많은 플러그인을 바이너리 패키지에 포함하고 있기 때문이에요. 모든 Trino 릴리스는 각 플러그인을 ZIP 아카이브로 GitHub에 배포해요. 자세한 내용은 List of plugins 문서를 참고하세요.

구체적인 이름은 각 플러그인의 소스 코드 pom.xml에 정의된 Maven 좌표에서 파생돼요. 예를 들어 PostgreSQL 커넥터 플러그인은 plugin/trino-postgresql 디렉토리에 있으며, pom.xml 파일에 다음 식별자 섹션이 들어 있어요.

<parent>
    <groupId>io.trino</groupId>
    <artifactId>trino-root</artifactId>
    <version>483</version>
    <relativePath>../../pom.xml</relativePath>
</parent>

<artifactId>trino-postgresql</artifactId>
<packaging>trino-plugin</packaging>

이 좌표는 GitHub releases의 ZIP 아카이브 경로로 변환돼요. 이 URL을 사용해 플러그인을 다운로드해요. 예를 들어 PostgreSQL 커넥터 플러그인은 다음 주소에서 다운로드할 수 있어요.

https://github.com/trinodb/trino/releases/download/483/trino-postgresql-483.zip

다른 프로젝트와 조직의 플러그인 가용성은 크게 달라지며, 소스에서 플러그인을 빌드해야 할 수도 있어요.

플러그인을 다운로드할 때는 Trino 설치 버전과 호환되는 버전을 받아야 해요. 완전한 호환성은 플러그인 빌드와 배포에 사용한 Trino 버전이 같을 때만 보장되므로, 같은 버전을 사용하는 것이 권장돼요. 특정 플러그인의 문서나 소스 코드로 확인하고, 더 자세한 기술적 세부 사항은 SPI 호환성 노트를 참고하세요.

설치 (Installation)

플러그인을 설치하려면 클러스터의 모든 노드에서 Trino 설치의 plugin 디렉토리에 있는 디렉토리로 ZIP 아카이브를 추출해요. 그 디렉토리에는 필요한 모든 리소스가 들어 있어요.

예를 들어 버전 1.0example-plugin이라는 플러그인의 경우 example-plugin-1.0.zip 아카이브를 추출해요. 결과 디렉토리 example-plugin-1.0example-plugin으로 이름을 바꾸고, 클러스터의 모든 워커와 코디네이터에 있는 Trino 설치의 plugin 디렉토리로 복사해요.

📌 참고: 모든 Trino 플러그인은 plugin 디렉토리 아래의 별도 디렉토리에 있어야 해요. JAR 파일을 plugin 디렉토리에 직접 넣지 마세요. 각 플러그인 디렉토리에는 JAR 파일만 있어야 하며, 하위 디렉토리와 다른 파일은 무시돼요.

기본적으로 플러그인 디렉토리는 Trino가 설치된 디렉토리를 기준으로 한 plugin 디렉토리이지만, launcher의 plugin.dir 구성 변수로 설정할 수 있어요. Docker 이미지는 /usr/lib/trino/plugin 경로를 사용해요.

플러그인을 사용하려면 Trino를 재시작해요.

trino-packages 프로젝트에는 원하는 플러그인만 설치해 커스텀 tarball과 Docker 이미지를 만드는 예제 프로젝트가 있어요.

제거 (Removal)

기능이 필요 없거나 원하지 않으면 플러그인을 안전하게 제거할 수 있어요. 클러스터 전반에 안전하게 제거하려면 다음 단계를 따라요.

  1. 모든 노드에서 Trino를 종료해요.
  2. 모든 노드의 Trino 설치 plugin 폴더에서 해당 디렉토리를 삭제해요.
  3. 모든 노드에서 Trino를 시작해요.

관련 디렉토리 이름은 List of plugins 문서를 참고하세요. 반복 배포의 경우, 커스텀 tarball이나 커스텀 Docker 이미지를 만들어 설치용 바이너리 패키지에서 플러그인을 제거할 수 있어요.

개발 (Development)

Trino 코드베이스의 나만의 fork 또는 별도 프로젝트에서 플러그인을 개발할 수 있어요. 자세한 내용은 Developer guide를 참고하세요.

플러그인 목록 (List of plugins)

다음 플러그인 목록은 Trino 프로젝트에서 사용할 수 있어요. 이들은 빌드·릴리스 프로세스와 결과 바이너리 패키지에 포함돼요.

플러그인 디렉토리 설명 다운로드
ai-functions AI functions trino-ai-functions-483.zip
bigquery BigQuery connector trino-bigquery-483.zip
blackhole Black Hole connector trino-blackhole-483.zip
cassandra Cassandra connector trino-cassandra-483.zip
clickhouse ClickHouse connector trino-clickhouse-483.zip
delta-lake Delta Lake connector trino-delta-lake-483.zip
druid Druid connector trino-druid-483.zip
duckdb DuckDB connector trino-duckdb-483.zip
elasticsearch Elasticsearch connector trino-elasticsearch-483.zip
example-http Example HTTP connector trino-example-http-483.zip
exasol Exasol connector trino-exasol-483.zip
exchange-filesystem Fault-tolerant execution exchange file system trino-exchange-filesystem-483.zip
exchange-hdfs Fault-tolerant execution exchange file system for HDFS trino-exchange-hdfs-483.zip
faker Faker connector trino-faker-483.zip
functions-python Python user-defined functions trino-functions-python-483.zip
geospatial Geospatial functions trino-geospatial-483.zip
google-sheets Google Sheets connector trino-google-sheets-483.zip
hive Hive connector trino-hive-483.zip
http-event-listener HTTP event listener trino-http-event-listener-483.zip
http-server-event-listener HTTP server event listener trino-http-server-event-listener-483.zip
hudi Hudi connector trino-hudi-483.zip
iceberg Iceberg connector trino-iceberg-483.zip
ignite Ignite connector trino-ignite-483.zip
jmx JMX connector trino-jmx-483.zip
kafka Kafka connector trino-kafka-483.zip
kafka-event-listener Kafka event listener trino-kafka-event-listener-483.zip
lakehouse Lakehouse connector trino-lakehouse-483.zip
loki Loki connector trino-loki-483.zip
mariadb MariaDB connector trino-mariadb-483.zip
memory Memory connector trino-memory-483.zip
ml Machine learning functions trino-ml-483.zip
mongodb MongoDB connector trino-mongodb-483.zip
mysql MySQL connector trino-mysql-483.zip
mysql-event-listener MySQL event listener trino-mysql-event-listener-483.zip
opa Open Policy Agent access control trino-opa-483.zip
openlineage OpenLineage event listener trino-openlineage-483.zip
opensearch OpenSearch connector trino-opensearch-483.zip
oracle Oracle connector trino-oracle-483.zip
password-authenticators Password authentication trino-password-authenticators-483.zip
pinot Pinot connector trino-pinot-483.zip
postgresql PostgreSQL connector trino-postgresql-483.zip
prometheus Prometheus connector trino-prometheus-483.zip
ranger Ranger access control trino-ranger-483.zip
redis Redis connector trino-redis-483.zip
redshift Redshift connector trino-redshift-483.zip
resource-group-managers Resource groups trino-resource-group-managers-483.zip
session-property-managers Session property managers trino-session-property-managers-483.zip
singlestore SingleStore connector trino-singlestore-483.zip
snowflake Snowflake connector trino-snowflake-483.zip
spooling-filesystem Server side support for Spooling protocol trino-spooling-filesystem-483.zip
sqlserver SQL Server connector trino-sqlserver-483.zip
teradata-functions Teradata functions trino-teradata-functions-483.zip
thrift Thrift connector trino-thrift-483.zip
tpcds TPC-DS connector trino-tpcds-483.zip
tpch TPC-H connector trino-tpch-483.zip

더 알아보기 (Learn more)

플러그인 아키텍처로 Trino를 확장하는 방법을 배웠어요. 이어서 쿼리 처리 복원력을 높이는 방법(Improve query processing resilience)을 살펴보면 좋아요.