MinIO 는 S3 호환 API 를 제공하므로 Trino 의 Hive · Iceberg · Delta Lake 커넥터가 그대로 붙는다. 전용 커넥터는 없고, S3 파일시스템 설정에 엔드포인트와 자격 증명을 지정하는 방식이다.
Hive 커넥터로 붙이는 예다.
connector.name=hive
hive.metastore.uri=thrift://hms-host:9083
fs.native-s3.enabled=true
s3.endpoint=http://minio-host:9000
s3.region=us-east-1
s3.path-style-access=true
s3.aws-access-key=${ENV:MINIO_ACCESS_KEY}
s3.aws-secret-key=${ENV:MINIO_SECRET_KEY}
Iceberg 커넥터도 같은 파일시스템 설정을 공유한다.
connector.name=iceberg
iceberg.catalog.type=hive_metastore
hive.metastore.uri=thrift://hms-host:9083
fs.native-s3.enabled=true
s3.endpoint=http://minio-host:9000
s3.path-style-access=true
s3.aws-access-key=${ENV:MINIO_ACCESS_KEY}
s3.aws-secret-key=${ENV:MINIO_SECRET_KEY}
세 가지가 핵심이다. s3.endpoint 로 AWS 가 아닌 주소를 가리키고, s3.path-style-access=true 로 버킷을 호스트 이름이 아니라 경로에 두게 하며, s3.region 을 아무 값이라도 지정해 서명 계산이 성립하게 한다.
예전 문서에 나오는 connector.name=hive-hadoop2 나 hive.s3.* 접두사 속성은 최신 Trino 에서 제거됐다. hive 와 s3.* 를 쓴다.
CREATE SCHEMA minio.raw WITH (location = 's3://warehouse/raw/');
CREATE TABLE minio.raw.events (
id BIGINT,
event_ts TIMESTAMP(6),
payload VARCHAR
)
WITH (
format = 'PARQUET',
external_location = 's3://warehouse/raw/events/'
);
스킴은 s3:// 를 쓴다. s3a:// 는 Hadoop 파일시스템 구현의 스킴이고, Trino 의 네이티브 S3 파일시스템에서는 쓰지 않는다.
버킷과 자격 증명이 맞는지는 Trino 밖에서 먼저 확인하는 편이 빠르다.
mc alias set myminio http://minio-host:9000 "$MINIO_ACCESS_KEY" "$MINIO_SECRET_KEY"
mc ls myminio/warehouse/
Trino 쪽에서는 스키마 생성 없이 바로 읽어 볼 수도 있다.
SHOW SCHEMAS FROM minio;
SELECT * FROM minio.raw.events LIMIT 10;
| 증상 | 확인할 것 |
|---|---|
Unable to execute HTTP request |
엔드포인트 주소·포트, Trino 노드에서 MinIO 로의 네트워크 |
| 버킷 이름이 호스트명으로 해석됨 | s3.path-style-access=true 누락 |
SignatureDoesNotMatch |
액세스 키·시크릿 키, 시각 차이(노드 NTP) |
| TLS 검증 실패 | MinIO 인증서를 Trino JVM 트러스트스토어에 추가 |
| 쓰기만 실패 | MinIO 버킷 정책에 쓰기 권한 부여 여부 |
${ENV:NAME})나 시크릿 관리 기능을 쓴다.