본문으로 건너뛰기
최종 수정: 에

Trino Connector 통합 개발자 가이드

이 문서는 Trino Connector 플러그인을 Apache Doris와 통합해야 하는 개발자를 대상으로 합니다. Connector 플러그인을 컴파일하고, FE / BE를 구성하며, trino-connector Catalog를 생성하고 사용하는 방법을 설명합니다. Kafka Connector를 주요 예제로 사용하며, Hive, MySQL, BigQuery와 같이 자주 사용하는 플러그인의 구성 예제도 제공합니다.

목차​


배경​

Doris는 3.0 버전부터 Trino Connector 플러그인과의 통합을 지원합니다. Trino Connector의 풍부한 플러그인 생태계와 Doris의 trino-connector Catalog 기능을 활용하면 더 다양한 데이터 소스에 연결할 수 있습니다.

사용 시나리오권장 방법
Hive, Iceberg, Hudi, Paimon, JDBC와 같은 주요 데이터 소스성능, 안정성, 호환성이 더 우수한 Doris 내장 Catalog를 우선 사용합니다
Doris가 아직 통합하지 않은 기타 데이터 소스Trino Connector 호환성 프레임워크를 사용하여 더 다양한 데이터 소스에 빠르게 연결합니다

참고: Trino는 Trino Software Foundation에서 제공하는 Apache License 2.0 기반의 오픈 소스 소프트웨어입니다. 자세한 내용은 Trino 공식 사이트를 참조하세요.


1단계 - Connector 플러그인 컴파일​

Trino는 공식적으로 컴파일된 Connector 플러그인을 제공하지 않으므로, 필요한 Connector 플러그인을 직접 컴파일해야 합니다.

참고: Doris는 현재 trino-main 패키지의 435 버전을 사용하므로, Connector 플러그인도 435 버전으로 컴파일하는 것이 좋습니다. 다른 버전의 Connector 플러그인은 호환성 문제가 발생할 수 있습니다. 문제가 발생하면 Apache Doris 커뮤니티에 알려주세요.

Kafka 플러그인을 예로 들어 보겠습니다.

# 1. Clone the Trino source code
git clone https://github.com/trinodb/trino.git

# 2. Check out version 435
git checkout 435

# 3. Enter the Kafka plugin source directory
cd trino/plugin/trino-kafka

# 4. Compile the Kafka plugin
mvn clean install -DskipTests

컴파일이 완료되면 target/trino-kafka-435 디렉터리가 trino/plugin/trino-kafka/ 아래에 생성됩니다.

참고: 각 Connector 플러그인은 단일 jar 파일이 아닌 하위 디렉터리입니다.


2단계 - FE / BE 구성​

Kafka Connector 플러그인을 준비한 후에는 fe.conf와 be.conf에 플러그인 디렉터리를 설정하여 Doris가 플러그인을 찾을 수 있도록 해야 합니다.

이전 단계에서 준비한 trino-kafka-435 디렉터리를 /path/to/connectors 아래에 배치했다고 가정하면, 다음과 같이 설정합니다.

파일설정 항목기본값
fe.conftrino_connector_plugin_dir=/path/to/connectors${Doris_HOME}/fe/connectors
be.conftrino_connector_plugin_dir=/path/to/connectors${Doris_HOME}/be/connectors

지연 로딩 동작: Doris는 Trino Connector 플러그인을 지연 로딩합니다. trino-connector Catalog 기능을 처음 사용할 때는 FE / BE 노드를 다시 시작할 필요가 없습니다. Doris가 플러그인을 자동으로 로드합니다. 다만 플러그인은 한 번만 로드되므로, 플러그인 디렉터리의 내용이 변경되면 FE / BE 노드를 다시 시작해야 변경 사항이 적용됩니다.


3단계 - Catalog 생성 및 사용​

3.1 Trino-Connector Catalog 생성​

create catalog kafka_tpch properties (
"type"="trino-connector",
-- The following four properties come from Trino and match the properties in Trino's etc/catalog/kafka.properties, but each must be prefixed with "trino."
"trino.connector.name"="kafka",
"trino.kafka.table-names"="tpch.customer,tpch.orders,tpch.lineitem,tpch.part,tpch.partsupp,tpch.supplier,tpch.nation,tpch.region",
"trino.kafka.nodes"="localhost:9092",
"trino.kafka.table-description-dir" = "/mnt/datadisk1/fangtiewei"
);

속성 설명:

속성설명
typeCatalog 유형입니다. 반드시 trino-connector로 설정해야 합니다
trino.connector.nameTrino Connector의 이름입니다. 예: kafka
trino.kafka.table-names 등Trino에서 제공하는 속성으로, 모두 trino. 접두사를 붙입니다. Kafka Connector를 참조하세요

