Kafka용 Openflow Connector의 성능 조정¶
참고
커넥터에는 커넥터 약관 이 적용됩니다.
이 항목에서는 Snowflake로 데이터를 수집할 때 최적의 처리량을 달성하고 지연 시간을 최소화하기 위해 Kafka용 Openflow Connector 의 성능을 최적화하기 위한 지침을 제공합니다.
성능 고려 사항¶
최적의 성능을 위해 Kafka용 Openflow Connector를 구성할 때는 수집 처리량과 지연 시간에 영향을 미치는 다음과 같은 주요 요소를 고려하십시오.
메시지 특성¶
- 메시지 크기
메시지가 클수록 처리량이 늘어날 수 있지만 메시지당 메모리와 처리 시간이 더 많이 필요할 수 있습니다.
- 메시지 형식
JSON 메시지는 일반적으로 스키마 추론과 다른 직렬화/역직렬화로 인해 AVRO 메시지에 비해 더 많은 처리 오버헤드가 필요합니다.
- 메시지 볼륨
메시지 양이 많을수록 병렬 처리와 더 큰 배치 크기의 이점을 누릴 수 있습니다.
Kafka 구성¶
- 파티션 수
파티션이 많을수록 병렬성을 높일 수 있지만 컨슈머 구성에 대한 신중한 조정이 필요합니다.
- 압축
메시지 압축은 네트워크 대역폭을 줄일 수 있지만, CPU 오버헤드가 증가합니다.
flowfile 최적화¶
- flowfile 크기
성능을 최적화하려면 flowfile은 개별 작은 메시지를 포함하지 않고 1~10 MB 범위여야 합니다. flowfile이 클수록 개별 파일 작업 횟수를 최소화하여 처리 오버헤드를 줄이고 처리량을 개선할 수 있습니다. 기본 설정은 허용 가능한 크기 범위의 flowfile을 생성합니다. 처리량이 적을 때는 작은 flowfile이 예상됩니다.
처리량이 많은 작은 flowfile이 관찰되는 경우 Snowflake 지원 으로 문의하여 도움을 받으십시오.
네트워크 및 인프라¶
- 네트워크 지연 시간
Kafka 브로커와 Openflow 간의 지연 시간이 짧아지면 전반적인 성능이 향상됩니다.
- 대역폭
처리량이 많은 시나리오에서는 충분한 네트워크 대역폭이 중요합니다.
노드 크기 권장 사항¶
다음 테이블은 예상 워크로드 특성에 따른 구성 권장 사항을 제공합니다.
노드 크기 |
추천 대상 |
메시지 전송률 용량 |
---|---|---|
Small (S) |
낮은 처리량에서 중간 정도의 처리량 시나리오 |
노드당 최대 10 MB/s |
Medium (M) |
보통에서 높은 처리량 시나리오 |
노드당 최대 40 MB/s |
Large (L) |
높은 처리량 시나리오 |
노드당 40 MB/s 초과 |
성능 최적화 모범 사례¶
프로세서 동시 작업 조정하기¶
프로세서 성능을 최적화하려면 ConsumeKafka 및 PutSnowpipeStreaming 프로세서 모두에 대한 동시 작업 수를 조정할 수 있습니다. 동시 작업을 사용하면 프로세서가 여러 스레드를 동시에 실행할 수 있으므로 대용량 시나리오의 처리량이 향상됩니다.
프로세서의 동시 작업을 조정하려면 다음 작업을 수행하십시오.
Openflow 캔버스에서 프로세서를 마우스 오른쪽 버튼으로 클릭합니다.
컨텍스트 메뉴에서 Configure 를 선택합니다.
Scheduling 탭으로 이동합니다.
Concurrent tasks 필드에 원하는 동시 작업 수를 입력합니다.
Apply 를 선택하여 구성을 저장합니다.
권장 동시 작업 설정¶
노드 크기 |
ConsumeKafka 작업 |
PutSnowpipeStreaming 작업 |
---|---|---|
Small (S) |
1 |
1-2 |
Medium (M) |
2 |
2-4 |
Large (L) |
4-8 |
4-10 |
중요 고려 사항¶
- 메모리 사용량
각 동시 작업은 추가 메모리를 소비합니다. 동시 작업 증가 시 JVM 힙 사용량을 모니터링하십시오.
- Kafka 파티션
ConsumeKafka 의 경우 동시 작업 수에 노드 수를 곱한 값이 모든 항목의 총 Kafka 파티션 수를 초과해서는 안 됩니다.
- 보수적으로 시작하기
낮은 값으로 시작하여 성능 메트릭을 모니터링하면서 점차적으로 값을 높이십시오.
PutSnowpipeStreaming 프로세서에서 최대 배치 크기 조정하기¶
PutSnowpipeStreaming 프로세서의 최대 배치 크기 매개 변수는 단일 배치에서 처리되는 레코드의 수를 제어합니다. 이 매개 변수를 조정하면 메모리 사용량과 처리량을 최적화하는 데 도움이 됩니다.
최대 배치 크기는 평균 레코드 크기에 따라 미세 조정하여 총 배치 크기(최대 배치 크기 × 평균 레코드 크기)가 4 MB 정도가 되고, 최적의 성능을 위해 16 MB 를 초과하지 않도록 해야 합니다.
예: 평균 레코드 크기가 1KB 인 경우 최대 배치 크기는 4,000으로 설정해야 합니다.
최대 배치 크기를 조정하려면 다음을 수행합니다
PutSnowpipeStreaming 프로세서를 마우스 오른쪽 버튼으로 클릭합니다.
컨텍스트 메뉴에서 Configure 를 선택합니다.
Properties 탭으로 이동합니다.
Max Batch Size 속성의 위치를 찾습니다.
평균 레코드 크기를 기준으로 계산된 값을 입력합니다.
Apply 를 선택하여 변경 사항을 저장합니다.
중요 고려 사항¶
배치 크기를 조정할 때 메모리 사용량과 처리량을 모니터링하십시오.
이 권장 값으로 시작하여 성능을 모니터링하면서 필요한 경우에만 조정하십시오.
크기 조정 고려 사항¶
Openflow 플랫폼은 CPU 활용도를 기반으로 하는 Horizontal Pod Autoscaler(HPA)를 사용하며 사용자 정의 메트릭 기반 오토스케일을 지원하지 않습니다.
효과적인 자동 확장을 위해서는 동시 작업의 적절한 구성이 중요합니다. 동시 작업이 너무 낮게 설정되어 있으면 스케일링을 트리거하는 데 필요한 CPU 사용률 임계값에 도달하지 못할 수 있으므로 Kafka 지연이 증가하는 경우에도 시스템이 스케일업되지 않을 수 있습니다. 이로 인해 추가 리소스를 사용할 수 있음에도 불구하고 처리 지연 및 백로그 누적이 발생할 수 있습니다.
최적의 확장 동작을 보장하려면 프로세서 동시 작업 조정하기 의 권장 사항에 따라 동시 작업을 구성하고 CPU 사용률 및 Kafka 지연 메트릭을 모두 모니터링하십시오.
성능 문제 해결하기¶
일반적인 성능 병목 현상¶
높은 컨슈머 지연 또는 Snowflake Ingest 병목 현상¶
Kafka 컨슈머 지연이 증가하거나 Snowflake Ingest이 느린 경우 다음 작업을 수행하십시오.
Openflow와 Kafka 브로커 사이의 네트워크 연결 및 대역폭을 확인합니다.
PutSnowpipeStreaming 프로세서 앞의 큐가 증가하는지 관찰하십시오.
그러한 경우 프로세서 동시 작업 조정하기 에 제공된 범위 제한에 PutSnowpipeStreaming 프로세서에 대한 동시 작업을 더 추가하는 것이 좋습니다.
그렇지 않은 경우 프로세서 동시 작업 조정하기 에 제공된 범위 제한에 따라 ConsumeKafka 프로세서에 대한 동시 작업을 더 추가하는 것이 좋습니다.
더 큰 노드 유형을 사용하는 것이 좋습니다.
런타임의 최대 노드 수를 늘리는 것을 고려하십시오.
메모리 압력¶
메모리 관련 문제가 발생하는 경우:
배치 크기를 줄여 메모리 사용량을 줄이십시오.
ConsumeKafka 프로세서의 동시 작업 수를 줄입니다.
더 큰 노드 유형으로 업그레이드하는 것을 고려하십시오.
네트워크 지연 문제¶
지연 시간이 긴 경우:
Openflow와 외부 시스템 간의 네트워크 구성을 확인합니다.
Kafka 클러스터에 더 가까운 곳에 Openflow를 배포하는 것을 고려하십시오.
처리량이 적은 작업의 경우 PutSnowpipeStreaming 프로세서의 클라이언트 지연 설정과 ConsumeKafka 프로세서의 최대 커밋되지 않은 시간 설정을 낮추는 것이 좋습니다.
다음 단계¶
노드 크기에 맞는 권장 구성으로 시작하십시오.
성능 메트릭을 모니터링하고 관찰된 동작에 따라 설정을 조정하십시오.
프로덕션 환경에 배포하기 전에 비프로덕션 환경에서 로딩 테스트를 고려하십시오.