Trino에서 내결함성 실행 - Amazon EMR

Trino에서 내결함성 실행

내결함성 실행은 클러스터가 쿼리 실패를 완화하는 데 사용할 수 있는 Trino의 메커니즘입니다. 이를 위해 쿼리 또는 해당 구성 요소 작업이 실패할 경우 재시도합니다. 내결함성 실행이 활성화되면 중간 교환 데이터가 스풀링되며 쿼리 실행 중 워커 중단이나 기타 장애가 발생할 경우 다른 워커가 해당 데이터를 재사용할 수 있습니다.

Trino에서의 내결함성 실행에 대한 자세한 내용은 Trino 블로그에서 Project Tardigrade delivers ETL at Trino speeds to early users를 참조하세요.

구성

내결함성 실행은 기본적으로 비활성화됩니다. 기능을 활성화하려면 다음과 같이 trino-config 분류의 retry-policy 구성 속성을 원하는 재시도 정책에 따라 QUERY 또는 TASK로 설정합니다.

{"classification": "trino-config", "properties": { "retry-policy": "QUERY" } }

QUERY 재시도 정책은 워커 노드에서 오류가 발생할 경우 자동으로 쿼리를 재시도하도록 Trino에 지시합니다. Trino 클러스터의 워크로드 대부분이 여러 개의 작은 쿼리로 구성된 경우 QUERY 재시도 정책을 사용하는 것이 좋습니다.

TASK 재시도 정책은 실패 시 Trino가 개별 쿼리 작업을 재시도하도록 지시합니다. Trino가 대규모 배치 쿼리를 실행할 때 이 정책을 사용하는 것이 좋습니다. 클러스터는 전체 쿼리를 재시도하는 대신 쿼리 내에서 더 작은 작업을 더 효율적으로 재시도할 수 있습니다.

교환 관리자

교환 관리자는 내결함성 실행을 위해 스풀링된 데이터를 저장하고 관리합니다. 외부 스토리지를 사용하여 메모리 내 버퍼 크기를 초과하여 유출된 데이터를 저장합니다. Amazon S3, Amazon S3 호환 시스템 또는 HDFS와 같은 지정된 위치에 스풀링된 데이터를 저장하는 파일 시스템 기반 교환 관리자를 구성할 수 있습니다.

Amazon EMR 릴리스 6.9.0 이상에는 교환 관리자를 구성하기 위한 trino-exchange-manager 분류가 포함되어 있습니다. 이러한 릴리스는 스풀링을 위한 HDFS도 지원합니다.

교환 관리자 설정

trino-exchange-manager 구성 분류를 사용하여 교환 관리자를 구성합니다. 이 분류는 코디네이터와 모든 워커 노드에서 내부적으로 etc/exchange-manager.properties 구성 파일을 생성합니다. 분류는 exchange-manager.name 구성 분류도 filesystem으로 설정합니다.

기본적으로 Amazon EMR 릴리스 6.9.0 이상에서는 HDFS를 교환 관리자로 사용합니다. HDFS는 Amazon EMR EC2 클러스터에서 사용할 수 있으며 스풀링은 기본적으로 trino-exchange/ 디렉터리에서 수행됩니다. 기본 설정을 사용하려면 다음 구성을 설정합니다.

{"Classification": "trino-exchange-manager" }

사용자 지정 위치를 제공하려면 trino-exchange-manager 분류에서 다음 속성을 설정합니다.

  • exchange.use-local-hdfstrue으로 설정합니다.

  • exchange.base-directories를 HDFS의 사용자 지정 디렉터리 위치(예: exchange.base-directories=/exchange)로 설정합니다. 사용자 지정 디렉터리가 아직 HDFS에 없는 경우 Amazon EMR에서 해당 디렉터리를 생성합니다.

HDFS 교환 관리자 구성

내부 테스트 결과에 따르면 다른 클라우드 기반 파일 시스템에 비해 쿼리 성능을 높이기 위해 로컬 HDFS로 스풀링하는 것이 좋습니다. HDFS를 사용하여 교환 관리자에 대해 다음 구성을 설정할 수 있습니다.

구성 설명 기본 설정

exchange.hdfs.block-size

HDFS 스토리지의 블록 크기

4MB

hdfs.config.resources

HDFS를 구성하기 위한 파일 경로 목록

exchange.use-local-hdfstrue인 경우, core-site.xml, hdfs-site.xml 파일에 대한 경로를 사용합니다. 그렇지 않으면 null입니다.

추가 내결함성 실행 구성 속성과 스풀링을 위해 Amazon S3 또는 기타 Amazon S3 호환 시스템을 설정하는 방법에 대한 자세한 내용은 Trino 설명서에서 Fault-tolerant execution 페이지를 참조하세요.

고려 사항 및 제한

  • 내결함성 실행을 활성화하면 retry-policy가 설정된 시점에서 write를 지원하지 않는 커넥터에 대해 write 작업이 비활성화됩니다. Amazon EMR 릴리스 6.9.0부터 Delta Lake, Hive 및 Iceberg 커넥터는 retry-policy를 통해 write 작업을 지원합니다.

  • 교환 관리자를 사용하고 비용이 많이 드는 I/O 작업을 수행하는 경우 교환 관리자가 중간 데이터를 외부 스토리지로 스풀링하는 동안 쿼리 성능이 저하될 수 있습니다.