Установка 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
Здесь загружаем датасет New York Taxi Data в соответствии с инструкциями на сайте. Для проверки успешности загрузки выполняем запрос:
SELECT count() FROM nyc_taxi.trips_small WHERE payment_type = 1;
Для проверки производительности, в соответствии с рекомендацией со слайдов презентации соответствующего занятия, используем другой тестовый датасет 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.
Исследуем конфигурацию сервера 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 │ 7248889036 │ 0 │
2. │ max_server_memory_usage_to_ram_ratio │ 0.9 │ 0.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 │ 2013580288 │ 0 │
2. │ max_server_memory_usage_to_ram_ratio │ 0.25 │ 0.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 может успешно работать и при ограниченных ресурсах.