Kafka 커넥터 버전
Kafka 커넥터 버전 (Kafka Connector Versions)
Pinot 배포에 맞는 올바른 Apache Kafka 커넥터 버전을 선택하는 페이지예요.
본문
Apache Pinot은 서로 다른 Kafka 브로커 배포에 맞는 여러 Kafka 커넥터 버전을 제공해요. Kafka 클러스터 버전에 맞는 커넥터를 선택하세요.
사용 가능한 커넥터
| 커넥터 플러그인 (Connector Plugin) | Kafka 클라이언트 버전 (Client Version) | 참고 (Notes) |
|---|---|---|
pinot-kafka-3.0 |
3.9.x | Kafka 3.x 클러스터에 권장. Scala 2.13(기본)로 빌드; Scala 2.12는 -Pscala-2.12 프로파일 사용 |
pinot-kafka-4.0 |
4.1.x | Kafka 4.x 클러스터(KRaft 모드)에 권장. 순수 Java — Scala 의존성 없음 |
{% hint style="warning" %}
pinot-kafka-2.0 (kafka20) 플러그인은 제거되었습니다. 테이블 설정이 org.apache.pinot.plugin.stream.kafka20.KafkaConsumerFactory를 참조한다면 kafka30 또는 kafka40으로 마이그레이션해야 합니다.
{% endhint %}
Kafka 4.0 커넥터
Kafka 4.0 커넥터(pinot-kafka-4.0)는 KRaft 모드(ZooKeeper 없음)에서 실행되는 Apache Kafka 4.x 브로커를 지원해요. Scala 의존성이 없는 순수 Java Kafka 클라이언트를 사용하므로 배포 풋프린트가 더 작아요.
Kafka 4.0을 쓸 때
- Kafka 클러스터가 KRaft 모드로 Kafka 4.0+를 실행할 때
- Scala 전이 의존성을 제거하고 싶을 때
- 현대 Kafka 인프라를 대상으로 새 Pinot 클러스터를 배포할 때
설정
Kafka 4.0 커넥터는 Kafka 3.0 커넥터와 동일한 설정 속성을 사용해요. 유일한 차이는 stream.kafka.consumer.factory.class.name이에요:
{
"streamConfigs": {
"streamType": "kafka",
"stream.kafka.topic.name": "your-topic",
"stream.kafka.broker.list": "kafka:9092",
"stream.kafka.consumer.factory.class.name": "org.apache.pinot.plugin.stream.kafka40.KafkaConsumerFactory",
"stream.kafka.decoder.class.name": "org.apache.pinot.plugin.stream.kafka.KafkaJSONMessageDecoder",
"realtime.segment.flush.threshold.rows": "0",
"realtime.segment.flush.threshold.time": "24h",
"realtime.segment.flush.threshold.segment.size": "100M"
}
}
Kafka 2.0 또는 3.0에서 마이그레이션
이전 Kafka 커넥터에서 Kafka 3.0 또는 4.0으로 마이그레이션하려면 테이블 설정의 소비자 팩토리 클래스 이름을 업데이트하세요:
| 원본 (From) | 대상 (To) |
|---|---|
org.apache.pinot.plugin.stream.kafka20.KafkaConsumerFactory |
org.apache.pinot.plugin.stream.kafka30.KafkaConsumerFactory (Kafka 3.x) 또는 org.apache.pinot.plugin.stream.kafka40.KafkaConsumerFactory (Kafka 4.x) |
org.apache.pinot.plugin.stream.kafka30.KafkaConsumerFactory |
org.apache.pinot.plugin.stream.kafka40.KafkaConsumerFactory |
pinot-kafka-4.0플러그인 JAR이 Pinot 플러그인 디렉터리에 있는지 확인.- 다른 모든
stream.kafka.*설정 속성은 동일하게 유지.
{% hint style="info" %} Kafka 4.0 커넥터는 SSL/TLS, SASL 인증, 격리 수준, Schema Registry 통합을 비롯한 모든 기존 Kafka 소비자 설정 속성과 완전히 호환됩니다. 자세한 설정 예시는 주요 Kafka 수집 가이드 참고. {% endhint %}
Kafka 3.0 커넥터
Kafka 3.0 커넥터(pinot-kafka-3.0)는 Apache Kafka 3.x 브로커를 지원해요. 이것은 가장 널리 배포되는 커넥터 버전이에요.
Scala 버전
Kafka 3.0 커넥터는 기본적으로 Scala 2.13로 빌드돼요. Scala 2.12 호환이 필요하면 -Pscala-2.12 Maven 프로파일로 Pinot을 빌드하세요:
mvn clean install -Pscala-2.12 -DskipTests
설정
{
"streamConfigs": {
"streamType": "kafka",
"stream.kafka.topic.name": "your-topic",
"stream.kafka.broker.list": "kafka:9092",
"stream.kafka.consumer.factory.class.name": "org.apache.pinot.plugin.stream.kafka30.KafkaConsumerFactory",
"stream.kafka.decoder.class.name": "org.apache.pinot.plugin.stream.kafka.KafkaJSONMessageDecoder"
}
}
공통 설정 속성
모든 Kafka 커넥터 버전은 동일한 설정 속성을 공유해요. 완전한 설정 레퍼런스는 Apache Kafka에서 스트리밍 데이터 수집 참고. 다음을 포함해요:
- SSL/TLS 설정
- SASL 인증
- Schema Registry 통합 (Avro, JSON Schema, Protobuf)
- 소비자 튜닝 속성
- 격리 수준 (
read_committed/read_uncommitted)
네이티브 Kafka 소비자 속성 전달
stream.kafka.consumer.prop. 접두사를 사용해 네이티브 Kafka 소비자 설정 속성을 전달할 수 있어요:
{
"streamConfigs": {
"stream.kafka.consumer.prop.auto.offset.reset": "smallest",
"stream.kafka.consumer.prop.max.poll.records": "500",
"stream.kafka.consumer.prop.fetch.min.bytes": "100000",
"stream.kafka.consumer.prop.session.timeout.ms": "30000"
}
}