Latest posts

rzv Data Engineering
22 Sept, 09:00edited
Объектное хранилище в эпоху быстрых данныхОбъём данных, с которыми нужно работать, растёт ежедневно. Стандартных решений уже не хватает для задач ИИ и аналитики. Большие объёмы данных нужно не только хранить, но и быстро записывать и читать.В MWS Cloud Platform мы построили объектное хранилище не только на привычных HDD-дисках, но и на NVMe. На вебинаре покажем, какие сценарии работы это открывает и как меняет привычные подходы.Подключайтесь! Обсудим: ✅ Чем классы хранения MWS Object Storage отличаются от привычных ✅ В каких сценариях новый тёплый класс проявляет себя лучше всего ✅ Преимущества и слабые места в разных сценариях работы📆 7 октября в 14:00 (мск)Зарегистрироваться


rzv Data Engineering
22 Sept, 07:48edited
Как равномерно размазывать данныеЧасто в командах, где я работал, проверяли равномерность распределения уже после вставки. А сам ключ распределения/шардирования выбирали скорее интуитивно.🔸 Будущее распределение можно посчитать, ничего не создавая и не перекладывая. Шард выбирается по остатку от деления значения ключа на число шардов, и этот остаток считается обычным SELECT. Удобно это проверить в ClickHouse через cityHash64().Представим что у нас есть табличка с продажами. Допустим, что у нас 5 шардов.SELECT cityHash64(order_id) % 5 AS target_shard, count() AS orders FROM orders GROUP BY target_shard ORDER BY target_shard;Если ключ заказов создаётся на источнике равномерно, мы скорее всего увидим 5 примерно одинаковых строк, с разницей до 10% (моя субъективная оценка равномерности).🔸 Допустим, типов заказа может быть 3. Тогда получим следующий запрос:SELECT


rzv Data Engineering
18 Sept, 10:05
#рекламаКак разобраться в технологии глубже, чем по документации и чужим бенчмаркам?Допустим, вы изучаете Lakehouse и хотите понять, в каких задачах такой подход оправдан по сравнению с классическим DWH. Интересно не только то, как настроить Trino и Iceberg, но и почему архитектура устроена именно так, что проверяли исследователи и насколько их выводы применимы к вашей нагрузке.scid.ai — ИИ-платформа, которая объединяет весь исследовательский путь в одном приложении: от вопроса и поиска научных статей до анализа и подготовки материала с проверяемой доказательной базой.Начать можно с запроса: «В чём различия Lakehouse и классического DWH?».Дальше можно: — отобрать подходящие статьи и сохранить их в библиотеку; — посмотреть связи между публикациями на графе; — задать вопросы по выбранным работам: какие объёмы данных, типы запросов и метрики использовали авторы; — собрать таблицу
rzv Data Engineering
15 Sept, 13:56
Лаба по шардированному ClickHouse вышла в релиз🔸 Вы своими руками соберёте реплицированные и распределённые таблицы, загрузите в них реальные данные. Также пройдёте через то, что может произойти при переходе с одиночного ClickHouse на шардированный: - перекос от неудачно выбранного ключа - перенос таблицы на кластер - запросы, которые не падают и при этом отвечают некорректно - особенности вставки и чтения при работе с распределёнными таблицами🔸 Лаба рассчитана на тех, кто уже пишет SQL в ClickHouse. Колоночное хранение, MergeTree и синтаксис здесь не разбираются - только то, как меняется работа DE и какие грабли можно собрать при добавлении шардов. Версия CH: 26.7.Время прохождения 4-6чПодробнее по ссылкеp.s. По анонсам буду точнее в следующий раз, "на неделе" не получилось)




rzv Data Engineering
3 Sept, 09:05
Ловите новости по учебным стендам🔸 На неделе планирую релиз шардированного Clickhouse 2х2. В нём расскажу про основы переноса таблиц с моно-кластера на шардированный CH с точки зрения дата инженера. Покажу на практике работу шардов и реплик. В нескольких задачах раскрою материализованные представления и проекции. Ну и маленько по витринам пройдёмся. Всё будет на той же платформе "материалы слева - СУБД клиент и UI справа".На учёную степень по клику или навыки уровня DBA не претендую. Приглашаю ознакомиться тех DE, у кого не было опыта с Clickhouse в принципе или с его кластерной версией)🔸 Потом скорее всего будет мини-Hadoop с "плановыми поломками" одной дата ноды каждые полчаса. Подумал, что надо устойчивые системы показывать в стрессовых ситуациях) Для тех, кто планирует работать в больших банках или других компаниях с петабайтными хранилищами.🔸 Понемногу работаю над



