Облачная платформаEvolution

Загрузка и анализ данных из Object Storage в Managed ClickHouse®

Эта статья полезна?

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

Вы развернете виртуальную машину Ubuntu 24.04, настроите сети и группу безопасности, создадите кластер Managed ClickHouse® и настроите nginx для проксирования подключения к базе данных с локальной машины через DBeaver.

Вы будете использовать следующие сервисы:

  • «Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.

  • «Публичные IP» — сервис для организации доступа к базе данных через интернет.

  • Managed ClickHouse — сервис для развертывания и управления кластерами ClickHouse®.

  • VPC — изолированная виртуальная сеть для создания безопасной инфраструктуры.

  • Object Storage — объектное S3-хранилище с бесплатным хранением файлов объемом до 15 ГБ.

  • Nginx — веб-сервер для проксирования запросов и организации защищенного HTTPS-доступа к приложению.

  • DBeaver — универсальный клиент баз данных для управления и администрирования SQL и NoSQL СУБД.

Шаги:

Перед началом работы

  1. Если вы уже зарегистрированы, войдите под своей учетной записью.

  2. Установите DBeaver.

1. Разверните ресурсы в облаке

  1. Создайте виртуальную сеть с названием web-analytics-VPC.

  2. Создайте подсеть со следующими параметрами:

    • Названиеweb-analytics-subnet.

    • Адрес10.10.1.0/24.

    • VPCweb-analytics-VPC.

    • DNS-серверы8.8.8.8.

  3. Создайте новую группу безопасности со следующими параметрами:

    • Зона доступности — укажите ту же зону доступности, что выбрана для подсети.

    • Названиеweb-analytics-sg.

    • Добавьте правила входящего и исходящего трафика:

      Трафик

      Протокол

      Порт

      Тип источника/адресата

      Источник/Адресат

      Входящий

      TCP

      9000

      IP-адрес

      0.0.0.0/0

      Входящий

      TCP

      8123

      IP-адрес

      0.0.0.0/0

      Входящий

      TCP

      22

      IP-адрес

      0.0.0.0/0

      Исходящий

      Любой

      IP-адрес

      0.0.0.0/0

  4. Создайте виртуальную машину со следующими параметрами:

    • Названиеweb-analytics-vm.

    • Зона доступности — укажите ту же зону доступности, что выбрана для подсети.

    • Образ — на вкладке Публичные выберите образ Ubuntu 24.04.

    • Сетевой интерфейс — выберите тип Подсеть с публичным IP.

    • VPCweb-analytics-VPC.

    • Подсетьweb-analytics-subnet.

    • Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.

    • Группы безопасностиweb-analytics-sg и группа безопасности по умолчанию.

    • Логин — оставьте значение по умолчанию или укажите новый.

    • Метод аутентификацииПубличный ключ и Пароль.

    • Пароль — задайте пароль пользователя.

    • Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.

  5. Создайте кластер Managed ClickHouse® со следующими параметрами:

    • Название кластераweb-analytics.

    • ТипSingle-node.

    • Зона доступности — укажите ту же зону доступности, что выбрана для подсети.

    • Подсетьweb-analytics-subnet.

  6. Убедитесь, что ресурсы созданы и отображаются в личном кабинете:

    1. На странице сервиса VPC:

      • отображается сеть web-analytics-VPC;

      • в списке подсетей отображается web-analytics-subnet.

    2. На странице сервиса «Группы безопасности» отображается группа безопасности web-analytics-sg со статусом «Создана».

    3. На странице сервиса «Виртуальные машины» отображается виртуальная машина web-analytics-vm со статусом «Запущена».

    4. На странице сервиса Managed ClickHouse® отображается кластер web-analytics со статусом «Доступен».

2. Загрузите данные в хранилище

  1. Создайте бакет в Object Storage с названием web-analytics-bucket.

  2. Создайте файл event.csv с тестовыми данными:

    event_date,user_id,event_type,product_id,revenue
    2024-03-20,1001,view,AB123,0
    2024-03-20,1001,purchase,AB123,29.99
    2024-03-20,1002,view,CD456,0
    2024-03-21,1001,view,CD456,0
    2024-03-21,1003,purchase,EF789,49.99
    2024-03-22,1002,purchase,AB123,29.99

