ClickHouse – это высокопроизводительная, масштабируемая система управления базами данных (СУБД), разработанная компанией Яндекс. Она предназначена для обработки больших объемов данных в режиме реального времени (OLAP), что делает ее идеальным решением для аналитики, отчетности и хранения журналов.
Материал написан специально для обладателей онлайн-документации API Яндекс.Директа, облачные решения и визуализация данных и читателей lib.osipenkov.ru.
Введение
Одним из самых известных аналогов ClickHouse можно назвать Google BigQuery.
Какие можно отметить ключевые особенности ClickHouse?
- Высокая производительность. ClickHouse оптимизирован для быстрого выполнения запросов, даже с миллиардами строк;
- Масштабируемость. ClickHouse может быть легко масштабирован как горизонтально (добавлением новых узлов), так и вертикально (увеличением мощности сервера);
- Гибкость. Поддерживает широкий спектр типов данных и предоставляет мощный язык запросов (SQL-совместимый);
- Простота использования. ClickHouse имеет простую в использовании архитектуру и не требует сложной настройки;
- Открытый код. ClickHouse является свободным и открытым программным обеспечением, что делает его доступным для всех.
Для каких целей можно использовать ClickHouse?
- Аналитика. Анализ больших объемов данных в реальном времени, например, веб-аналитика, мониторинг производительности, финансовая аналитика;
- Отчетность. Создание отчетов и дашбордов на основе данных в реальном времени;
- Логирование: Хранение и анализ больших объемов журналов и событий;
- IoT. Обработка данных от сенсоров и других устройств IoT (от английского Internet of Things).
Какие есть преимущества у ClickHouse?
- Скорость. ClickHouse значительно быстрее, чем многие другие СУБД при обработке больших объемов данных;
- Масштабируемость. ClickHouse легко масштабируется как в горизонтальном, так и в вертикальном направлении;
- Низкая стоимость. ClickHouse является бесплатным и открытым программным обеспечением, что делает его доступным для всех.
А какие у ClickHouse есть недостатки?
- Отсутствие ACID-свойств. ClickHouse не обеспечивает полной ACID-совместимости, что может быть важно для некоторых приложений;
- Ограниченная функциональность. ClickHouse не имеет всех функций традиционных СУБД, например, транзакций и повышенной безопасности;
- Неудобство для OLTP. ClickHouse не предназначен для транзакционных загрузок (OLTP).
После краткого экскурса можно перейти к непосредственным действиям.
Настройка VPS
В одной из прошлых статей было рассказано о первичной настройке VPS сервера для того, чтобы в нем можно было работать почти как в привычном для многих пользователей Windows. В рамках данной статьи настройка VPS будет производиться именно для одного из вариантов установки ClickHouse.
Для начала определимся с системными требованиями:
Процессор. В случае установки из готовых deb-пакетов используются процессоры с архитектурой x86_64 и поддержкой инструкций SSE 4.2. Это все процессоры начиная с 8-го поколения Intel или AMD Ryzen 3-х тысячно серии.
RAM. Рекомендуется использовать как минимум 4 ГБ оперативной памяти, чтобы иметь возможность выполнять нетривиальные запросы. Необходимый объём RAM зависит от сложности запросов и объёма данных, обрабатываемых в запросах.
Подсистема хранения. Для установки ClickHouse необходимо 2 ГБ свободного места на диске. Объём дискового пространства, необходимый для хранения данных, необходимо рассчитывать отдельно.
Сеть. По возможности, используются сети 10G и более высокого класса. Пропускная способность сети критически важна для обработки распределённых запросов с большим количеством промежуточных данных.
Операционная система. ClickHouse разработан для семейства операционных систем Linux, рекомендуемый дистрибутив — Ubuntu. В системе должен быть установлен пакет tzdata. Установка на Windows также возможна, но это разговор для отдельной статьи.
Выбор сервера будем производить на уже знакомом нам хостинг-провайдере Timeweb, так как он себя зарекомендовал как оптимальный по соотношению цена/качество.
Переходим на страницу https://timeweb.cloud/ и регистрируемся. Далее на странице Облачные серверы переходим к выбору необходимой конфигурации сервера.
В первую очередь, нам необходима операционная система Ubuntu, версию можно оставить по умолчанию 22.04. В разделе Регион лучше выбрать Санкт-Петербург, так как это единственный регион, в котором доступна конфигурация Standart.
В конфигурации одним из основных параметров является RAM. Не желательно выбирать ее меньше 4 Гб. В параметрах CPU достаточно будет выбрать 2х2,8 ГГц. Объем SSD зависит полностью от количества данных, которые вы собираетесь хранить на сервере. Для примера выберем SSD 50 Гб.
Из других настроек нам только понадобится публичный IP, так мы будем подключаться к нашему серверу с помощью удаленного сетевого подключения.
В итоге получилась следующая конфигурация и стоимость:
Заказываем сервер и ожидаем его создание.
Время ожидания должно быть не более 5 минут. Вы поймете, что сервер готов к работе когда его статус под названием станет В сети.
Чтобы удостовериться, что сервер запущен можно перейти на вкладку Консоль, где нас будет приветствовать черный экран с окном логина.
Подробные пояснения по настройке VPS можно найти в статье по ссылке, для ClickHouse сервера этого будет достаточно.
Установка терминала
Для удобного управления нашим VPS мы воспользуемся сторонним терминалом, который мы можем установить на любой имеющийся у нас компьютер. Этим терминалом будет tabby.
Перейдем на сайт tabby.sh и скачаем терминал с помощью кнопки Download в правом верхнем углу страницы.
Нас перекинет на страницу репозитария программы на GitHub.
Тут можно найти установочные файлы для любой ОС. В нашем случае будет использоваться ОС Windows, поэтому проматываем страницу в самый низ и выбираем .exe файлtabby-1.0.215-setup-x64.exe. Скачиваем и устанавливаем его на свой компьютер.
Во время первого запуска программы у вас высветится терминал, относящийся к вашему компьютеру.
Теперь нам необходимо настроить новый профиль для подключения к VPS. Нажимаем на значок сверху, похожий на окно программы под названием Profiles & connections. Здесь и в будущем в некоторых местах терминала управление возможно только с клавиатуры. Выбираем в меню Manage profiles.
Мы попадаем на страницу выбора профиля/подключения. На вкладке Profiles находим кнопку New, нажимаем на нее и выпадающем меню выбираем New Profile и далее SSH Connetion.
Теперь мы в настройках профиля.
В качестве имени указываем любое. В Host копируем значение IP-адреса нашего сервера Timeweb из вкладки Дашборд из строки IPv4:
Username оставляем по умолчанию root. Далее нажимаем на кнопку Set pasword и вставляем в открывшееся окно скопированный пароль с вкладки Дашборд, из строки Root-пароль (см. скрин выше). И в конце нажимаем Save.
Теперь, чтобы подключиться к нашему серверу, будет достаточно на стартовом экране терминала нажать значок похожий на окно программы и выбрать наш созданный профиль. В моем случае я назвал его ClickHouse TimeWeb.
При первом подключении может высветиться предупреждение безопасности, просто примите его. Все, мы попали на наш сервер.
Теперь пора перейти к непосредственной установке ClickHouse на VPS.
Установка ClickHouse
В первую очередь запустим обновление пакетов операционной системы на сервере командой:
sudo apt update && sudo apt upgrade -y
Далее необходимо добавить на наш VPS официальный репозиторий ClickHouse. Для этого в консоли вводим следующее:
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg curl -fsSL 'https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key' | sudo gpg --dearmor -o /usr/share/keyrings/clickhouse-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/clickhouse-keyring.gpg] https://packages.clickhouse.com/deb stable main" | sudo tee \ /etc/apt/sources.list.d/clickhouse.list sudo apt-get update
Скачивание дистрибутива займет немного времени.
Далее вводим команду для установки ClickHouse на VPS:
sudo apt-get install -y clickhouse-server clickhouse-client
Через некоторое время ClickHouse будет установлен.
После установки у Вас попросят ввести пароль для стандартного пользователя, обязательно введите его и запомните (Внимание! Пароль при введении не будет отображаться! Это не ошибка, так задумано. Поэтому вводите очень внимательно!).
Следующим этапом необходимо настроить ClickHouse для возможности доступа с других компьютеров.
Настройка ClickHouse
Запустим ClickHouse на VPS командой:
sudo service clickhouse-server start clickhouse-client # or "clickhouse-client --password" if you've set up a password
Этой командой мы запустим сервер и зайдем на него, при этом измениться строка ввода команд:
Далее нам необходимо отредактировать файл конфигурации установленного ClickHouse для возможности подключения к нему из любой точки земного шара. Для этого в терминале tabby в правом верхнем углу находим значок папки с названием SFTP и нажимаем на него.
Так нам откроются все директории на сервере. Нам необходимо перейти по пути etc/clickhouse-server.
Из файлов нам здесь понадобится config.xml. Просто так его отредактировать не получится, поэтому нажимаем на нем правой клавишей мыши и в выпадающем меню выбираем Copy full path.
Далее возвращаемся в терминал. Если Вы не выходили с сервера ClickHouse, то это необходимо сделать для редактирования файла config.xml. Делается это простой командой exit.
После выхода пишем в командной строке nano и вставляем скопированный путь правой клавишей мыши.
И нажимаем Enter. Нас перенесет в редактор .xml файлов.
В данном файле нам необходимо найти строчки со словами listen_host. Это можно сделать с помощью стрелочек или воспользовавшись сочетанием клавиш Ctrl+W. В появившейся строке поиска пишем нужное сочетание букв и нажимаем Enter. Нас перенесет к нужной строке.
Обратите внимание, что в файле довольно много listen_host, но нам он нужен именно тот, который идет после строчки Listen specified address. Здесь нам необходимо просто раскомментировать нужную строку, чтобы она стала бирюзовой.
Теперь для выхода из файла нажимаем Ctrl+X и для принятия изменений вводим Y. Настройка доступа закончена.
Пример использования ClickHouse
Теперь попробуем выгрузить в ClickHouse данные, например, отчеты из Яндекс Директа. Для этого, в первую очередь, необходимо создать базу данных на сервере.
Заходим в ClickHouse с помощью команды clickhouse-client. Далее вводим команду:
CREATE DATABASE data1
, где вместо data1 можете подставить свое название.
И нажимаем Enter. Должно появиться сообщении о выполнении команды.
Для автоматической выгрузки отчетов и загрузки их на сервер можно воспользоваться подключением через API Яндекс Директа. Данный способ подробно описан в онлайн-документации, которую мы разработали совместно с Яковом Осипенковым для наших пользователей.
Изменения затронут только параметры подключения к ClickHouse:
# Параметры подключения host = 'your_clickhouse_host', port = 9000, user = 'your_clickhouse_user', password = 'your_clickhouse_password', verify=True, settings={'use_numpy': True})
Так будут выглядеть данные после загрузки:
После этого вы можете выполнять любые визуализации данных ваших рекламных кампаний (даже из нескольких кабинетов Яндекс Директа!) в Yandex DataLens, используя готовое подключение к вашей базе ClickHouse.