Установка ClickHouse на CentOS7
Проверка возможности использования ClickHouse в системе:
# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
Команда должна выдать «SSE 4.2 supported»
Подключение официального репозитария ClickHouse от Яндекс
# yum install yum-utils
# rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
# yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64
Установка серверной и клиентской части ClickHouse:
# yum install clickhouse-server clickhouse-client
Запуск сервера и добавление его в автозагрузку:
# systemctl start clickhouse-server
# systemctl enable clickhouse-server
После запуска сервера, соединяемся с ним так:
# clickhouse-client
или
# clickhouse-client -h IP-адрес
По умолчанию клиент clickhouse-client соединяется с localhost:9000, от имени пользователя default без пароля. Также клиент может быть использован для соединения с удалённым сервером с помощью аргумента --host.
Проверка работы сервера командой SELECT:
:) SELECT 1
SELECT 1
┌─1─┐
│ 1 │
└───┘
1 rows in set. Elapsed: 0.004 sec.
Выход из командной строки - CTRL+D
Конфигурационный файл сервера /etc/clickhouse-server/config.xml
Директивы
<listen_host>::1</listen_host>
<listen_host>127.0.0.1</listen_host>
Определяют, на каком IP будет работать сервер.
Логи в директории /var/log/clickhouse-server/
Кроме порта 9000, сервер слушает HTTP запросы на порт 8123.
Запрос GET без параметров вернет ОК
# curl 'http://localhost:8123/'
Ok.
Передавать команды в ClickHouse из внешних скриптов можно так:
echo 'SELECT 1' | curl 'http://localhost:8123/?' --data-binary @-
Для просмотра всех таблиц на сервере Clickhouse с их размера в Гб, используйте этот запрос:
SELECT table, round(sum(bytes) / 1024/1024/1024, 2) as size_gb \
FROM system.parts \
WHERE active \
GROUP BY table \
ORDER BY size_gb DESC
Файлы базы данных ClickHouse размещены в каталоге
/var/lib/clickhouse/data
Просмотр размера папок на диске в базе ClickHouse
# du -shc /var/lib/clickhouse/data/*
Создание базы данных
:) CREATE DATABASE IF NOT EXISTS ИмяБазы
Пример создания таблицы elismetrics в базе elisdb:
:) CREATE TABLE IF NOT EXISTS elisdb.elismetrics \
(\
ne String,\
ts UInt64,\
d Date MATERIALIZED toDate(ts),\
dt DateTime MATERIALIZED toDateTime(ts),\
metric Array(String),\
value Array(Float64)\
) ENGINE = MergeTree(d,ne,8192)
Пример создания таблицы elismetrics в базе elisdb с партициями по месяцам:
CREATE TABLE IF NOT EXISTS elisdb.elismetrics \
(\
ne String,\
ts UInt64,\
d Date MATERIALIZED toDate(ts),\
dt DateTime MATERIALIZED toDateTime(ts),\
metric Array(String),\
value Array(Float64)\
) ENGINE = MergeTree()\
PARTITION BY toYYYYMM(d) ORDER BY (d,ne) SETTINGS index_granularity = 8192
Пример удаления таблицы:
DROP TABLE База.Таблица
Выборка из таблицы:
SELECT * FROM База.Таблица
Список активных партиций просмотреть можно так:
SELECT partition, name, table FROM system.parts WHERE active
Удаление партиции:
ALTER TABLE ИмяТаблицы DROP PARTITION ИмяПартиции
Например: ALTER TABLE elisdb.elismetrics DROP PARTITION 20200201