Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Как установить и использовать ClickHouse на Ubuntu

1568
11 минут чтения
Средний рейтинг статьи: 5

Для хранения различных типов данных широко используются базы данных. Базы данных бывают разных типов: реляционные, объектные, объектно-ориентированные, сетевые, функциональные. Однако существует еще один тип баз данных — колоночные. В колоночных базах данных данные хранятся и обрабатываются не по строкам, а по столбцам. Благодаря этой особенности данные быстро обрабатываются и масштабируются. Высокопроизводительная обработка запросов в ClickHouse делает ее идеальным выбором для работы с большими объемами и оперативной аналитикой данных.

Одной из самых известных и популярных колоночных баз данных является ClickHouse — бесплатная СУБД с открытым исходным кодом, первоначально разработанная компанией Яндекс. Впоследствии разработка перешла под контроль другой компании — ClickHouse, Inc. Благодаря высокой скорости обработки данных, ClickHouse хорошо зарекомендовала себя при работе с большими и аналитическими данными. Ознакомиться с архитектурой ClickHouse более подробно можно в документации.

В данной статье мы произведем установку СУБД ClickHouse на операционную систему Ubuntu 22.04, а также рассмотрим несколько практических примеров использования.

Предварительные требования

Для установки ClickHouse на операционную систему Ubuntu 22.04 нам понадобится:

  • Сервер или виртуальная машина с предустановленной ОС Ubuntu 22.04.

Регистрация в Timeweb Cloud

Чтобы арендовать облачный или выделенный сервер в Timeweb Cloud, необходимо пройти регистрацию. 

Переходим по ссылке для регистрации нового пользователя. Мы выберем регистрацию на физическое лицо и заполним следующие данные:

  • ФИО,

  • адрес электронной почты,

  • номер телефона.

После регистрации на указанный адрес почты придет сообщение с ссылкой для активации аккаунта и входа в панель — перейдите по ней.

Создание облачного сервера

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

1) Переходим на страницу авторизации и входим в аккаунт при помощи логина или адреса электронной почты и пароля или при помощи ВКонтакте, GitHub, Google.

2) После успешной авторизации отобразится панель управления текущего проекта. Переходим в раздел «Облачные серверы» и нажимаем «Создать» или «Добавить».

3) Выбираем операционную систему, которая будет установлена на сервер. В нашем случае нам необходима Ubuntu версии 22.04.

4) Выбираем регион, в котором будет находиться наш сервер. Выбирать рекомендуется тот регион, который ближе всего находится к вам физически. У каждого доступного региона справа вверху отображается ping, т.е. время, необходимое для передачи данных с вашего компьютера на сервер. Чем меньше указанное время, тем быстрее будет осуществляться передача данных.

Image14

5) Далее выбираем необходимую конфигурацию для сервера. 

Так как в данной статье упор делается только на установке и на демонстрации возможностей СУБД, то выберем минимально поддерживаемую конфигурацию ClickHouse — 2 ГБ оперативной памяти, двухъядерный процессор и 40 ГБ места на жестком диске. В реальности вам необходимо выбирать именно ту конфигурацию, которая будет удовлетворять вашим потребностям при работе с ClickHouse.

Стоит отметить что для оптимальной работы с ClickHouse желательно выбирать минимум 4 ГБ оперативной памяти для выполнения нетривиальных запросов, а также выбирать оптимальное количество ядер процессора (чем больше ядер, тем лучше, но необходим минимум двухядерный процессор) и минимум 2 ГБ свободного места на жестком диске. Если не соблюдать системные требования, то запустить ClickHouse не получится, и в лог-файлах будут отображаться ошибки типа Linux threads max count is too low, Available memory at server startup is too low, Maximum number of threads is lower than 30000. Выбираем соответствующий тариф.

6) Далее необходимо решить, будет ли сервер доступен из внешний сети или же только из приватной (частной) сети. 

7) По желанию можно оформить дополнительные услуги, включая резервные копии и защиту от DDoS–атак (последняя доступна в Санкт–Петербурге и Москве).

8) Также заранее можно загрузить SSH–ключ, чтобы не входить на север при помощи пароля.

