Раздел 38 · ClickHouse и аналитические базы

Установка и clickhouse-client

junior~15 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

В прошлом уроке мы узнали, что такое ClickHouse и зачем он «Гонцу». Пора его запустить. В этом уроке поднимем сервер у себя на машине, подключимся к нему двумя способами и выполним первые запросы.

Сервер и клиент

ClickHouse, как и PostgreSQL, состоит из двух частей. Сервер хранит данные и выполняет запросы. Клиент подключается к серверу, отправляет запрос и печатает ответ. Сервер один, клиентов сколько угодно: аналитик в терминале, дашборд, сервис «Гонца», который пишет события.

Сервер слушает два основных порта:

  • 9000 для родного протокола ClickHouse. Через него работает clickhouse-client и библиотеки для Go, Python, Java.
  • 8123 для HTTP. Запрос можно отправить хоть из браузера, хоть curl, а ответ придёт текстом.

Запускаем в Docker

Самый быстрый способ получить ClickHouse это Docker. Официальный образ называется clickhouse/clickhouse-server:

docker run -d --name clickhouse \
  -p 8123:8123 -p 9000:9000 \
  -e CLICKHOUSE_PASSWORD=secret \
  --ulimit nofile=262144:262144 \
  clickhouse/clickhouse-server:26.9

Разберём флаги:

  • -d запускает контейнер в фоне, --name clickhouse даёт ему имя.
  • -p 8123:8123 -p 9000:9000 открывает оба порта на твоей машине.
  • -e CLICKHOUSE_PASSWORD=secret задаёт пароль пользователю default. Без пароля образ запретит этому пользователю подключаться по сети и напишет в лог disabling network access for user 'default'. Пароль secret годится только для учебной машины.
  • --ulimit nofile=262144:262144 разрешает серверу держать много открытых файлов: каждая колонка таблицы лежит в своём файле, и файлов бывает очень много.
  • 26.9 это версия. В уроках раздела всё сверено с ней.

Данные контейнер хранит внутри себя и потеряет их при удалении. Чтобы данные пережили контейнер, добавь -v clickhouse-data:/var/lib/clickhouse.

урок из курса

Урок из курса «ClickHouse и аналитические базы». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.