Connector 플러그인마다 필요한 속성이 다릅니다. Trino 공식 문서의 Connector 목록을 참조하세요.

3.2 Catalog 사용​

Trino-Connector Catalog를 생성한 후에는 다른 Catalog와 동일한 방식으로 사용할 수 있습니다. switch kafka_tpch로 해당 Catalog로 전환한 다음, 연결된 데이터 소스의 데이터를 쿼리합니다.

switch kafka_tpch;
show databases;
select * from tpch.customer limit 10;

자주 사용하는 Connector 구성 예제​

Hive​

create catalog emr_hive properties (
"type"="trino-connector",
"trino.connector.name"="hive",
"trino.hive.metastore.uri"="thrift://ip:port",
"trino.hive.config.resources"="/path/to/core-site.xml,/path/to/hdfs-site.xml"
);

Hive 플러그인 사용 시 참고 사항:

  • JVM 매개변수에 Hadoop 사용자를 추가해야 합니다: -DHADOOP_USER_NAME=user. 이 설정은 JAVA_OPTS_FOR_JDK_17 매개변수에 추가할 수 있으며, 해당 매개변수는 fe.conf / be.conf에 있습니다. 예: JAVA_OPTS_FOR_JDK_17="...-DHADOOP_USER_NAME=user".

MySQL​

create catalog trino_mysql properties (
"type"="trino-connector",
"trino.connector.name"="mysql",
"trino.connection-url" = "jdbc:mysql://ip:port",
"trino.connection-user" = "user",
"trino.connection-password" = "password"
);

MySQL 플러그인 사용 시 참고 사항:

  • Unknown or incorrect time zone: 'Asia/Shanghai' 오류가 발생하면 JVM 시작 매개변수에 -Duser.timezone=Etc/GMT-8을 추가하세요. JAVA_OPTS_FOR_JDK_17 매개변수의 끝에 추가하면 되며, 해당 매개변수는 fe.conf / be.conf에 있습니다.

Kafka​

create catalog kafka properties (
"type"="trino-connector",
"trino.connector.name"="kafka",
"trino.kafka.nodes"="localhost:9092",
"trino.kafka.table-description-supplier"="CONFLUENT",
"trino.kafka.confluent-schema-registry-url"="http://localhost:8081",
"trino.kafka.hide-internal-columns" = "false"
);

BigQuery​

create catalog bigquery_catalog properties (
"type"="trino-connector",
"trino.connector.name"="bigquery",
"trino.bigquery.project-id"="steam-circlet-388406",
"trino.bigquery.credentials-file"="/path/to/application_default_credentials.json"
);

FAQ 및 일반적인 오류​

질문: /path/to/connectors 아래의 플러그인을 수정했는데, Doris에 변경 사항이 반영되지 않는 이유는 무엇인가요?

답변: Doris는 지연 로딩을 사용하지만, 플러그인은 한 번만 로드됩니다. 플러그인을 수정한 후에는 FE / BE 노드를 다시 시작해야 합니다.

질문: 시작 시 플러그인 버전 호환성 오류가 발생하면 어떻게 하나요?

답변: 컴파일할 때 Trino의 435 브랜치를 체크아웃했는지 확인하세요. Doris는 현재 435 버전의 trino-main을 사용하며, 다른 버전은 호환성 문제가 발생할 수 있습니다.

질문: Hive 플러그인으로 쿼리할 때 권한 오류가 발생하거나 HDFS에 접근할 수 없으면 어떻게 하나요?

답변: JAVA_OPTS_FOR_JDK_17에 -DHADOOP_USER_NAME=user가 설정되어 있는지 확인하세요. 또한 core-site.xml / hdfs-site.xml 파일을 trino.hive.config.resources에 지정된 경로에서 읽을 수 있는지 확인하세요.

질문: MySQL 플러그인에서 Unknown or incorrect time zone: 'Asia/Shanghai' 오류가 발생하면 어떻게 하나요?

답변: -Duser.timezone=Etc/GMT-8을 JAVA_OPTS_FOR_JDK_17에 추가하세요.

질문: Hive, Iceberg, Hudi 등의 데이터 소스에도 Trino Connector를 사용해야 하나요?

답변: 권장하지 않습니다. 이러한 데이터 소스에는 Doris 내장 Catalog가 더 우수한 성능, 안정성, 호환성을 제공합니다. Trino Connector 프레임워크는 Doris가 아직 통합하지 않은 데이터 소스를 지원하는 용도로 설계되었습니다.