Установка ClickHouse - rklepov/OTUS-ClickHouse-2025-03 GitHub Wiki

Я работаю локально через VirtualBox на Linux CentOS 9 (4 CPU, 8GB RAM).

1. Установка ClickHouse через Docker (Podman)

Загружаем образ контейнера c сервером ClickHouse с Docker Hub, запускаем контейнер, подключаемся к серверу, работающему внутри контейнера.

docker run -d --name my-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server

docker ps

docker exec -it my-clickhouse-server clickhouse-client

Install ClickHouse from docker image

2. Загрузка тестового датасета

Здесь загружаем датасет New York Taxi Data в соответствии с инструкциями на сайте. Для проверки успешности загрузки выполняем запрос:

SELECT count() FROM nyc_taxi.trips_small WHERE payment_type = 1;

Load New York Taxi Data test dataset

3. Проверка производительности

Для проверки производительности, в соответствии с рекомендацией со слайдов презентации соответствующего занятия, используем другой тестовый датасет Cell Tower и следующий запрос:

echo "SELECT * FROM default.cell_towers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark -i 10

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

localhost:9000, queries: 10, QPS: 0.356, RPS: 7123441.355, MiB/s: 329.432, result RPS: 3559397.103, result MiB/s: 164.051.

0%              1.895 sec.
10%             2.104 sec.
20%             2.186 sec.
30%             2.247 sec.
40%             2.304 sec.
50%             2.505 sec.
60%             2.505 sec.
70%             3.390 sec.
80%             3.603 sec.
90%             3.834 sec.
95%             3.875 sec.
99%             3.875 sec.
99.9%           3.875 sec.
99.99%          3.875 sec.

4. Конфигурация

Исследуем конфигурацию сервера ClickHouse.

Настройки по умолчанию

Результаты проверки производительности выше были получены с настройками сервера по умолчанию.

Попробуем менять два конкретных параметра: настройка сервера max_server_memory_usage_to_ram_ratio и настройка сессии max_threads. По умолчанию они установлены следующим образом:

SELECT
    name,
    value,
    default
FROM system.server_settings
WHERE name LIKE 'max_server%'

   ┌─name─────────────────────────────────┬─value──────┬─default─┐
1. │ max_server_memory_usage              │ 724888903602. │ max_server_memory_usage_to_ram_ratio │ 0.90.9     │
   └──────────────────────────────────────┴────────────┴─────────┘


SELECT
    name,
    value,
    default
FROM system.settings
WHERE name LIKE 'max_threads'

   ┌─name────────┬─value─────┬─default───┐
1. │ max_threads │ 'auto(4)''auto(4)' │
   └─────────────┴───────────┴───────────┘

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

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

Изменение настроек будем проводить через дополнительные конфигурационные файлы:

root@3329e3f61ff3:~# cat /etc/clickhouse-server/config.d/extra.xml

<clickhouse>
    <max_server_memory_usage_to_ram_ratio>0.25</max_server_memory_usage_to_ram_ratio>
</clickhouse>
root@3329e3f61ff3:~# cat /etc/clickhouse-server/users.d/default-profile-extra.xml

<clickhouse>
    <profiles>
        <default>
            <max_threads>1</max_threads>
        </default>
    </profiles>
</clickhouse>

Проверяем, что настройки действительно изменились (изменение параметра max_server_memory_usage_to_ram_ratio потребовало перезапуска сервера, хотя и утверждается, что изменение этого параметра не требует рестарта):

SELECT
    name,
    value,
    default
FROM system.server_settings
WHERE name LIKE 'max_server%'

Query id: ddd1530f-fca5-40cd-890e-fd968cd83b53

   ┌─name─────────────────────────────────┬─value──────┬─default─┐
1. │ max_server_memory_usage              │ 201358028802. │ max_server_memory_usage_to_ram_ratio │ 0.250.9     │
   └──────────────────────────────────────┴────────────┴─────────┘

SELECT
    name,
    value,
    default
FROM system.settings
WHERE name LIKE 'max_threads'

   ┌─name────────┬─value─┬─default───┐
1. │ max_threads │ 1'auto(4)' │
   └─────────────┴───────┴───────────┘

Тестирование с изменёнными настройками

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

echo "SELECT * FROM default.cell_towers LIMIT 10000000 OFFSET 10000000" | clickhouse-benchmark -i 10
localhost:9000, queries: 10, QPS: 0.340, RPS: 6813485.642, MiB/s: 315.971, result RPS: 3403127.338, result MiB/s: 156.944.

0%              1.970 sec.
10%             2.025 sec.
20%             2.056 sec.
30%             2.289 sec.
40%             2.563 sec.
50%             2.869 sec.
60%             2.869 sec.
70%             3.467 sec.
80%             3.792 sec.
90%             4.101 sec.
95%             4.120 sec.
99%             4.120 sec.
99.9%           4.120 sec.
99.99%          4.120 sec.

Вывод

Ожидаемо все показатели (QPS, RPS и др. ) понизились. Вместе с тем, уменьшение незначительное: параметры были уменьшены в 4 раза, а показатели производительности уменьшились на единицы процентов. На поверхности можно сделать вывод, что ClickHouse может успешно работать и при ограниченных ресурсах.

⚠️ **GitHub.com Fallback** ⚠️