Перейти к содержанию

ClickHouse

В этой статье

Информация

ClickHouse - это высокопроизводительная колоночная система управления базами данных (СУБД), предназначенная для выполнения аналитических запросов класса OLAP. СУБД ориентирована на анализ больших объёмов данных с низкой задержкой и широко используется в задачах аналитики, мониторинга, логирования и обработки телеметрии.

ClickHouse. Основные возможности

  • Колоночное хранение данных: данные хранятся по столбцам, а не по строкам, что значительно ускоряет выполнение аналитических запросов и снижает объем обрабатываемых данных.
  • Высокая производительность: оптимизирована для обработки больших массивов данных и способна выполнять запросы по миллиардам строк за счёт векторизованной обработки и эффективного использования CPU.
  • Сжатие данных: мспользуются специализированные алгоритмы сжатия, которые позволяют значительно уменьшить объём хранимых данных (часто в несколько раз по сравнению с построчными СУБД), особенно при аналитических нагрузках.
  • SQL-совместимость: поддержка расширенного SQL-синтаксиса с дополнительными функциями для аналитики, что упрощает миграцию существующих приложений.
  • Распределенная обработка: возможность создания кластеров для горизонтального масштабирования и обработки данных на нескольких серверах.
  • Репликация данных: встроенная поддержка репликации для обеспечения отказоустойчивости и высокой доступности данных.
  • Поддержка множества форматов данных: возможность импорта и экспорта данных в форматах CSV, JSON, Parquet, Avro и других.
  • Материализованные представления: автоматическое агрегирование данных в фоновом режиме для ускорения повторяющихся запросов.
  • Интеграция с внешними источниками: поддержка прямого чтения данных из MySQL, PostgreSQL, MongoDB, Kafka, S3 и других систем.

Особенности сборки

ID
  • Установленное ПО:

    • ClickHouse Server >= 26.1.1
    • ClickHouse Client >= 26.1.1
  • Особенности установки:

    • ПО установлено посредством официального скрипта от разработчиков;
    • Время установки: 5-10 минут;
    • База данных доступна для подключения по сети через различные SQL-клиенты;
    • По умолчанию используется пользователь default с паролем от учетной записи root.

Расположение конфигурационных файлов и данных:

  • Основная конфигурация сервера: /etc/clickhouse-server/config.xml
  • Настройки пользователей: /etc/clickhouse-server/users.xml
  • Логи сервера:
    • /var/log/clickhouse-server/clickhouse-server.log
    • /var/log/clickhouse-server/clickhouse-server.err.log
  • Данные: /var/lib/clickhouse/
  • PID файл: /run/clickhouse-server/clickhouse-server.pid
  • Системные лимиты: /etc/security/limits.d/clickhouse.conf

Доступные порты для подключения:

Порт Протокол Назначение Статус Клиенты/Использование
8123 HTTP HTTP интерфейс Активен DBeaver, DataGrip, Tableau, веб-интерфейс, JDBC/ODBC
9000 TCP Native Нативный протокол ClickHouse Активен clickhouse-client, Python/Go драйверы
9004 MySQL Эмуляция MySQL протокола Активен MySQL Workbench, mysql клиент
9005 PostgreSQL Эмуляция PostgreSQL протокола Активен pgAdmin, psql клиент
9009 Interserver HTTP Репликация между серверами Активен Внутрикластерная коммуникация
8443 HTTPS HTTP интерфейс с SSL Опционально Требует настройки SSL сертификатов
9100 gRPC gRPC интерфейс Опционально gRPC клиенты

Примечание

Порты 8443 и 9100 по умолчанию отключены и требуют дополнительной настройки в файле /etc/clickhouse-server/config.xml.

Примечание

Если не указано иное, по умолчанию мы устанавливаем последнюю релиз версию программного обеспечения с официального сайта разработчика.

Начало работы после развертывания ClickHouse

После оплаты заказа на указанную при регистрации электронную почту придет уведомление о готовности сервера к работе. В нем будет указан IP-адрес VPS, а также логин и пароль для подключения. Управление оборудованием клиенты нашей компании осуществляют в панели управления серверами и APIInvapi.

Данные для авторизации:

  • IP-адрес сервера: указан в письме и в панели управления;
  • Логин: default;
  • Пароль: совпадает с паролем от учетной записи root и приходит в письме на электронную почту.

Важно

Для подключения через GUI-клиенты (DBeaver, DataGrip и другие) используйте порт 8123 (HTTP интерфейс). Порт 9000 предназначен только для нативного клиента clickhouse-client.

Подключение к ClickHouse

Методы подключения

В этом разделе описаны наиболее распространенные способы подключения к ClickHouse через clickhouse-client (консольный клиент) и DBeaver (графический интерфейс). ClickHouse также поддерживает подключение через другие клиенты: DataGrip, Tableau, MySQL Workbench (через порт 9004), pgAdmin (через порт 9005), а также программные библиотеки для Python, Go, Java и других языков программирования.

Подключение через clickhouse-client

ClickHouse включает нативный консольный клиент для работы с базой данных.

1. Подключение с сервера (локально):

clickhouse-client

2. Подключение с удаленной машины:

clickhouse-client --host <IP-адрес> --port 9000 --user default --password <пароль>