9) Можно задать необходимое имя для сервера которое будет отображаться в панели управления, а также выбрать проект.

10) Для создания сервера необходимо нажать на кнопку «Заказать».

Если на вашем аккаунте недостаточно средств, то будет выведено предупреждение о необходимости пополнить баланс. После оплаты и создания сервера откроется Дашборд сервера, где можно будет найти IP–адрес, логин и пароль для подключения.

Предварительная настройка сервера

Все команды, которые будут перечислены далее в статье, необходимо выполнять от имени root-пользователя или от имени обычного пользователя с правами sudo

Перед тем как приступать к установке ClickHouse, необходимо выполнить следующие требования:

1) При работе с ClickHouse в Production-окружениях необходимо выключить swap, если он используется. Сделать это можно двумя способами:

1.1) Отключить SWAP до последующей перезагрузки сервера при помощи команды:

    

1.2) Отключить SWAP перманентно (на постоянной основе). Для этого необходимо открыть на редактирование файл /etc/fstab при помощи любого текстового редактора и добавить перед строкой, содержащей слово swap, символ решетки #, чтобы получилось как на скриншоте ниже:

Image3

Сохраните изменения и выйдите из файла. 

2) Заранее установить пакет tzdata, если он отсутствует в системе. Для его установки необходимо выполнить команду:

    

Облачные серверы

Масштабируемые вычислительные ресурсы
по всему миру с почасовой оплатой.

Установка ClickHouse на Ubuntu 22.04

Для установки ClickHouse на Ubuntu 22.04 необходимо выполнить следующие шаги.

1) Устанавливаем необходимые пакеты:

    

2) Импортируем GPG-ключ от официального репозитория Ubuntu с целью возможности безопасной загрузки проверенных пакетов ClickHouse:

    

3) Создаем файл с официальным репозиторием ClickHouse:

    

4) Обновляем списки пакетов и устанавливаем серверный и клиентский пакеты clickhouse:

    

5) В процессе установки система предложит задать пароль для стандартного (дефолтного) пользователя:

Image5

После ввода пароля установщик сообщит, что пароль будет сохранен в  файле /etc/clickhouse-server/users.d/default-password.xml:

Image13

6) После того как установка будет завершена, необходимо запустить ClickHouse при помощи команды:

    

7) Для проверки статуса ClickHouse необходимо использовать команду:

    

Image2

Если в выводе команды отображается active (running), то Clickhouse успешно запущен и работает. 

На этом установка ClickHouse завершена.

Практические примеры использования ClickHouse

Рассмотрим использование ClickHouse на практике. Для начала необходимо подключиться к СУБД при помощи официальной клиентской программы, которая была установлена вместе с сервером:

    

Image15

Необходимо ввести пароль для дефолтного пользователя, который был задан на этапе установки ClickHouse. Если пароль был введен правильно, то появится приглашение к вводу и отобразится строка с текущим статусом подключения:

Image12

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

Стоит отметить, что в качестве языка запросов в ClickHouse используется язык SQL, который применяется в других СУБД, таких как MySQL и PostgreSQL. Для начала создадим новую базу данных с именем info. Для создания базы данных используется оператор CREATE DATABASE:

    

Image24

Точку с запятой в конце команды можно не указывать. После каждого успешного выполненного запроса, в консоли будет выводится уникальный номер выполненного запроса (Query id) а также сообщение Ok.

Убедимся, что ранее созданная база данных info присутствует в списке доступных баз данных. Для этого выведем список всех доступных баз данных при помощи команды SHOW DATABASES:

    

Image7

По умолчанию в ClickHouse присутствуют 4 системные базы данных: INFORMATION_SCHEMA, default, information_schema, system. Также на скриншоте выше мы можем обнаружить нашу созданную базу данных с именем info.

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

Создадим таблицу в базе данных info. Для этого сначала выберем данную базу данных в качестве последующих запросов по умолчанию, используя оператор USE (так система поймет, что все последующие операции будут применятся только к выбранной базе данных):

    

Image8

Создадим таблицу с именем orders, которая будет состоять из 4 столбцов: order_id, customer_name, customer_phone_number, customer_email:

    

