Эксплуатация Arenadata QuickMarts (ADQM)
Arenadata QuickMarts (ADQM) — это аналитическая СУБД, совместимая с ClickHouse, ориентированная на быструю генерацию витрин данных, агрегации и отчёты в real-time режиме. ADQM — часть экосистемы Arenadata, может устанавливаться как отдельный кластер или компонент хранилища.
Архитектура и компоненты
Основные компоненты:
- ADQM Server – движок ClickHouse совместимого типа.
- ZooKeeper – используется для координации репликаций и шардов.
- Keeper – альтернатива ZK, поддерживается через native ClickHouse Keeper.
- ADCM Agent – управляет установкой, масштабированием, обновлениями.
Структура кластера:
- shard — горизонтальное распределение данных.
- replica — зеркалирование узлов для отказоустойчивости.
Основные задачи эксплуатации
1. Мониторинг
Метрики:
- CPU, RAM, disk I/O (через system.metrics)
- Задержки запросов и ошибок (system.query_log)
- Загрузка по репликам и шардированию
Инструменты:
- Prometheus + Grafana — шаблоны из Monitoring Bundle
- system.mutations, system.replication_queue, system.parts — для трекинга задержек и ошибок репликации
Алерты:
- Задержка вставки (Insert delay)
- Репликация отстаёт или неактивна
- Переполнение диска в /var/lib/clickhouse/
2. Резервное копирование
Подходы:
- Файловое копирование данных с остановкой сервиса
- clickhouse-backup (CLI утилита):
clickhouse-backup create daily_2024_05_01 clickhouse-backup upload daily_2024_05_01
- Поддержка snapshot'ов (LVM, ZFS)
Хранилища:
- S3 (через MinIO или Object Storage)
- NFS, SAN, локальные диски
3. Обслуживание таблиц
Оптимизация:
- OPTIMIZE TABLE table FINAL — слияние партиций
- Контроль ttl для удаления старых данных
- Удаление неиспользуемых партиций:
ALTER TABLE my_table DROP PARTITION '2024-04-01';
Инспекция данных:
- system.parts, system.part_log, system.replicas
- Анализ вставок, чтения, количества блоков
4. Управление пользователями и безопасностью
- Управление через CREATE USER, GRANT, REVOKE
- Поддержка LDAP и TLS
- Настройка ограничений по CPU, quota, max_threads:
CREATE SETTINGS PROFILE limited_user_profile SETTINGS max_memory_usage=1000000000, max_threads=4;
5. Обновления и патчи
Через ADCM:
- Загрузка нового bundle (adqm-bundle.tar.gz)
- Выбор нужного кластера → Operation → upgrade
- Валидация схем, тестирование запросов
CLI-обновление:
- RPM/DEB обновления вручную с помощью yum / apt
- Обязательная проверка backup перед обновлением
6. Масштабирование
- Добавление shard или replica через ADCM
-
Вручную:
- Обновление remote_servers в config.xml
- Распределение таблиц через Distributed engine
7. Интеграция и логирование
-
Интеграция с Kafka:
- Kafka engine или ingestion через NiFi
- Отложенные загрузки: Materialized View → базовая таблица
- Интеграция с BI:
- Superset / Datalens / FineBI — JDBC/ODBC
- system.text_log, system.query_log
- Интеграция с LogSearch и ELK
- Логирование:
Преимущества ADQM
- Высокая скорость агрегации и аналитических запросов
- Гибкая масштабируемость по шардированию и репликации
- Интеграция с Kafka и DWH
- Поддержка TTL, MergeTree, агрегирующих MV
- Инструменты мониторинга и резервного копирования
Ограничения
- Не транзакционная система (OLAP, а не OLTP)
- Требует ручной настройки TTL, оптимизации и merge
- Ограниченная поддержка ANSI SQL (не поддерживает оконные функции полностью)
- Нет встроенного UI — настройка и доступ через CLI/API
Best Practices
- Использовать Materialized Views для fast analytics
- Периодически выполнять OPTIMIZE TABLE и чистить старые партиции
- Настроить алерты по replication lag и disk usage
- Делать ежедневные бэкапы и dry-run восстановления
- Документировать структуру remote_servers и кластерные таблицы
Чек-лист: Ежедневная эксплуатация ADQM (Arenadata QuickMarts)
1. Состояние кластера
|
Проверка |
Команда / Метод |
Ожидаемый результат |
|---|---|---|
|
Пинги всех узлов |
ping <hostname> или adcm agent status |
Ответ от всех узлов |
|
Статус реплик |
SELECT * FROM system.replicas |
is_readonly=0, is_lagging=0 |
|
Отставание репликации |
replica_delay_seconds < 5 |
Меньше 5 секунд |
|
Кол-во неисправных запросов |
SELECT count(*) FROM system.query_log WHERE type='Exception' |
Меньше порога тревоги |
2. Мониторинг
|
Проверка |
Как смотреть |
Комментарии |
|---|---|---|
|
Загрузка CPU / RAM / диск |
Grafana (Prometheus), top, iotop, df -h |
Диск > 80% → алерт |
|
Очередь репликации |
SELECT * FROM system.replication_queue |
Пустая или выполняется |
|
Состояние merge/part |
SELECT table, merges, parts FROM system.parts |
Отсутствие "виснущих" merge |
|
Количество запросов |
system.query_log за сутки |
Анализ аномальной активности |
3. Резервное копирование
|
Шаг |
Инструмент / команда |
Рекомендации |
|---|---|---|
|
Создание бэкапа |
clickhouse-backup create daily_YYYYMMDD |
Дать уникальное имя |
|
Проверка успешности |
clickhouse-backup list / ls /backup/ |
В списке – созданный бэкап |
|
Проверка восстановления (dry-run) |
clickhouse-backup restore --dry-run |
Без ошибок |
|
Проверка загрузки в S3/MinIO |
clickhouse-backup upload |
Проверить в MinIO UI |
4. Очистка и обслуживание таблиц
|
Действие |
Команда / задача |
Комментарии |
|---|---|---|
|
Удаление устаревших данных (по TTL) |
Автоматически, если TTL задан |
Проверить ALTER TABLE … TTL |
|
Принудительное удаление |
ALTER TABLE table DROP PARTITION |
Использовать с осторожностью |
|
Слияние данных |
OPTIMIZE TABLE table FINAL |
Запуск вручную или по cron |
5. Проверка безопасности
|
Проверка |
Как проверить |
Комментарии |
|---|---|---|
|
Статус TLS |
openssl s_client -connect host:9440 (если включено) |
Проверить сертификат |
|
Наличие системных пользователей |
SELECT name FROM system.users |
Нет анонимных/ненужных логинов |
|
Ограничения по ресурсам |
system.settings_profiles, system.user_settings |
Установлены лимиты |
6. Логирование и аудит
|
Проверка |
Где смотреть |
Комментарии |
|---|---|---|
|
Ошибки запросов |
system.query_log |
Найти type='Exception' |
|
Ошибки частей/репликации |
system.part_log, system.replicas |
Проверить статусы |
|
Состояние логов |
/var/log/clickhouse-server/*.log |
Нет ошибок, нет переполнения |
7. Инфраструктурные проверки
|
Проверка |
Как выполнять |
Комментарии |
|---|---|---|
|
Проверка конфигураций |
cat /etc/clickhouse-server/config.xml |
Проверить remote_servers |
|
ZooKeeper-статус (если используется) |
zkCli.sh или `echo ruok |
nc zk-host 2181` |
|
Версия ПО |
clickhouse-server --version |
Актуальная, без багов |
Дополнительно (раз в неделю)
- Проверить обновления ADQM bundle в ADCM
- Анализировать отчёты по графикам нагрузки
- Провести тест восстановления из бэкапа
- Перезапустить сервисы, если наблюдаются проблемы (после уведомления)