rzv Data Engineering
17 Aug, 09:53edited
Заканчиваю полировать, завтра с утра можно будет пробовать) За эту неделю получилось вылечить многие баги и несостыковки, добавить полезные фичи, улучшить Quality of Life, значительно расширить покрытие лабы. Но наверняка что-то ещё осталось из проблем, будем
rzv Data Engineering
15 Aug, 06:39
В какие темы и технологии было бы интересно погрузиться с практикой? Пиши в комментариях, буду выбирать популярные идеи и формировать бэклог)1,580Open in Telegram
rzv Data Engineering
14 Aug, 17:58
В общем, по поводу розыгрыша билета на конференцию и обсуждения под удалённым постом с рекламой:Нечасто провожу эти розыгрыши, и досадно что именно в этот раз довольно крупно накосячил со своей стороны.Как было по порядку: • В комментариях в конкурсе приняли участие два человека - Даниил и Сергей. • Я провёл розыгрыш, в котором победителем рандом выбрал Сергея, написал ему об этом под постом - но потом обнаружил, что не поставил OBS на запись. • Подумал, что доказательство всё-таки нужно, записал ещё один раз, где рандом выбрал Даниила. • Написал Даниилу об этом, и решил подчистить прошлое сообщение, где победитель - Сергей. • Сергей указал мне на эту несправедливость в комментах, и потом я пытался объясниться, но услышать друг друга не получилось. • Даниил пошёл навстречу и отказался от своего билета, чтобы в итоге он достался Сергею.Я написал организатору конференции, в
rzv Data Engineering
14 Aug, 14:02
Анонс новых учебных стендов по DE Я стремлюсь найти такие способы обучения технологиям, которые помогают разобраться и понять материал. Сейчас работаю над интерактивными стендами в стиле kodekloud, но для дата инженеров. Это такие лабы на 3-5 часов, где




rzv Data Engineering
8 Aug, 14:35edited
Опыт миграции небольшого стека с Docker compose на Kubernetes 4/4🔸 Что это даёт, по крайней мере для меняПрежде всего - интеграцию с готовой платформой для "прогерских лабораторных работ", где k8s-манифесты это пререквизитВозможность горизонтального масштабирования за пределы одной ВМ на будущееБолее удобный способ из одного контейнера управлять состоянием другого, например для сервиса выдачи доступов (в docker-compose стеке есть bind-mount /var/run/docker.sock, но идёт вместе с уязвимостью в виде root права на запуск любых контейнеров)🔸ВыводыДля собственных проектов пока всё ещё не вижу смысла в k8s, как ни пытаюсь разглядеть. Всё в конечном итоге запускается на виртуальных машинах, за которые платишь. Даже в managed сервисе вроде "yandex cloud managed k8s" идёт отдельная аренда за месяц CPU/RAM/disk конкретных ВМ.Пока продолжаю всей душой любить Docker compose.Поделит
rzv Data Engineering
8 Aug, 14:33edited
Опыт миграции небольшого стека с Docker compose на Kubernetes 3/4Отдельно — Ingress:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: trino spec: rules: - host: trino.example.com http: paths: - path: / pathType: Prefix backend: service: name: trino port: number: 8080
rzv Data Engineering
8 Aug, 14:33edited
Опыт миграции небольшого стека с Docker compose на Kubernetes 2/4Что стало на k8s🔸 Во-первых, сколько абстракций добавилось: - Deployment — чтобы кластер сам следил за нужным состоянием пода - Secret — API-объект с RBAC-управлением доступами на чтение и живой ротацией без передеплоя - Service — чтобы у пода был стабильный сетевой адрес: свой внутренний IP он теряет при каждом пересоздании - Ingress — чтобы к сервису можно было подключиться снаружи; по умолчанию кластер находится в полностью изолированном окружении "без окон и дверей" - ConfigMap — набор key-value пар параметров🔸 Во-вторых, какие строчки конфига во что превратились: - image / container_name -> Deployment, containers[].image — без изменений - depends_on -> нативного аналога нет, приходится писать небольшой initContainer, который сам проверяет, что сервис-зависимость запущен и можно стартовать текущий - сеть по
rzv Data Engineering
8 Aug, 14:31edited
Опыт миграции небольшого стека с Docker compose на Kubernetes 1/4В посте попробую разобраться, в чём k8s может быть лучше чем Docker compose для инфры небольшого проекта. Пост больше по DataOps, но вам вроде такое иногда заходит. Вначале отладил сервис и "лабу" для своих менти на привычном окружении, теперь оборачиваю в "коробку" и готовлюсь открывать доступ для многих. Заодно решил потренироваться в переносе сервиса на kubernetes. Это те же контейнеры, должно быть несложно, правда?)🔸 БылоВот весь блок trino: из compose, как есть:trino: image: trinodb/trino:483 container_name: trino restart: unless-stopped volumes: - ./trino/etc:/etc/trino:ro ports: - "8085:8080" environment: AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-} healthcheck:
rzv Data Engineering
8 Aug, 14:30edited



