Release 0.103

Release 0.103

Trino(당시 Presto) 0.103 릴리스의 변경 사항이에요. 새로운 클러스터 리소스 관리자, 실험적 태스크 병렬 처리, 다양한 Hive·일반 개선이 포함돼요.

출처: 문서

본문

클러스터 리소스 관리 (Cluster resource management)

새로운 클러스터 리소스 관리자가 있으며, experimental.cluster-memory-manager-enabled 플래그로 활성화할 수 있어요. 현재 추적되는 유일한 리소스는 메모리이며, 클러스터 리소스 관리자는 클러스터가 메모리를 기다리며 교착 상태에 빠지지 않도록 보장해요. 다만 메모리가 부족한 상황에서는 하나의 쿼리만 진행될 수 있어요. 메모리 한도는 이제 query.max-memory(쿼리가 사용할 수 있는 총 분산 메모리 제어)와 query.max-memory-per-node(쿼리가 단일 노드에서 사용할 수 있는 메모리 양 제한)로 구성할 수 있어요. 각 워커에서 resources.reserved-system-memory 플래그는 내부 Presto 데이터 구조와 임시 할당에 예약되는 메모리 양을 제어해요.

태스크 병렬 처리 (Task parallelism)

많은 수의 집계 또는 조인용 큰 해시 테이블을 포함하는 쿼리는 중간 단계의 단일 스레드 실행 때문에 느릴 수 있어요. 이 릴리스는 이 단일 스레드 작업을 병렬로 실행하는 실험적 구성·세션 프로퍼티를 추가해요. 정확한 쿼리에 따라 wall time은 줄 수 있지만 CPU 사용은 증가할 가능성이 높아요.

task.default-concurrency 구성 파라미터 또는 task_default_concurrency 세션 프로퍼티로 join probe, hash build, final aggregation에 사용할 병렬 워커의 기본 수를 설정해요. 추가로 task_join_concurrency, task_hash_build_concurrency, task_aggregation_concurrency 세션 프로퍼티로 각 작업 유형의 병렬성을 제어할 수 있어요.

이것은 실험적 기능이며 향후 릴리스에서 바뀔 가능성이 커요. 또한 결국 쿼리 플래너가 자동으로 처리하게 될 것이며 이 옵션들은 완전히 제거될 것으로 예상돼요.

Hive

  • hive.max-split-iterator-threads 파라미터를 제거하고 hive.max-global-split-iterator-threadshive.max-split-iterator-threads로 이름을 바꿨어요.
  • 많은 수의 파티션이 있는 테이블을 쿼리할 때 과도한 객체 생성을 수정했어요.
  • S3 경로를 찾을 수 없을 때 요청을 재시도하지 않도록 했어요.

일반 (General)

  • array_remove()를 추가했어요.
  • 집계에 행이 거의 없을 때 max_by()min_by()에서 발생하는 NPE를 수정했어요.
  • map_agg()의 메모리 사용을 줄였어요.
  • HTTP 클라이언트 기본값을 변경했어요: 2초 유휴 타임아웃, 10초 요청 타임아웃, 호스트당 250개 연결.
  • CLI에 SQL 명령 자동 완성(autocompletion)을 추가했어요.
  • CLI 히스토리 파일 크기를 늘렸어요.

더 알아보기 (Learn more)

0.103 릴리스의 변경 사항을 봤어요. 이어서 이전 버전인 Release 0.102를 살펴보면 좋아요.