Image11

Разберем пример по созданию таблицы более подробно.

  • CREATE TABLE — оператор для создания таблиц;
  • order_id UInt64 NOT NULL — столбец с именем order_id. Тип данных столбца — UInt64, который означает что для хранения данных используются 64–битные целые числа. NOT NULL означает, что столбец не поддерживает пустые значения;
  • customer_name String NOT NULL — столбец с именем customer_name. Тип данных столбца — String, который означает, что для хранения данных используется строка произвольной длины. При этом длина строки не ограничена. NOT NULL означает что столбец не поддерживает пустые значения;
  • customer_phone_number UInt32 — столбец с именем customer_phone_number. Тип данных столбца — UInt32, который означает, что для хранения данных используются 32–битные целые числа;
  • customer_email String — столбец с именем customer_email. Тип данных столбца — String. Длина строки не ограничена;
  • ENGINE = MergeTree() — указывается движок для хранения данных. В данном случае в качестве движка используется MergeTree. Он используется при работе с большим количеством данных, которые должны быть добавлены в таблицу, при этом их необходимо быстро записать. 
  • PRIMARY KEY order_id — столбец с именем order_id выступает в роли первичного ключа, при помощи которого можно однозначно идентифицировать каждую запись.
  • ORDER BY order_id — означает, что данные будут упорядочены по столбцу order_id

Добавление данных в таблицу

Теперь добавим в ранее созданную таблицу orders данные о покупателе. Для добавления данных используется оператор INSERT INTO:

    

Image19

Добавление нового столбца в таблицу

Таблицы можно модифицировать, например, чтобы добавить новый столбец. Добавим в ранее созданную таблицу orders новый столбец с именем customer_address и зададим ему тип данных String (строковый формат данных), используя оператор ALTER TABLE:

    

Выполнение запросов на выборку

Так же, как и в языке SQL, чтобы выбрать необходимые данные, используется оператор SELECT. Выполним несколько запросов на выборку данных. Для начала выполним обычный запрос на выборку, в котором выберем все данные из столбцов order_id и customer_name:

    

Image1

Теперь выполним запрос на выборку с использованием условий. Для этого используется оператор WHERE. Выберем все данные из столбцов order_id и customer_name, у которых в столбце customer_name используется значение Alex:

    

Image26

Обновление данных в таблице

Для того чтобы обновить данные в таблице, необходимо использовать операторы ALTER TABLE и UPDATE. Изменим имя покупателя с Alex на John в столбце customer_name таблицы orders при помощи следующего запроса: 

    

Image10

Удаление данных из таблицы

Для удаления данных из таблицы используются операторы ALTER TABLE и DELETE. Удалим имя покупателя из столбца customer_name таблицы orders:

    

Image16

Работа с несколькими таблицами. Оператор JOIN

Как и в языке SQL, ClickHouse поддерживает оператор JOIN для выборки данных из двух и более таблиц. Рассмотрим использование JOIN на конкретном примере. Создадим новую базу данных с именем users:

    

Image21

Выберем данную базу данных для дальнейшего использования:

    

Image18

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

    

Image25

    

Image23

Добавим данные в каждую таблицу:

    

Image22

    

Image20

Выполним INNER JOIN (внешнее соединение)? т.е. запрос на объединение двух таблиц, используя столбец.

    

Image17

Удаление объектов базы данных

Для удаления объектов используется оператор DROP, после которого указывается тип удаляемого объекта. Например, для удаления таблицы используется оператор DROP TABLE. Удалим ранее созданную таблицу orders:

    

Image4

Для того чтобы удалить базу данных, необходимо воспользоваться оператором DROP DATABASE:

    

Image6

Разверните ClickHouse на облачном сервере

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Заключение

ClickHouse представляет собой колоночную аналитическую СУБД, в которой данные хранятся в виде столбцов, в то время как в традиционных реляционных СУБД данные хранятся в виде строк. Благодаря данному преимуществу ClickHouse быстро обрабатывает большой массив данных.

1568
11 минут чтения
Средний рейтинг статьи: 5
Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server