HTTP2Kafka прокси
Некоторые интеграции OpenLineage поддерживают только HttpTransport, но не KafkaTransport, например Trino.
HTTP → Kafka прокси Data.Rentgen — это опциональный компонент, который предоставляет простой HTTP API для получения событий выполнения OpenLineage в формате JSON и отправки их в топик Kafka как есть, чтобы они могли быть обработаны консьюмером сообщений соответствующим образом.
OpenLineage HttpTransport или KafkaTransport?
Введение http2kafka в цепочку немного снижает производительность:
- Он парсит все входящие события для целей валидации и маршрутизации. Чем больше событие, тем медленнее парсинг.
- Протокол HTTP/HTTPS гораздо сложнее TCP протокола Kafka и изначально имеет гораздо большую задержку.
Если интеграция OpenLineage поддерживает и HttpTransport, и KafkaTransport, а Kafka не использует сложную аутентификацию, не поддерживаемую OpenLineage (например, OAUTHBEARER), предпочтительно выбирать KafkaTransport.
Если это невозможно, http2kafka — это правильный выбор.
Установка и запуск
С помощью docker
-
Установите Docker
-
Установите docker-compose
-
Выполните следующую команду:
$ docker compose --profile http2kafka up -d --wait ...docker-composeзагрузит все необходимые образы, создаст контейнеры и запустит компонент.Опции можно задать через файл
.envили секциюenvironmentвdocker-compose.ymldocker-compose.yml
http2kafka: image: mtsrus/data-rentgen:${VERSION:-latest} command: python -m data_rentgen.http2kafka --host 0.0.0.0 --port 8000 restart: unless-stopped env_file: .env.docker ports: - 8002:8000 healthcheck: test: [CMD-SHELL, curl -f http://localhost:8000/monitoring/ping] interval: 30s timeout: 5s retries: 3 start_period: 5s depends_on: broker: condition: service_healthy profiles: - http2kafka - all
.env.docker
See Backend -> Consumer -> Configuration documentation
DATA_RENTGEN__KAFKA__BOOTSTRAP_SERVERS=["broker:9092"] DATA_RENTGEN__KAFKA__SECURITY__TYPE=SCRAM-SHA-256 DATA_RENTGEN__KAFKA__SECURITY__USER=data_rentgen DATA_RENTGEN__KAFKA__SECURITY__PASSWORD=changeme DATA_RENTGEN__KAFKA__COMPRESSION=zstd
-
После запуска и готовности компонента откройте http://localhost:8002/docs.
Без docker
-
Установите Python 3.10 или выше
-
Настройте message-broker
-
Создайте виртуальное окружение
$ python -m venv /some/.venv
...
$ source /some/.venv/activate
- Установите пакет
data-rentgenсо следующими дополнительными зависимостями:
$ pip install data-rentgen[http2kafka]
...
- Запустите процесс http2kafka
$ python -m data_rentgen.http2kafka --host 0.0.0.0 --port 8002
...
Это тонкая обертка вокруг uvicorn cli, опции и команды точно такие же.
- После запуска и готовности сервера откройте http://localhost:8002/docs.