3. Настройте nginx для проксирования запросов к базе данных

На этом шаге вы настроите систему и nginx-сервер для подключения к базе данных.

  1. Обновите систему:

    sudo apt update && sudo apt upgrade -y
  2. Установите nginx и clickhouse-client:

    sudo apt install -y nginx-full clickhouse-client
  3. Откройте файл конфигурации для подключения stream-блока:

    sudo nano /etc/nginx/nginx.conf
  4. Добавьте блок перед блоком http:

    stream {
    # Native ClickHouse (TCP)
    upstream ch_native {
    server <db_private_ip>:9000;
    }
    server {
    listen 9000; proxy_pass ch_native;
    }
    # HTTP ClickHouse (для DBeaver / JDBC / BI))
    upstream ch_http {
    server <db_private_ip>:8123;
    }
    server {
    listen 8123; proxy_pass ch_http;
    }
    }

    Где <db_private_ip> — внутренний IP-адрес со страницы информации о кластере из блока Данные для подключения.

  5. Примените конфигурацию:

    sudo nginx -t
    sudo systemctl restart nginx

4. Подключитесь к кластеру Managed ClickHouse® из DBeaver

  1. Создайте пользователя с именем analytics-user и ролью cloud_admin.

  2. Создайте базу данных с названием analytics.

  3. Откройте DBeaver и в панели сверху нажмите Новое соединение.

  4. В списке соединений выберите ClickHouse.

  5. Нажмите Далее и заполните поля на вкладке Главное:

    • Хост — публичный IP виртуальной машины web-analytics-vm.

    • Порт8123.

    • Пользовательanalytics-user.

    • БД/Схемаanalytics.

    • Пароль — пароль, заданный при создании пользователя analytics-user.

    ../_images/dbeaver__connection-settings.webp
  6. Нажмите Тест соединения.

  7. Нажмите Готово.

5. Загрузите данные в DBeaver и выполните запросы

  1. Создайте таблицу events в базе analytics:

    CREATE TABLE analytics.events
    (
    event_date Date,
    user_id UInt32,
    event_type String,
    product_id String,
    revenue Float32
    )
    ENGINE = MergeTree
    ORDER BY (event_date, user_id);
  2. Загрузите данные из файла event.csv, который был добавлен в хранилище на втором шаге:

    INSERT INTO analytics.events
    SELECT
    event_date,
    user_id,
    event_type,
    product_id,
    revenue
    FROM url(
    '<s3_link>',
    'CSVWithNames'
    );
  3. Проверьте количество загруженных строк:

    SELECT count() FROM analytics.events;
  4. Постройте отчет по ежедневной активности и конверсии:

    SELECT
    event_date,
    uniq(user_id) as daily_active_users,
    countIf(event_type = 'purchase') as purchases,
    sumIf(revenue, event_type = 'purchase') as daily_revenue,
    (purchases / daily_active_users) * 100 as conversion_rate_percent
    FROM analytics.events
    GROUP BY event_date
    ORDER BY event_date;

6. Удалите доступ по SSH для виртуальной машины

Для повышения безопасности удалите доступ по SSH для вашей виртуальной машины, так как он больше не требуется.

  1. В личном кабинете перейдите в сервис «Виртуальные машины» и выберите машину web-analytics-vm, созданную на первом шаге.

  2. Перейдите на вкладку Сетевые параметры.

  3. Нажмите Изменить группы безопасности и удалите группу SSH-access_ru.

  4. Нажмите Сохранить.

  5. Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH.

Результат

Вы загрузили сырые данные из Object Storage в кластер Managed ClickHouse® и с помощью DBeaver выполнили аналитические запросы. Далее вы можете подключить инструменты визуализации для построения дашбордов, оптимизировать структуру таблиц и мониторить нагрузку кластера.