나의 잡다한 노트 및 메모
Druid에서 Tune parameters 단계 본문
Tune parameters 단계는 Druid가 데이터를 효율적으로 저장하고 쿼리 성능을 최적화할 수 있도록 설정하는 과정입니다.
이 단계는 **3가지 세부 단계(Partition, Tune, Publish)**로 나뉘며, 각각의 역할이 다릅니다.
1. Partition (파티셔닝)
👉 데이터를 어떻게 분할해서 저장할지 결정하는 단계
Druid는 대량의 데이터를 처리하기 때문에 효율적인 데이터 파티셔닝이 중요합니다.
✅ 주요 파티셔닝 방식
파티셔닝 타입설명사용 예시
dynamic (기본값) | 데이터 크기와 분포를 기반으로 자동으로 파티셔닝 | 대부분의 일반적인 데이터셋 |
hashed | 특정 키 값(예: user_id)을 기준으로 데이터를 분할 | 사용자별 데이터 분산 |
single_dim | 하나의 특정 차원(예: country)으로 파티션을 나눔 | 국가별 데이터 분석 |
none | 파티셔닝 없이 하나의 큰 데이터 블록으로 저장 | 작은 데이터셋 |
예제 설정 (Hashed Partition)
- targetPartitionSize: 각 파티션이 갖는 대략적인 행(row) 개수 (5백만 개씩 저장)
- numShards: -1이면 Druid가 자동으로 적절한 개수를 결정
2. Tune (튜닝)
데이터를 효율적으로 저장하기 위한 최적화 단계
이 단계에서는 롤업(roll-up) 및 인덱싱 설정을 조정할 수 있습니다.
주요 튜닝 옵션
튜닝 옵션 설명 기본값
rollup | 같은 차원 값이 있는 데이터를 집계(Aggregation)하여 저장 | true |
maxRowsPerSegment | 하나의 Druid 세그먼트(segment)당 저장할 최대 행(row) 개수 | 5,000,000 |
maxRowsInMemory | 메모리에 유지할 최대 행(row) 개수 | 1,000,000 |
예제 설정 (롤업 적용)
{
"tuningConfig": {
"type": "index_parallel",
"maxRowsPerSegment": 10000000,
"maxRowsInMemory": 2000000,
"rollup": true
}
}
- maxRowsPerSegment: 한 세그먼트당 1천만 개의 행을 저장
- maxRowsInMemory: 메모리에 200만 개의 행을 유지
- rollup: true → 같은 차원 값을 가진 데이터는 미리 집계(Aggregation)하여 저장
- 예) 같은 product_id 값이 있으면 count 같은 메트릭을 미리 합산
롤업을 적용하면 데이터 크기를 줄여 저장 공간과 쿼리 성능을 최적화할 수 있음!
3. Publish (퍼블리시)
데이터가 Druid 테이블에 최종적으로 저장되는 단계
이 단계에서는 데이터를 Druid 클러스터에 배포(publish)하고, 기존 데이터를 어떻게 처리할지 결정합니다.
주요 퍼블리시 옵션
옵션 설명 기본값
dropExisting | 기존 데이터 삭제 후 새로운 데이터만 저장 | false |
publishDelay | 데이터가 저장되기 전 대기 시간 설정 | 0s |
handoffConditionTimeout | 데이터가 세그먼트로 이동할 때 최대 대기 시간(ms) | 900000 (15분) |
예제 설정 (기존 데이터 유지)
{
"publishConfig": {
"dropExisting": false,
"publishDelay": "10s"
}
}
- dropExisting: false → 기존 데이터를 유지하고 새로운 데이터를 추가
- publishDelay: 10s → 데이터를 저장하기 전에 10초 동안 대기 후 적용
데이터를 실시간으로 적용할지, 기존 데이터를 대체할지 결정하는 중요한 설정!
'데이터엔지니어 > Druid' 카테고리의 다른 글
Supervisors 란? (0) | 2025.03.02 |
---|---|
Datasources 단계 (0) | 2025.03.02 |
Druid에서 Filter 단계 (0) | 2025.03.02 |
Druid에서 Parser의 역할 (0) | 2025.03.02 |
Druid 아키텍처 중 주요 컴포넌트의 역할 (0) | 2025.03.01 |