Slide 1

Slide 1 text

Data as a service Косарев Антон 1 Знать путь и пройти его — не одно и тоже. Морфеус (х/ф «Матрица»)

Slide 2

Slide 2 text

Первоначальные задачи • Сохранение как можно большего количества данных во всех активах группы. • Построение и внедрение моделей машинного обучения. Везде. • Замена «экспертных мнений» решениями, основанными на статистике. • Полная замена человека машиной в принятии большинства решений. 2

Slide 3

Slide 3 text

Виды проектов Предиктивные ремонты • Предсказания поломок • Рекомендации по обслуживанию • Детектирование поломок оборудования (CV) Управление качеством стали • Предсказание дефектов на этапе сляба • Детектирование дефектов (CV) • Выявление причин дефектов Советчики по технологии • Производство окатышей • Добыча угля • Производство чугуна • Усваиваемость лома Безопасность и производительность • Травматизм • Текучесть кадров • Ликвидация узких мест • Оптимизация расходов энергоносителей 3

Slide 4

Slide 4 text

4 Вводные для проекта Бизнес-задача  Как избавиться от дросса на автолисте?  Как нам катать больше рулонов на Стане-2000?  Как получить прочные окатыши и сжигать меньше мазута?  Чистовые клети перегреваются, как предотвратить перегрев?  Нужно добывать больше угля, как это сделать? Бизнес-задача Источники данных  Hive-таблицы по подключенным к Data Lake источникам  IBA-архивы с данными АСУТП  SQL-базы данных  Выгрузки из SAP  Данные с видеокамер  Excel-файлы Технологический процесс  Эксперты (мастера, операторы, технологи)  Технологический регламент, схемы производства, инструкции к АСУТП, паспорт цеха…  Визуальный интерфейс оператора  Выезд на производство

Slide 5

Slide 5 text

Потребности клиентов 5 Сервисы Использование Возможности Делать выборки по большому массиву данных Осуществлять поставку данных и делать необходимые агрегации Обучение моделей Работоспособность моделей Offline Online Аналитика Расчеты «на лету»

Slide 6

Slide 6 text

Технологический стек 6 Kafka Schema Registry Kafka streams Kafka Connect Redis Grafana InfluxDB Apps HDFS YARN Spark Hive ZooKeeper HUE Sentry Impala

Slide 7

Slide 7 text

Архитектура 7 Extractors Hadoop Transformations Models Training Real-Time Offline Producers InfluxDB Kafka Models Execution Aggregations User Interfaces Grafana ElasticSearch Kibana Prometeus

Slide 8

Slide 8 text

Офлайн компоненты 8 • Продюсер данных из источника (Java) • Транспорт данных (Kafka) • Инструмент поставки в HDFS (Kafka Connect) • Фреймворк доступа (Spark + Hive, Power BI + Impala) – потребители • Инструмент разграничения доступа (Kerberos, Sentry) • Управление ресурсами (YARN) YARN Spark HDFS Staging area Raw input files Presentation area Jupyter Hue JVM apps

Slide 9

Slide 9 text

Онлайн компоненты 9 Kubernetes HDFS Kafka Connect InfluxDB Producer Java/Scala app Kafka Data aggregates Topic _agg Input data Topic _data Model predictions Topic _predict Aggregator Scala app Operator feedback Topic _action Model Python app Web GUI app • Продюсер данных из источника (Java) • Транспорт данных (Kafka) • Данные в горячем кэше (Redis) • Онлайн трансформация данных (Kafka Streams + Scala) • «Обертка» над моделью (Python + Docker) – потребители • GUI (React, Vue, etc.) • Управление ресурсами (Kubernetes)

Slide 10

Slide 10 text

Сервис накопления данных 10 Таблица в каталоге Запрос на данные Confluence (Wiki) аналитик/эксперт Jira (Data backlog) Задача на новый источник Выбор/ создание продюсера Поток исходных данных ONLINE Kafka HDFS Каталог данных Hive Потребление данных из очереди Поиск/создание инфраструктуры Адрес и тип источника Тип источника Запись в реестре OFFLINE источников

Slide 11

Slide 11 text

Сервис поставки данных 11 Потребление данных из очереди Запрос на данные Confluence (Wiki) аналитик/разработчик Jira (Data backlog) Задача на новый источник Выбор/ создание продюсера Поток исходных данных ONLINE Kafka Поиск/создание инфраструктуры Адрес и тип источника Тип источника Выбор/ создание агрегатора Трансформация Данных ONLINE Запись в реестре ONLINE источников

Slide 12

Slide 12 text

Пару слов о формате данных 12

Slide 13

Slide 13 text

Поставка данных из источника 13

Slide 14

Slide 14 text

Поставка данных из источника Задачи: • Непрерывный сбор • Мониторинг работоспособности 14

Slide 15

Slide 15 text

Поставка данных из источника Разнообразие источников Пример: • Данные с датчиков • Проприетарные бинарные архивы Решение: • Использовать решения вендора • Накапливать самим 15

Slide 16

Slide 16 text

«Обертка» над моделью 16

Slide 17

Slide 17 text

«Обертка» над моделью Задачи: • Непрерывная поставка данных в модель • Отправка результатов работы модели • Логирование • Предобработка данных (привет, Pandas) 17

Slide 18

Slide 18 text

«Обертка» над моделью Обязательное присутствие Python Пример: • Использование в модели Python-специфичных библиотек Решение: • Верить в лучшее • Использование транспорта (очередь, RPC) 18

Slide 19

Slide 19 text

«Обертка» над моделью Где хранить стейт приложения Пример: • В модель на вход подаются данные за последние 5 часов Решение: • Вычитывать каждый раз заново из очереди • Выносить в отдельный кэш • Сохранять в файл 19

Slide 20

Slide 20 text

Онлайн трансформация данных 20

Slide 21

Slide 21 text

Онлайн трансформация данных Задачи: • Агрегация • Фильтрация 21

Slide 22

Slide 22 text

Онлайн трансформация данных Batch processing vs Stream processing Пример: • Среднее арифметическое в окне за 1 минуту • Если за минуту было N элементов – учитываем, если N+1 – не учитываем Решение: • Уточнение алгоритма расчета • Использование фреймворков с поддержкой stateful агрегаций 22

Slide 23

Slide 23 text

GUI 23

Slide 24

Slide 24 text

GUI Задачи: • Отображение результатов работы модели • Получение обратной связи 24

Slide 25

Slide 25 text

GUI Использование устаревших браузеров Пример: • «А у нас только IE 7» Решение: • Вспомнить, что есть jQuery 25

Slide 26

Slide 26 text

P.S. 26 The truth is the log. The database is a cache of a subset of the log. Pat Helland. Immutability Changes Everything

Slide 27

Slide 27 text

Полезные ссылки • https://kafka.apache.org/ • https://www.confluent.io/blog/ • https://kubernetes.io/ • https://medium.com/netflix-techblog • https://towardsdatascience.com/ • https://typelevel.org/cats/ 27

Slide 28

Slide 28 text

28