Установка и первоначальная настройка СУБД ClickHouse на Debian Linux

Итак, если коротко, то ClickHouse — это высокопроизводительная аналитическая СУБД с открытым исходным кодом от компании Яндекс.

ClickHouse очень быстро отвечает на аналитические запросы по обновляемым в реальном времени данным, поэтому её можно использовать в интерактивных приложениях. Система способна масштабироваться до десятков триллионов записей и петабайтов данных. Использование ClickHouse открывает возможности, которые раньше было трудно даже представить: вы можете сохранять весь поток данных без предварительной агрегации и быстро получать отчёты в любых разрезах.

Давайте установим СУБД ClickHouse на Debian Linux.

Для начала немного полезных ссылок на официальные источники и полезные статьи в Интернет.

Официальный сайт ClickHouse
Официальный блог
Вся документация на одной странице, по разделам.
Видео-презентация «ClickHouse: как сделать самую быструю распределённую аналитическую СУБД» (Виктор Тарнавский)
Статья на Habrahabr: «ClickHouse: очень быстро и очень удобно» (Виктор Тарнавский)
Статья на Habrahabr: «Как запустить ClickHouse своими силами и выиграть джекпот» (Компания СМИ2)
Статья на Habrahabr: «Масштабирование ClickHouse, управление миграциями и отправка запросов из PHP в кластер» (Компания СМИ2)

Установка на Debian 8.9

Исходные данные: Debian 8.9 Jessie (amd64)

Системные требования ClickHouse: Linux, x86_64 с поддержкой SSE 4.2.

Поэтому проверим эти требования:

uname -sm

Результат:
Linux x86_64
Отлично.

И поддержка SSE 4.2:

grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

Результат:
SSE 4.2 supported
Отлично, продолжаем.

Добавление репозитария:

apt-key adv --keyserver keyserver.ubuntu.com --recv E0C56BD4
echo "deb http://repo.yandex.ru/clickhouse/trusty stable main" | tee /etc/apt/sources.list.d/clickhouse.list
apt-get update

Установка:

apt-get install -y clickhouse-server-common clickhouse-client

После установки запустить ClickHouse (v1.1.54292) не получиться, в логах /var/log/clickhouse-server/clickhouse-server.err.log можно будет увидеть ошибку:

 
2017.10.05 23:30:37.722243 [ 1 ] <Warning> ConfigProcessor: Include not found: networks
2017.10.05 23:30:37.722266 [ 1 ] <Warning> ConfigProcessor: Include not found: networks
2017.10.05 23:30:37.755115 [ 1 ] <Error> Application: Net Exception: Cannot assign requested address: [::1]:8123

Поэтому нам нужно будет открыть файлы конфигурации и исправить проблему.

Для настройки открываем файл:

vi /etc/clickhouse-server/config.xml

Комментируем строку:

<listen_host>::1</listen_host>

Для комментария используется конструкция

<!-- XXXXX -->

То есть наша строка превратилась в

<!-- <listen_host>::1</listen_host> -->

Теперь можно запустить ClickHouse:

service clickhouse-server start

И проверяем открытые порты:

netstat -ltupn|grep clickhouse
tcp        0      0 127.0.0.1:9009          0.0.0.0:*               LISTEN      12280/clickhouse-se
tcp        0      0 127.0.0.1:8123          0.0.0.0:*               LISTEN      12280/clickhouse-se
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      12280/clickhouse-se

Отлично, идем дальше.

По-умолчанию к ClickHouse может подключиться любой пользователь с localhost, т.к. пароль не установлен, исправим это.

vi /etc/clickhouse-server/users.xml

Установим ограничение на память при запросах в 20 Mb

<max_memory_usage>21474836480</max_memory_usage>

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

Устанавливаем пароль для соединения с СlickHouse:
Разработчики позаботились о том чтобы не хранить пароль в открытом виде в файле конфигурации, а хранить только его хэш, создадим его:

echo -n "MYPASSWORD" | sha256sum | tr -d '-'

И запишем пароль в файл /etc/clickhouse-server/users.xml

<!-- <password></password> -->
<password_sha256_hex>2b61e9c9f23b6ab34031f3beb5d5f8f8da5c59c310d34c1efb83962049b42e1c</password_sha256_hex>

И ограничим доступ по IP адресу только с localhost, для этого в секции

<networks incl="networks" replace="replace">

заменим строку

<ip>::/0</ip>

на

<ip>127.0.0.1</ip>

Итого

<networks incl="networks" replace="replace">
	<ip>127.0.0.1</ip>
</networks>

Устанавливаем пароль для подключения в режиме readonly и ограничиваем доступ по IP адресу только с localhost, итоговый вид секции:

        <readonly>
            <password_sha256_hex>4d1f6fc10339d9efbea9079befc497b948c5ffe8c2d1e1522195fc66e7f42e1d</password_sha256_hex>
            <networks incl="networks" replace="replace">
                <ip>127.0.0.1</ip>
            </networks>
            <profile>readonly</profile>
            <quota>default</quota>
        </readonly>

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

Установим права на файл с настройками доступов:

chmod 640 /etc/clickhouse-server/users.xml

Настраиваем SSL:

openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt
openssl dhparam -out /etc/clickhouse-server/dhparam.pem 2048
chmod 640 /etc/clickhouse-server/{dhparam.pem,server.key,server.crt}
chown clickhouse:clickhouse /etc/clickhouse-server/{dhparam.pem,server.key,server.crt}

Сертификат мы создали, для того чтобы использовать безопасное соединение нужно в файле /etc/clickhouse-server/config.xml раскомментировать строку

<https_port>8443</https_port>

Перезапускаем СlickHouse:

service clickhouse-server restart

Проверяем

service clickhouse-server status

И проверяем открытые порты:

netstat -ltupn|grep clickhouse
tcp        0      0 127.0.0.1:9009          0.0.0.0:*               LISTEN      14832/clickhouse-se
tcp        0      0 127.0.0.1:8443          0.0.0.0:*               LISTEN      14832/clickhouse-se
tcp        0      0 127.0.0.1:8123          0.0.0.0:*               LISTEN      14832/clickhouse-se
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      14832/clickhouse-se

Все отлично, подключаемся консольным клиентом:

clickhouse-client -u default --password MYPASSWORD -m

Если Вы не устанавливали пароль, то так:

clickhouse-client -m

В следующей статье мы попробуем создать тестовую БД, наполнить её данными, рассмотрим вопросы бэкапа базы и восстановления, подключим GUI clickhouse-frontend.


Хотите оставить комментарий?