교환 속성
교환 속성 (Exchange properties)
교환(exchange)은 쿼리의 서로 다른 스테이지 단계에서 Trino 노드 사이에 데이터를 전송해요. 이 속성들을 조정하면 노드 간 통신 문제를 해결하거나 네트워크 활용을 개선하는 데 도움이 될 수 있어요.
출처: 문서
본문
또한 교환의 HTTP 클라이언트 사용도 구성할 수 있어요.
exchange.client-threads
- 타입: integer
- 최솟값:
1 - 기본값:
25
교환 클라이언트가 다른 Trino 노드에서 데이터를 가져올 때 사용하는 스레드 수예요. 값이 높으면 대형 클러스터나 동시성이 매우 높은 클러스터에서 성능이 좋아질 수 있지만, 지나치게 높으면 컨텍스트 스위치와 추가 메모리 사용으로 성능이 떨어질 수 있어요.
exchange.concurrent-request-multiplier
- 타입: integer
- 최솟값:
1 - 기본값:
3
사용 가능한 버퍼 메모리 대비 동시 요청 수를 결정하는 배수(multiplier)예요. 최대 요청 수는 요청당 평균 버퍼 사용량에 이 배수를 곱한 값을 기준으로, 가용 버퍼 공간에 들어갈 수 있는 클라이언트 수를 휴리스틱으로 계산해 결정돼요. 예를 들어 exchange.max-buffer-size가 32MB이고 이미 20MB를 사용 중이며 요청당 평균 크기가 2MB라면, 최대 클라이언트 수는 multiplier * ((32MB - 20MB) / 2MB) = multiplier * 6이에요. 이 값을 조정하면 휴리스틱이 바뀌어 동시성이 늘고 네트워크 활용이 개선될 수 있어요.
exchange.compression-codec
- 타입: string
- 허용 값:
NONE,LZ4,ZSTD - 기본값:
NONE
장애 허용 실행 모드에서 노드와 교환 스토리지 사이에 데이터를 교환할 때 파일 압축·해제에 사용할 압축 코덱이에요.
exchange.data-integrity-verification
- 타입: string
- 허용 값:
NONE,ABORT,RETRY - 기본값:
ABORT
데이터 무결성 문제가 생겼을 때의 동작을 구성해요. 기본값 ABORT는 내장 검증 과정에서 데이터 무결성 문제가 감지되면 쿼리를 중단(abort)시켜요. NONE으로 설정하면 검증을 비활성화하고, RETRY는 무결성 문제가 감지되면 데이터 교환을 재시도하게 해요.
exchange.max-buffer-size
- 타입: data size
- 기본값:
32MB
교환 클라이언트에서 다른 노드로부터 가져온 데이터를 처리하기 전에 담아두는 버퍼 크기예요. 버퍼가 크면 대형 클러스터에서 네트워크 처리량이 늘어 쿼리 처리 시간이 줄어들 수 있지만, 다른 용도로 쓸 수 있는 메모리는 줄어들어요.
exchange.max-response-size
- 타입: data size
- 최솟값:
1MB - 기본값:
16MB
교환 요청에서 반환되는 응답의 최대 크기예요. 이 응답은 교환의 모든 동시 요청이 공유하는 교환 클라이언트 버퍼에 담겨요.
값을 높이면 지연 시간이 높을 때 네트워크 처리량이 개선될 수 있어요. 값을 낮추면 교환 클라이언트 버퍼가 더 적은 태스크에서 더 많은 데이터를 담기보다 더 많은 태스크의 응답을 담게 되므로 스큐(skew)가 줄어 대형 클러스터에서 쿼리 성능이 좋아질 수 있어요.
sink.max-buffer-size
- 타입: data size
- 기본값:
32MB
업스트림 태스크가 가져가길 기다리는 태스크 데이터의 출력 버퍼 크기예요. 태스크 출력이 해시 파티셔닝되어 있다면 버퍼는 모든 파티셔닝된 소비자가 공유해요. 네트워크 지연이 높거나 클러스터에 노드가 많을 때 이 값을 늘리면 스테이지 간 전송 네트워크 처리량이 개선될 수 있어요.
sink.max-broadcast-buffer-size
- 타입:
data size - 기본값:
200MB
업스트림 태스크가 가져가길 기다리는 태스크 데이터의 브로드캐스트 출력 버퍼 크기예요. 브로드캐스트 버퍼는 복제 조인(replicated join)의 빌드(build) 쪽 데이터를 저장하고 전송하는 데 사용돼요. 버퍼가 너무 작으면 클러스터에 새 노드가 추가될 때 조인 프로브 쪽 태스크의 확장을 막을 수 있어요.
더 알아보기 (Learn more)
교환에서 사용하는 HTTP 클라이언트를 구성하는 방법이 궁금하다면 HTTP 클라이언트 속성 문서를 이어서 읽어 보세요.