린아저씨의 잡학사전

~/.prestoadmin/coordinator와 workers에 있는 properties.config에서 수정 및 추가할 수 있는 설정값에 대한 설명

 

General Properties

 

 join-disribution-type 

 

  • Type : String
  • Allowed values : AUTOMATIC / PARTITIONED / BROADCAST
  • Default value : PARTITIONED

사용할 분산 조인의 유형 입니다. PARTITIONED로 설정하면, 프레스토는 해시 분산 조인을 사용합니다. 

BROADCAST로 설정하면, 왼쪽 테이블의 데이터가 있는 클러스터의 모든 노드에 오른쪽 테이블을 브로드 캐스팅 합니다. PARTITIONED JOIN은 조인 키의 해시를 사용하여 두 테이블을 모두 재배포해야 합니다. PARTITIONED JOIN은  BROADCAST JOIN보다 속도가 느릴 수 있지만, 더 많은 조인을 허용 합니다. 특히 BROADCST JOIN은 오른쪽 테이블이 왼쪽보다 훨씬 작으면 더 빠릅니다. 그러나 BROADCSE JOIN은 각 노드의 메모리에 맞게 필터링한 후 조인 오른쪽에 있는 테이블을 사용해야 하는 반면, PARTITIONED JOIN은 모든 노드의 분산 메모리에만 적합하면 됩니다.

AUTOMATIC 모드설정시에는, 프레스토는 테이블에 통계가 없는 경우와 같이 비용을 계산 할 수 없는 경우 기본적으로 PARTITIONED JOIN을 해시합니다. join_distibution_type 세션 속성을 사용하여 쿼리 단위로 지정할 수도 있습니다.

 

 

Memory Management Propertiestititi

 query.max-memory-per-node 

 

 

  • Type : data size
  • Default value : JVM max memory * 0.1

쿼리가 worker에서 사용할 수 있는 최대 사용자 메모리의 양을 말합니다. 사용자 메모리는 사용자 쿼리에 직접적으로 관련되거나 사용자가 제어할 수 있는 것들에 대해 실행하는 동안 할당 됩니다. 예를 들어, 실행 중에 작성된 해시 테이블에서 사용되는 메모리, 정령 중 사용 된 메모리 등. 임의의 worker에서 쿼리에 할당된 사용자 메모리 할당이 제한에 도달하면 메모리가 삭제됩니다.

 

 

 query.max-total-memory-per-node 

 

  • Type : data size
  • Default value : JVM max memory * 0.3

쿼리가 worker에서 사용할 수 있는 최대 사용자 및 시스템 메모리 양입니다. 시스템 메모리는 사용자 쿼리에 직접적으로 영향을 미치지 않거나 제어 할 수 없는 것들에 대해 실행되는 동안 할당됩니다. 예를 들어, readers, writers, network buffers 등이 할당 한 메모리 입니다. 어떤 worker에서 쿼리에 의해 사용자와 시스템 메모리 합이 제한에 도달하면 해당 사용자와 시스템 메모리의 합이 삭제됩니다. query.max-total-memory-per-node 값은 반드시 query.max-memory-per-node 보다 커야 합니다.

 

 

 query.max-memory 

 

  • Type : data size
  • Default value : 20GB

쿼리가 전체 클러스터에서 사용할 수 있는 최대 사용자 메모리 양입니다. 사용자 메모리는 사용자 쿼리에 직접적으로 관련되거나 사용자가 제어 할 수 있는 것들에 대해 실행되는 동안 할당됩니다. 예를 들어 실행 중에 작성된 해시 테이블에서 사용되는 메모리, 정렬하는 동안 사용되는 메모리 등 모든 작업자에 대한 쿼리의 사용자 메모리 할당이 이 제한에 도달하면 메모리가 삭제됩니다.

 

 

 query.max-total-memory 

 

  • Type : data size
  • Default value : query.max-total-memory * 2

쿼리가 전체 클러스터에서 사용할 수 있는 최대 사용자 및 시스템 메모리 양 입니다. 시스템 메모리는 사용자 쿼리에 직접적으로 영향을 미치지 않거나 제어할 수 없는 것들에 대해 실행되는 동안 할당됩니다. 예를 들어 readers, writers, network buffers 등에 할당된 메모리 입니다. 모든 worker에 대한 쿼리에 의해 할당 된 사용자 및 시스템 메모리의 합계가 이 제한에 도달하면 해당 사용자와 시스템 메모리의 합계까 삭제됩니다.

 

 

 memory.heap-headroom-per-node 

 

  • Type : data zise
  • Default value : JVM max memory * 0.3

Presto에서 추적하지 않는 할당에 대한 JVM heaproom/buffer로 설정된 메모리의 양입니다.

 

 

 

 

 exchange.max-response-size 

 

  • Type : data size
  • Minimum value : 1MB
  • Default value : 16MB

Exchange 요청에서 리턴 된 응답의 최대 크기. 응답은 교환에 대한 모든 동시 요청에서 공유되는 교환 클라이언트 버퍼에 배치됩니다. 

 

만약 대기 시간이 길어 값을 늘리면 네트워크 처리량이 향상 될 수 있습니다. 값을 줄이면 Exchange 클라이언트 버퍼가 더 많은 작업에 대한 응답을 보유하기 때문에 스큐가 감소하므로 대용량 클러스터의 쿼리 성능이 향상 될 수 있습니다.

 

 sink.max-buffer-size 

 

  • Type : data size
  • Default value : 32MB

Upsteam task로 인해 대기중인 작업 데이터의 출력 버퍼 크기입니다. task output이 해시 파티션 된 경우, 버퍼는 모든 파티션 된 사용자간에 공유됩니다. 이 값을 늘리면 네트워크 대기 시간이 길거나 클러스터에 노드가 많은 경우 스테이지간에 전송되는 데이터의 네트워크 처리량이 향상 될 수 있습니다.

 

 

 

 

공유하기

facebook twitter kakaoTalk kakaostory naver band