Apache Doris Kafka Connector
Практический гайд по загрузке событий из Kafka в Doris: standalone, distributed, SSL, DLQ и schema evolution.
Datanomix.pro
~14 мин
1. Когда действительно нужен Doris Kafka Connector
Если у вас уже есть Kafka Connect и нужно стабильно доставлять потоковые данные в Apache Doris, официальный Doris Sink Connector — самый быстрый путь. Он закрывает базовую интеграцию без кастомного consumer-кода, работает через Stream Load и позволяет управлять пайплайном через стандартный REST API Kafka Connect.
Подход особенно полезен, когда важны предсказуемость эксплуатации, масштабирование через distributed режим и минимальная «самописная» поддержка команды.
2. Совместимость версий
Перед запуском проверьте матрицу совместимости для вашей связки Kafka, Doris и Java. На практике чаще всего встречается стек Kafka 2.4+, Doris 2.0+ и Java 8 для актуальных версий коннектора.
name=test-doris-sink
connector.class=org.apache.doris.kafka.connector.DorisSinkConnector
topics=topic_test
doris.topic2table.map=topic_test:test_kafka_tbl
doris.urls=10.10.10.1
doris.http.port=8030
doris.query.port=9030
doris.user=root
doris.password=
doris.database=test_db
value.converter=org.apache.kafka.connect.json.JsonConverter
value.converter.schemas.enable=false 3. Быстрый старт: standalone режим
- Положите JAR коннектора в каталог plugins Kafka Connect.
- Настройте connect-standalone.properties (broker, plugin.path, poll interval).
- Создайте файл doris-connector-sink.properties с параметрами sink.
- Запустите connect-standalone.sh.
Standalone подходит для локальной проверки, PoC и отладки. Для production обычно используют distributed.
4. Production: distributed режим
В distributed режиме вы получаете отказоустойчивость, масштабирование и стандартные операции через REST: создание коннектора, пауза, резюм, рестарт задач и удаление.
При первом старте Kafka Connect создаст служебные топики config.storage.topic, offset.storage.topic и status.storage.topic.
5. SSL и безопасное подключение
Для SSL-кластера Kafka задайте truststore как для worker, так и для embedded consumer sink-коннектора.
6. DLQ: очередь необработанных сообщений
По умолчанию ошибки преобразования и записи могут остановить коннектор. Для production лучше заранее выбрать стратегию: fail-fast или tolerate-and-route с DLQ.
7. Schema evolution и Debezium
При CDC-сценариях с Debezium схема источника может меняться. Не все изменения автоматически маппятся в таблицу Doris.
Практика: сначала добавьте новые колонки в целевую таблицу Doris, затем перезапустите connector-task.
8. Best practices для production
- Используйте distributed mode и мониторинг статусов connector/task.
- Разделяйте business topics и DLQ topics, задавайте отдельные retention-политики.
- Профилируйте буферы (buffer.count.records, buffer.size.bytes, buffer.flush.time) под throughput.
- Фиксируйте правила schema evolution как операционный runbook.
- Регулярно проверяйте lag, error rate и фактическую задержку доставки.
FAQ
Какой режим выбрать для продакшна?
Distributed mode. Standalone подходит для тестов и локальной отладки.
Можно ли работать с SSL Kafka?
Да. Настройте truststore и для Kafka Connect worker, и для embedded consumer sink-коннектора.
Что делать с «плохими» сообщениями?
Используйте DLQ, чтобы не останавливать поток и разбирать ошибки отдельно.