rzv Data Engineering
8 Aug, 14:27
Анонс новых учебных стендов по DEЯ стремлюсь найти такие способы обучения технологиям, которые помогают разобраться и понять материал. Сейчас работаю над интерактивными стендами в стиле kodekloud, но для дата инженеров. Это такие лабы на 3-5 часов, где можно знакомиться с технологиями через практику.Пользователь на платформе сможет создавать конфиги, запускать команды в терминале, обращаться к СУБД через SQL клиент, заходить на UI сервисов и тд. Опыт приближен к техническому взаимодействию с системой, как это бывает на работе.Планирую в августе зарелизить первый стенд по Lakehouse: Trino + Iceberg + S3 - ждите новостей)Закладываю опыт работы в американском стартапе, где ещё в 2024 удалось поработать с Lakehouse



rzv Data Engineering
25 Jul, 14:02edited
Вопрос на подумать-порассуждать. Что делать, если меняется первичный ключ?Например, ты строишь CRM систему на основе телеграмма. И в качестве колонки, которая "однозначно определяет аккаунт", выбираешь телеграм никнейм. Запускаешь систему в прод, всё хорошо работает какое-то время. А потом ты узнаёшь, что некоторые клиенты поменяли свой телеграм никнейм. То есть теперь есть две разных строчки, которые на самом деле один клиент.
1,890Open in Telegram
rzv Data Engineering
30 Jun, 16:16
Как BI-аналитики воспринимают оптимизацию таблиц в СУБД под тяжёлые запросыhttps://rzvde.pro/clickhouse_query_optimization_demoи такой пересчёт происходит при каждом обращении к СУБД, например Clickhouse: • выбор другого отчётного периода • фильтрация по конкретным значением • изменение полей агрегации(симуляция, реальная база не пострадала)rzvde.proЗачем оптимизировать запросы в ClickhouseНаглядная демонстрация со стороны BI-аналитиков
rzv Data Engineering
19 Jun, 08:45
Дата инженерный опыт работы с кубером 3/3🔸 Выбор Executor под задачуПоявляется выбор между CeleryExecutor и KubernetesExecutor. CeleryExecutor держит постоянный пул воркеров, которые ждут работу из очереди через брокер вроде Redis. Воркеры всегда “прогреты”, поэтому задача стартует почти сразу, и это выгодно при большом числе коротких частых операций. Плата за такой режим в том, что воркеры занимают ресурсы даже в простое.KubernetesExecutor поднимает отдельный под под каждую задачу и удаляет его после завершения. Старт такого пода занимает секунд 40, поскольку нужно подтянуть образ и дождаться планировщика, и полезная работа начинает выполняться далеко не сразу. Зато задача получает изоляцию, возможность занять ограниченные ресурсы под тяжёлую операцию и высвободить по выполнении.p.s. существует комбинированный CeleryKubernetesExecutor, который распределяет задачи по очередям.


rzv Data Engineering
19 Jun, 08:44
Дата инженерный опыт работы с кубером 2/3🔸 Где лежат логи и как до них добратьсяПод в кубере это атомарная единица деплоя. Под с задачей живёт ровно столько, сколько идёт её отработка, а после завершения исчезает вместе со своей файловой системой и локальными логами. Поэтому логи приходится выносить наружу, чаще всего в S3/MinIO или в систему агрегации логов вроде Loki или ElasticSearch. Логи подтягиваются в интерфейс Airflow из удалённого хранилища, и визуально всё работает как обычно. Однако, если нужно обработать логи программно или провести “глобальный поиск”, для этого нужно перейти во внешнюю систему, а не подключаться по ssh к виртуальной машине как раньше.🔸 Связь кубера с внешним миром через ingress и egressK8s описывает сети, и без настройки сетей приложение будет существовать “в вакууме”, недоступное для подключения извне и общения с “внешним миром”. Для сегодняшней


rzv Data Engineering
19 Jun, 08:43
Дата инженерный опыт работы с кубером 1/3Я не буду вам сейчас долго писать про архитектуру или масштабируемость - это всё непонятным языком уже описали до меня. Покажу с точки зрения дата инженера на примере работы с Airflow.🔸 Kubernetes (k8s, кубер) - это инфраструктурная платформа для развёртывания сервисов и описания их ресурсов через код. То есть где-то в гит репозитории лежит набор файликов, которые обрабатываются кубером и превращаются во всевозможные сервисы, сети, параметры серверных приложений и тд. Например, все компоненты Airflow: • webserver • scheduler • workers • executor • trigerrer • metadata base (postgres)🔸 Но что это значит для пользователя сервиса, то есть для дата инженера? Разберу четыре темы: 1. расположение логов и доступ к ним 2. ingress/egress - подключение к источникам и таргетам 3. выбор Executor между Celery и Kubernetes для разных задач 4. python

Related Channels
Other channels in the same section of the catalogue.