3. Выполнение простого запроса:

SELECT version();

4. Просмотр списка баз данных:

SHOW DATABASES;

Подключение через DBeaver

DBeaver - это универсальный GUI-клиент для работы с различными базами данных, включая ClickHouse.

1. Установка DBeaver

Скачайте и установите DBeaver с официального сайта.

2. Создание нового подключения

  • Запустите DBeaver
  • Выберите Database >> New Database Connection (или нажмите Ctrl+Shift+N)

  • В списке баз данных найдите и выберите ClickHouse

  • Нажмите Next

3. Настройка параметров подключения

В окне настроек укажите следующие параметры:

Host: <IP-адрес вашего сервера>
Port: 8123
Database/Schema: (оставьте пустым или укажите default)
Username: default
Password: <пароль от root>

Критически важно

Для подключения через DBeaver используйте порт 8123.

4. Загрузка JDBC драйвера

При первом подключении DBeaver предложит загрузить JDBC драйвер для ClickHouse:

  • Нажмите Download в появившемся окне:

  • Дождитесь завершения загрузки драйвера:

  • Нажмите OK.

5. Тестирование подключения

  • Нажмите Test Connection;
  • Если всё настроено правильно, появится сообщение: Connected (XXX ms):

  • В сообщении будут указаны:
  • Server: ClickHouse X.X.X.XXX
  • Driver: ClickHouse JDBC Driver X.X.X

6. Завершение настройки

  • Нажмите Finish;
  • Подключение появится в Database Navigator;
  • Раскройте дерево подключения для просмотра баз данных, таблиц и других объектов.

Возможные проблемы:

Ошибка Причина Решение
transport error: 400 Используется порт 9000 вместо 8123 Измените порт на 8123
Connection refused Неверный IP или порт закрыт firewall Проверьте IP-адрес и правила firewall
Authentication failed Неверный логин или пароль Проверьте учетные данные
Hostname is not specified Случайно включен SSH-туннель без настройки Закройте вкладку SSH в настройках подключения

Основные операции в ClickHouse

Создание базы данных

CREATE DATABASE IF NOT EXISTS my_database;

Создание таблицы

CREATE TABLE my_database.events
(
    event_date Date,
    event_time DateTime,
    user_id UInt32,
    event_type String,
    value Float64
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_date)
ORDER BY (event_date, user_id);

Вставка данных

INSERT INTO my_database.events VALUES
    ('2024-12-25', '2024-12-25 10:00:00', 1, 'click', 1.5),
    ('2024-12-25', '2024-12-25 10:05:00', 2, 'view', 2.3),
    ('2024-12-25', '2024-12-25 10:10:00', 1, 'purchase', 99.99);

Выборка данных

Простая выборка:

SELECT * FROM my_database.events LIMIT 10;

Агрегация данных:

SELECT 
    event_type,
    count() as events_count,
    avg(value) as avg_value
FROM my_database.events
WHERE event_date = '2024-12-25'
GROUP BY event_type;

Временные ряды:

SELECT 
    toStartOfHour(event_time) as hour,
    count() as events_per_hour
FROM my_database.events
WHERE event_date >= '2024-12-01'
GROUP BY hour
ORDER BY hour;

Импорт данных из CSV

Создание таблицы:

CREATE TABLE my_database.logs
(
    timestamp DateTime,
    level String,
    message String
)
ENGINE = MergeTree()
ORDER BY timestamp;

Импорт данных:

INSERT INTO my_database.logs
FROM INFILE '/path/to/file.csv'
FORMAT CSV;

Управление пользователями и правами

Создание пользователя:

CREATE USER analyst IDENTIFIED BY 'secure_password';

Выдача прав:

GRANT SELECT ON my_database.* TO analyst;

Просмотр пользователей:

SHOW USERS;

Просмотр прав:

SHOW GRANTS FOR analyst;

Управление сервисом

Запуск сервиса:

clickhouse start

Остановка сервиса:

clickhouse stop

Перезапуск сервиса:

clickhouse restart

Статус сервиса:

clickhouse status

Просмотр логов:

tail -f /var/log/clickhouse-server/clickhouse-server.log

Примечание

Если вы работаете не от пользователя root, добавьте sudo перед командами: sudo clickhouse start

Проверка активных портов

Проверить, какие порты слушает ClickHouse:

ss -tlnp | grep clickhouse

Или более детально:

ss -tlnp | grep $(pidof clickhouse-server)

Проверить настроенные порты в конфигурации:

cat /etc/clickhouse-server/config.xml | grep -E "port>" | head -20

Проверить конкретный порт:

ss -tlnp | grep :8123

Ожидаемый результат проверки портов:

LISTEN  *:8123  clickhouse-serv  (HTTP)
LISTEN  *:9000  clickhouse-serv  (Native TCP)
LISTEN  *:9004  clickhouse-serv  (MySQL)
LISTEN  *:9005  clickhouse-serv  (PostgreSQL)
LISTEN  *:9009  clickhouse-serv  (Interserver)

Примечание

Подробная информация по настройке и оптимизации ClickHouse содержится в официальной документации разработчиков.

Заказ ClickHouse с помощью API

Для установки данного ПО с использованием API следуйте этой инструкции.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×