bigПочта: как мы строили datalake в Почте России / Алексей...
TRANSCRIPT
![Page 1: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/1.jpg)
BigПочтаАлексей Вовченко
![Page 2: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/2.jpg)
Кейс из жизни
2012 год – посылка из США под новый год, с подарками всем друзьям•27 ноября - экспорт из США•25 декабря - появилась у нас на границе•30 декабря – поездка в центральный офис EMS
вызволять (5 часов)
![Page 3: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/3.jpg)
Ответ – Матрешка
![Page 4: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/4.jpg)
Что такое почта?
Ритейл
Логистика
Нельзя терять данные
![Page 5: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/5.jpg)
47 тыс. отделений2 млн. новых отправлений в день200-400 млн. событий в сутки
ДанныеПочтыРоссии
![Page 6: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/6.jpg)
Задача - Построить отказоустойчивую инфраструктуру для решения задач почты
Получение Хранение Очистка Валидация
Обработка Аналитика Экспорт
![Page 7: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/7.jpg)
Требования
• OpenSource• Exadata + OracleBI
• уже работает, нужно лучше
![Page 8: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/8.jpg)
Задачи на релиз 0
1. Получить данные от всех логистических систем
2. Построить модель данных (матрешка)
3. Построить отчет «Остатки» состояние на вчера
4. Предоставить доступ к отчету пользователям
![Page 9: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/9.jpg)
Front REST(in)
![Page 10: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/10.jpg)
Map-Reduce
Front REST(in)
![Page 11: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/11.jpg)
Map-Reduce
Oozie
Front REST(in)
![Page 12: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/12.jpg)
Map-Reduce
Oozie
Front REST(in)
SQL
Релиз 0
![Page 13: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/13.jpg)
Map-Reduce
Oozie
Front REST(in)
SQL
Новые задачи • Нагрузкапользователей
• Доступ к данным по ключу
• Обработки данных не укладываются в реляционную логику
![Page 14: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/14.jpg)
Выбор SQL движка
• Загрузка из HDFS
• Нагрузка – много пользователей
• Тяжелые OLAP запросы
![Page 15: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/15.jpg)
Выбор SQL движка – выводы:
Все SQL движки над HDFS – медленные
Лидеры
![Page 16: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/16.jpg)
Map-Reduce
Oozie
Front REST(in)
SQL
было
![Page 17: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/17.jpg)
Map-Reduce
Oozie
Front REST(in)
стало
• Доступ к данным по ключу
![Page 18: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/18.jpg)
Доступ к данным по ключу
по ID из 100млрд записей найти 10-100 нужных (pochta.ru)
• Решение key-value базы• Пробовали SparkSQL
• Пробовали Hadoop/Hive/in-memory/Vertica
• Кандидаты:
![Page 19: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/19.jpg)
Релиз 1
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
![Page 20: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/20.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
Новые задачи
• А теперь давайте считать real-time…
![Page 21: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/21.jpg)
Выбор streaming
Задачи:• Kafka -> Kafka
• Kafka -> Cassandra
• Kafka -> Hadoop (Hive)
![Page 22: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/22.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
![Page 23: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/23.jpg)
Проблемы Spark Streaming
Producer ?? Consumer
Producer Message Message Consumer
Producer Message Consumer
At-Most-Once
At-Least-Once
Exactly-Once
![Page 24: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/24.jpg)
Проблемы Spark Streaming
Producer Message Message Consumer
• Spark checkpoint когда изменился код• Offsets Zookeeper – медленно
• Spark Kafka Direct API
• Spark checkpoint
• Реализовали свой механизм• PostgreSQL (ключ: topic, clientid, partition id, value: offset)
![Page 25: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/25.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
![Page 26: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/26.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
• Данные в batch != streaming
![Page 27: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/27.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
![Page 28: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/28.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
было
![Page 29: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/29.jpg)
Релиз 2
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
![Page 30: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/30.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
• Pentaho не держит нагрузку
• Прием не держит пики
• SparkThrift +Cassandra – не стабильны
• Spark Streaming -высокодоступность
![Page 31: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/31.jpg)
Масштабируемость фронтов
![Page 32: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/32.jpg)
Map-Reduce
Oozie
Cluster
DockerFront REST(out)
REST(in)
![Page 33: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/33.jpg)
Высокодоступность SparkStreaming
• Ночью кластер занят на 100%
• Если streaming-job падает, он не может подняться
• Yarn очереди – жалко терять ресурсы
![Page 34: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/34.jpg)
Map-Reduce
Sqoop
Oozie
Job1
JobN
Cluster
DockerFront REST(out)
REST(in)
Релиз 3
![Page 35: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/35.jpg)
Map-Reduce
Oozie
Cluster
Spark SQL Thrift
Front REST(in)
![Page 36: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/36.jpg)
Map-Reduce
Sqoop
Oozie
Job1
JobN
Cluster
DockerFront REST(out)
REST(in)
Релиз 3
![Page 37: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/37.jpg)
Пилотирование Yandex ClickHouse
•Очень быстрая база
•ClickHouse + docker
•Универсальный загрузчик данных (Spark+Scala+local-table+paritions)
![Page 38: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/38.jpg)
Пилотирование Yandex ClickHouse
•Провели нагрузочное тестирование• Результат – для наших задач не подходит• Под нагрузкой – 100% (3600%)CPU• Скорость сопоставима с Vertica, но очень большая
нагрузка на оборудование
![Page 39: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/39.jpg)
Пилотирование Flink
• Flume не всегда стабилен
• Flume сложно мониторить
• Шаг влево-вправо – сложно
• Решение – Flink
• Пробовали NiFi – не понравился
![Page 40: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/40.jpg)
Map-Reduce
Sqoop
Oozie
Job1
JobN
Cluster
DockerFront REST(out)
REST(in)
Релиз 3
![Page 41: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/41.jpg)
Map-Reduce
Sqoop
Oozie
Job1
JobN
ClickHouse
Cluster
CH Front DockerFront REST
(out)REST
(in)
Flink
Релиз 3.5
![Page 42: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/42.jpg)
Путь данных: Прием
data
![Page 43: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/43.jpg)
Путь данных: Онлайн обработка
data data
Job1
data data
![Page 44: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/44.jpg)
Путь данных: Снова онлайн обработка
data data
Job1
data data
![Page 45: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/45.jpg)
data data
JobN
data data
JobM
Cluster
data
Путь данных: онлайн сохранение в Cassandra
![Page 46: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/46.jpg)
Путь данных: вся онлайн обработка
data data
JobN
data data
JobM
Cluster
data
export
![Page 47: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/47.jpg)
Путь данных: batch обработка
Oozie
data
data
data
data
![Page 48: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/48.jpg)
Oozie
data
data
Cluster
data
ClickHouse
data
data
Путь данных: batch экспорт
![Page 49: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/49.jpg)
Front+Docker+nginx Node
(0.5X)
DataCloud front docker (Pentaho, rest, DC services)
KafkaVerticaNode (SAS 10k)
Kafka Cluster + Vertica Cluster + ClickHouse Cluster + Spark
Streaming Cluster
Cassandra (SSD)
Cassandra (SSD)
Cassandra Cluster + HadoopControl (main ring)
DataNode (SATA)
DataNode (SATA)
DataNode (SATA)
DataNode (SATA)
DataNode (SATA)
Hadoop Cluster
DataNode (SATA)
А как же инфраструктура?
![Page 50: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/50.jpg)
Одна инфраструктура
• DataLake (for RAW data)• Batch ETL• Real-time processing• Analytics OLAP/OLTP processing• High-load rest (export)• High-load rest (input)• DataBus• BI• ML
• Hortonworks HDP+HDF• Hadoop• Yarn• Hive(tez)• Spark (+streaming)• Flume• Kafka
• Vertica• ClickHouse• PostgreSQL• Cassandra• Pentaho BI• Docker (scalable rest)
![Page 51: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/51.jpg)
Можно миксовать
Map-Reduce
Sqoop
Oozie
Job1
JobN
ClickHouse
Cluster
CH Front DockerFront REST
(out)REST
(in)
Flink
![Page 52: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/52.jpg)
Нет свободной аналитики
CH Front
ClickHouse
Map-Reduce
Sqoop
Oozie
Job1
JobN
Cluster
DockerFront REST(out)
REST(in)
Flink
![Page 53: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/53.jpg)
Streaming only, no Hadoop
Map-Reduce
Sqoop
Oozie
Flink
Job1
JobN
ClickHouse
Cluster
CH Front DockerFront REST
(out)REST
(in)
![Page 54: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/54.jpg)
Hadoop only, no Streaming
Job1
JobN
Map-Reduce
Sqoop
OozieClickHouse
Cluster
CH Front DockerFront REST
(out)REST
(in)
Flink
![Page 55: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/55.jpg)
Нет задач доступа по ключу
REST(out)
Cluster
Job1
JobN
Map-Reduce
Sqoop
OozieClickHouse
CH Front DockerFront REST
(in)
Flink
![Page 56: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/56.jpg)
Hadoop only, нет задачи и BI
ClickHouse
CH Front REST(out)
Cluster
Job1
JobN
Map-Reduce
Sqoop
Oozie
DockerFront REST(in)
Flink
![Page 57: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/57.jpg)
Что осталось?
• Flink->prod
• More data -> more nodes
• CI/CD full automatic
• Monitoring/puppet everything
• Sleep at the nights!
![Page 58: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/58.jpg)
Что дальше?
• DataLab (Spark ML, …)
• IgNite
• Spark structured streaming
![Page 59: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/59.jpg)
Выводы
• Не нужно останавливаться на достигнутом
• Каждую задачу должен решать свой инструмент
• Не надо бояться расширять архитектуру за счет хороших и
подходящих инструментов
![Page 60: BigПочта: как мы строили DataLake в Почте России / Алексей Вовченко (Luxoft)](https://reader034.vdocuments.pub/reader034/viewer/2022050812/5a6489147f8b9a36568b4d29/html5/thumbnails/60.jpg)
BigПочта – вопросы?Алексей Вовченко
[email protected]: itsneinhttps://www.linkedin.com/comm/in/alexey-vovchenko-3a1b6744