장애 허용 실행

장애 허용 실행 (Fault-tolerant execution)

장애 허용 실행은 쿼리 실행 중 장애가 나면 쿼리나 그 구성 태스크를 재시도해서 클러스터가 쿼리 실패를 완화하도록 하는 Trino의 메커니즘이에요.

출처: 문서

본문

기본적으로 Trino 노드가 태스크를 실행할 리소스가 부족하거나 쿼리 실행 중 다른 이유로 실패하면 쿼리는 실패하고 수동으로 다시 실행해야 해요. 쿼리 실행 시간이 길수록 그런 실패에 취약해질 가능성이 높아지죠.

장애 허용 실행(fault-tolerant execution)을 활성화하면 중간 교환(exchange) 데이터가 스풀(spool)되어, 워커 장애나 쿼리 실행 중 다른 장애가 발생했을 때 다른 워커가 그 데이터를 재사용할 수 있어요.

참고 (Note)

장애 허용(fault tolerance)은 잘못된 쿼리나 다른 사용자 오류에는 적용되지 않아요. 예를 들어 Trino는 SQL을 파싱할 수 없어서 실패한 쿼리를 재시도하는 데 리소스를 쓰지 않아요.

장애 허용 실행으로 Trino 클러스터를 구성해 쿼리 처리 복원력을 높이는 단계별 가이드는 쿼리 처리 복원력 개선(Improve query processing resilience) 문서를 읽어 보세요.

설정 (Configuration)

장애 허용 실행은 기본적으로 꺼져 있어요. 이 기능을 활성화하려면 원하는 재시도 정책에 따라 retry-policy 설정 속성을 QUERY 또는 TASK로 설정하세요:

retry-policy=QUERY

장애 허용 실행에는 스풀링용 교환 매니저(exchange manager)가 필요해요. 파일시스템 기반 교환 매니저의 예시는 다음과 같아요. S3를 쓸 때:

exchange-manager.name=filesystem
exchange.base-directories=s3://exchange-spooling-bucket
exchange.s3.region=us-west-1
exchange.s3.aws-access-key=example-access-key
exchange.s3.aws-secret-key=example-secret-key

여러 버킷을 지정해 부하를 분산할 수도 있어요:

exchange.base-directories=s3://exchange-spooling-bucket-1,s3://exchange-spooling-bucket-2

Azure Blob Storage(ABFS)를 쓸 때:

exchange-manager.name=filesystem
exchange.base-directories=abfs://container_name@account_name.dfs.core.windows.net
exchange.azure.connection-string=connection-string

GCS를 쓸 때:

exchange-manager.name=filesystem
exchange.base-directories=gs://exchange-spooling-bucket
exchange.s3.region=us-west-1
exchange.s3.aws-access-key=example-access-key
exchange.s3.aws-secret-key=example-secret-key
exchange.s3.endpoint=https://storage.googleapis.com
exchange.gcs.json-key-file-path=/path/to/gcs_keyfile.json

HDFS 기반 교환 매니저도 지원해요:

exchange-manager.name=hdfs
exchange.base-directories=hadoop-master:9000/exchange-spooling-directory
hdfs.config.resources=/usr/lib/hadoop/etc/hadoop/core-site.xml

로컬 파일시스템 기반(단일 노드 테스트용):

exchange-manager.name=filesystem
exchange.base-directories=/tmp/trino-exchange-manager

더 알아보기 (Learn more)

장애 허용 구성을 실제로 적용하는 절차가 궁금하다면 쿼리 처리 복원력 개선 문서를 이어서 읽어 보세요.