Snowflake High Performance connector for Kafka¶
이 항목에서는 |KAFKAOFHP|의 기본 개념, 사용 사례 및 이점, 주요 기능, 제한 사항에 대해 설명합니다.
참고
|KAFKAOFHP|는 Kafka 항목에서 데이터를 읽고 해당 데이터를 Snowflake 테이블에 로드하는 싱크 커넥터`입니다. Kafka Connect 및 해당 프레임워크에 대한 자세한 내용은 :doc:`aboutkafkaconnect 섹션을 참조하세요.
이점¶
|KAFKAOFHP|는 거의 실시간 인사이트가 필요한 현대적인 데이터 집약형 조직을 위해 설계된 Snowflake의 :doc:`고성능 Snowpipe Streaming 아키텍처</user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-overview>`를 활용합니다. 이 차세대 아키텍처는 Snowflake로의 실시간 수집을 위한 처리량, 효율성, 유연성을 크게 향상합니다.
고성능 아키텍처는 다음과 같은 몇 가지 주요 이점을 제공합니다.
우수한 처리량 및 대기 시간: 테이블당 최대 10GB/초의 수집 속도를 지원하도록 설계되었으며, 엔드 투 엔드 수집부터 쿼리까지의 대기 시간을 5~10초 이내로 유지하여 거의 실시간으로 분석할 수 있습니다.
간단한 청구: 비용을 보다 예측 가능하고 이해하기 쉽게 만드는 투명한 처리량 기반 청구를 제공합니다.
향상된 성능: 이전 구현에 비해 개선된 클라이언트 측 성능 및 더 낮은 리소스 사용량을 제공하는 러스트 기반 클라이언트 코어를 사용합니다.
전송 중 변환: PIPE 오브젝트 내에서 COPY 명령 구문을 사용하여 수집 중 데이터 정리 및 재형성을 지원하므로 대상 테이블에 도달하기 전에 데이터를 변환할 수 있습니다.
서버 측 스키마 유효성 검사: PIPE 오브젝트를 통해 클라이언트 측에서 서버 측으로 스키마 유효성 검사를 이동하여 데이터 품질을 보장하고 클라이언트 복잡성을 줄입니다.
사전 클러스터링 기능: 대상 테이블에 클러스터링 키가 정의되어 있는 경우 수집 중에 데이터를 클러스터링할 수 있으므로 수집 후 유지 관리 없이 쿼리 성능을 개선할 수 있습니다.
커넥터는 수집 관리를 위한 중앙 구성 요소로 Snowflake PIPE 오브젝트를 사용합니다. PIPE 오브젝트는 모든 스트리밍 데이터의 진입점 및 정의 계층 역할을 수행하여 데이터가 대상 테이블에 커밋되기 전에 어떻게 처리 및 변환되고 유효성 검사가 이루어지는지 정의합니다. 커넥터가 테이블 및 파이프에서 작동하는 방식에 대한 자세한 내용은 커넥터가 테이블 및 파이프에서 작동하는 방식 섹션을 참조하세요.
커넥터 버전 선택하기¶
Kafka 커넥터는 Kafka Connect 클러스터에서 실행되어 Kafka 항목에서 데이터를 읽고 Snowflake 테이블에 씁니다.
Snowflake는 두 가지 커넥터 버전을 제공합니다. 두 버전의 커넥터 모두 Kafka에서 Snowflake로 데이터를 스트리밍하기 위한 동일한 핵심 기능을 제공합니다.
커넥터의 Confluent 버전
Kafka용 고성능 Snowflake Connector는 아직 Confluent Cloud에서 사용할 수 없습니다. Confluent Cloud를 사용하는 경우 커넥터를 사용자 지정 플러그인 커넥터로 수동 설치해야 합니다.
Confluent 버전은 Confluent Hub 또는 Confluent Control Center를 통해 쉽게 설치할 수 있도록 패키징되어 있으며, Confluent Platform 환경에 대한 최적화가 포함되어 있습니다.
Confluent Platform, Confluent Kafka Docker 이미지 또는 Confluent Cloud를 사용하는 경우 이 버전을 선택합니다.
Confluent 버전의 커넥터를 다운로드하여 설치하려면 Snowflake 지원에 문의하세요.
Kafka Connect에 대한 자세한 내용은 https://docs.confluent.io/current/connect/를 참조하십시오.
open source software (OSS) Apache Kafka package https://mvnrepository.com/artifact/com.snowflake/snowflake-kafka-connector/ - 커넥터의 OSS Apache Kafka 버전입니다.
Apache 버전은 표준 JAR 파일로 배포되며, Apache Kafka Connect 클러스터에 수동으로 설치해야 합니다. Apache Kafka를 실행하는 경우 이 버전을 선택합니다.
Apache Kafka에 대한 자세한 내용은 https://kafka.apache.org/를 참조하십시오.
제한 사항¶
|KAFKAOFHP|에는 다음과 같은 제한 사항이 있습니다.
- 테이블 생성:
커넥터를 시작하기 전에 대상 테이블을 수동으로 생성해야 합니다. 커넥터는 테이블을 자동으로 생성하지 않습니다.
- 버전 3.x 이하에서의 마이그레이션
기존 파이프라인을 버전 3.x 이하에서 새 커넥터로 수동으로 마이그레이션할 수 있습니다. 기존 파이프라인이 새 커넥터에서 아직 사용할 수 없는 기능을 사용하고 있지 않은지 확인하세요.
- 구성 안정성
구성 매개 변수 이름은 비공개 미리 보기 단계에서 변경될 수 있습니다. 사용하는 모든 구성 매개 변수는 공개 미리 보기 전에 이름이 바뀌거나 재구성될 수 있습니다. 매개 변수 이름이 변경되면 Snowflake에서 마이그레이션 지침을 제공합니다.
Kafka 커넥터 제한 사항¶
- 버전 3.x 이하에서의 기존 파이프라인 마이그레이션
커넥터는 버전 3.x 이하에서 기존 파이프라인의 마이그레이션을 지원하지 않습니다. 기존 파이프라인을 새 커넥터로 수동으로 마이그레이션해야 합니다.
- 단일 메시지 변환(SMTs):
대부분의 단일 메시지 변환(SMTs)은 커뮤니티 변환기를 사용할 때 지원되지만, 현재 지원되지 않는 ``regex.router``는 예외입니다.
SMTs에 대한 자세한 내용은 `Confluent Cloud 또는 Confluent Platform용 Kafka Connect 단일 메시지 변환<https://docs.confluent.io/current/connect/transforms/index.html>`_을 참조하세요.
지원되는 Kafka 버전¶
중요
특정 버전의 커넥터만 지원되지 않습니다. 지원되는 버전과 사전 릴리스 및 릴리스 후보에 대한 정보는 아래 테이블을 참조하세요.
릴리스 시리즈 |
상태 |
참고 |
|---|---|---|
4.x.x |
비공개 미리 보기 |
조기 액세스. 현재 3.x 및 2.x 버전에서의 마이그레이션은 지원되지 않습니다. |
3.x.x |
공식적으로 지원됨 |
최신 버전이며 적극 권장합니다. |
2.x.x |
공식적으로 지원됨 |
업그레이드를 권장합니다. |
1.x.x |
지원되지 않음 |
이 릴리스 시리즈는 사용하지 마십시오. |
지원되지 않는 기능¶
다음 기능은 지원되지 않습니다.
- 스키마 진화
스키마 진화는 지원되지 않습니다. 스키마 변경 사항은 수동으로 관리해야 합니다. 자세한 내용은 스키마 진화 섹션을 참조하십시오.
- Iceberg 테이블
Iceberg 테이블로의 수집은 지원되지 않습니다.
- 자동 테이블 생성
커넥터는 테이블을 자동으로 생성하지 않습니다. 커넥터를 시작하기 전에 테이블을 수동으로 생성해야 합니다.
손상된 레코드는 커넥터에 의해 데드 레터 큐(DLQ)로 전송되지 않음
errors.tolerance=all및errors.deadletterqueue.topic.name``을 설정한 경우, 변환할 수 없는 레코드만 Kafka Connect 수준 오류 처리기에 의해 DLQ로 전송됩니다. 레코드가 커넥터로 전달되고 Snowflake로 수집되지 않으면 DLQ로 전송되지 않습니다. 이는 기존 Snowpipe Streaming 고성능 제한 사항입니다. 커넥터는 Snowflake에 수집되지 않은 레코드를 감지할 수 없습니다. 특정 양의 레코드가 수집되지 않았다는 것만 감지할 수 있습니다. 이로 인해 ``errors.tolerance=all매개 변수를 사용하는 경우 커넥터는 **최대 한 번**의 전달만 보장합니다.
- 수집에 실패한 손상된 레코드는 수동으로 다시 시도해야 함
errors.tolerance=none``을 설정한 경우 커넥터는 ``rows_error_count``가 채널 상태에서 0보다 크다는 것을 감지하는 즉시 작업에 실패합니다. 손상된 레코드를 다시 시도하려면 사용자가 채널 기록을 확인하여 해당 레코드를 찾아야 합니다. 손상된 레코드 및 수집 오류 문제 해결에 대한 자세한 내용은 :doc:`오류 처리</user-guide/snowpipe-streaming/snowpipe-streaming-high-performance-error-handling>`를 참조하세요. :ref:`label-detect_and_recover_from_errors_using_metadata_offsets`에 설명된 갭 찾기 기법을 사용할 수도 있습니다. 이 기법을 사용하는 데 필요한 Kafka 오프셋 정보는 ``RECORD_METADATA열에 제공됩니다.
시크릿 외부화하기¶
Snowflake는 개인 키와 같은 시크릿을 외부화하고 암호화된 형태로 저장하거나 AWS Key Management Service(KMS), Microsoft Azure Key Vault 또는 HashiCorp Vault와 같은 키 관리 서비스에 저장할 것을 적극 권장합니다. 이러한 작업은 Kafka Connect 클러스터에서 ConfigProvider 구현을 사용하여 수행할 수 있습니다.
자세한 내용은 이 서비스 에 대한 Confluent 설명을 참조하십시오.
테스트 및 프로토타이핑을 위한 캐시 고려 사항¶
커넥터는 파티션 재조정 중에 성능을 개선하기 위해 테이블 및 파이프 존재 검사를 캐시합니다. 그러나 테스트 및 프로토타이핑 중에 이 캐싱 동작으로 인해 커넥터가 수동으로 생성된 테이블 또는 파이프를 즉시 감지하지 못할 수 있습니다.
문제: 커넥터가 실행되는 동안 테이블이나 파이프를 수동으로 생성하면 커넥터가 기본적으로 최대 5분 동안 캐시된 존재 확인 결과(오브젝트가 존재하지 않음을 나타낼 수 있음)를 계속 사용할 수 있습니다. 이로 인해 테스트 중에 예기치 않은 오류나 동작이 발생할 수 있습니다.
테스트 권장 사항: 테스트 및 프로토타이핑 중에 캐시 관련 문제를 방지하려면 두 캐시 만료 매개 변수를 모두 최소값인 ``1``밀리초로 구성하거나 캐싱을 비활성화합니다.
snowflake.cache.table.exists.expire.ms=1
snowflake.cache.pipe.exists.expire.ms=1
이 구성을 사용하면 커넥터가 모든 파티션 재조정에 대해 새로운 존재 확인을 수행하여 수동으로 생성된 테이블과 파이프의 효과를 즉시 확인할 수 있습니다.
중요
이러한 최소 캐시 설정은 테스트 및 프로토타이핑용으로만 권장됩니다. 프로덕션 환경에서는 기본 캐시 만료 값(5분 이상)을 사용하여 Snowflake에 대한 메타데이터 쿼리를 최소화하고 특히 많은 파티션을 처리할 때 재조정 성능을 개선합니다.
비공개 미리 보기 버전의 주요 변경 사항¶
주요 변경 사항 목록은 비공개 미리 보기 버전의 릴리스 정보를 참조하세요.
다음 단계¶
Snowflake High Performance connector for Kafka 설정 단계는 |KAFKAOFHP|에 대한 작업 설정 항목을 참조하세요. . 커넥터가 테이블 및 파이프에서 작동하는 방식에 대한 자세한 내용은 :doc:`커넥터의 작동 방식<how-the-connector-works>`을 참조하세요.