Как организовать конвейер self-service Machine Learning на Apache Kafka, Spark Streaming, Kudu и Impala: пример расширенной BI-аналитики Big Data

Big Data, Большие данные, обработка данных, архитектура, HBase, Impala, SQL, NoSQL, Kudu, Spark, Kafka, банки, security, машинное обучение, Machine Learning

Продолжая разбирать production-кейсы реального использования этих технологий Big Data, сегодня поговорим подробнее, каковы плюсы совместного применения Kudu, Spark Streaming, Kafka и Cloudera Impala на примере аналитической платформы для мониторинга событий информационной безопасности банка «Открытие». Также читайте в нашей статье про возможности этих технологий в контексте машинного обучения (Machine Learning), в т.ч. самообслуживаемого (self-service ML).

BI-система на базе Big Data для банковской безопасности

Apache Kudu, Spark, Kafka и прочие технологии Big Data активно используются не только в типовых BI-приложениях, но и в аналитических системах обеспечения информационной безопасности. В частности, в январе 2020 года банк «Открытие» совместно с компанией «Неофлекс» завершил проект по внедрению аналитической платформы мониторинга событий информационной безопасности на базе технологий Big Data. Система обеспечивает непрерывный мониторинг и позволяет в реальном времени регистрировать, анализировать и реагировать на различные инциденты. В проекте были задействованы решения Oracle Big Data Appliance, в т.ч. Cloudera Data Platform, включая Apache Hadoop, Kafka, Spark Streaming, Kudu и Impala и другие компоненты платформы. Система поддерживает горизонтальное масштабирование, обеспечивая оперативный доступ к данным мониторинга в режиме реального времени с сохранением исторических данных о событиях для их оценки, анализа рисков и принятия обоснованных решений по обеспечению информационной безопасности. Вкратце представить принцип действия этой системы аналитики больших данных можно следующим образом [1]:

  • Spark Streaming обеспечивает захват логов в потоковом режиме и непрерывный анализ около 60000 сообщений в секунду на предмет потенциально опасных или аномальных событий;
  • логи структурируются и сохраняются в форматах Apache Kudu, Parquet и Avro;
  • с использованием SQL-on-Hadoop инструментов, таких как Cloudera Impala, аналитики информационной безопасности выполняют ситуативные (ad-hoc) запросы, используя типичный синтаксис SQL;
  • все аномальные события группируются в витрины инцидентов с ссылкой на первоисточник в логах;
  • система поддерживает загрузку логов из восьми источников данных с ежедневным объемом около 1 Тб в сутки.

Примечательно, что проект был реализован всего за 7 месяцев. Впрочем, этот набор Big Data технологий, использованные в банке «Открытие», можно назвать типичным для решения подобных задач. Далее мы рассмотрим, как вышеперечисленные технологии применяются для прогнозирования будущих событий с помощью методов машинного обучения, реализуя таким образом концепцию расширенной аналитики больших данных, о которой мы писали здесь.

Apache Kafka, Spark Streaming, Kudu и Impala для self-service Machine Learning

Рассмотрим пример прогнозирования событий в течение определенного периода времени, например, следующих 10 минут, с помощью модели потоковой регрессии и традиционного метода пакетного прогнозирования. Такой прогноз можно использовать для динамического масштабирования вычислительных ресурсов или для другой оптимизации бизнеса. Напомним, регрессионный анализ – это метод прогнозного моделирования, который исследует взаимосвязи между зависимой (целевой) и независимыми переменными (предикторами). Его можно использовать для моделирования временных рядов, прогнозирования и определения причинно-следственной связи между переменными [2].

Apache Kafka позволяет постоянно считывать данные в отдельном задании потоковой передачи Spark, где выполняется проектирование объектов с последующим потоковым прогнозированием с помощью Spark MLlib. Результаты прогнозов сохраняются в Apache Kudu. Можно также использовать Impala или Spark SQL для интерактивного запроса как фактических, так и прогнозируемых событий, чтобы создать пакетный прогноз для сравнения. Разберем этот конвейер обработки данных (data pipeline) более подробно [3]:

  • Kafka позволяет абстрагировать прием данных в масштабируемом виде, не связывая его с потоковой структурой Spark, которая работать только с одной целью. Кроме того, Кафка способна обрабатывать до миллионов событий в секунду и отлична интегрируется со многими технологиями Big Data, в частности, Spark Streaming, о чем мы рассказывали здесь.
  • В свою очередь, Spark Streaming дает возможность представлять сложные процессы обработки событий с небольшим количеством строк кода на Scala, Java, Python или R, обеспечивая слаженную интеграцию с Kafka. При этом можно работать с MLlib, библиотеками машинного обучения в Spark. Вместо MLlib можно использовать MADlib (magnetic, agile and deep) – open-source библиотеку для масштабируемых задач аналитики в базах данных, которая обеспечивает вычисления с параллельной обработкой в математических, статистических методах и методах машинного обучения для структурированных и неструктурированных данных [4].
  • Apache Kudu делает инкрементные вставки событий, реализуя гибридный уровень хранения между HDFS и HBase. Таким образом, Kudu позволяет совмещать очень быстрое сканирование больших наборов данных, свойственные HDFS, с быстрыми операциями вставки и поиска первичного ключа, присущие HBase. В сравнении с другими популярными NoSQL-СУБД, HBase или Cassandra, Kudu обеспечивает ускоренное сканирование данных для аналитики, что отлично дополняет его архитектуру колоночного хранения.
  • Наконец, с помощью Cloudera Impala или Spark SQL можно легко анализировать данные через стандартные SQL-запросы.
Kafka, Spark Streaming, Kudu, Impala, Machine Learning, машинное обучение, Big Data, большие данные, архитектура
Пример data pipeline расширенной BI-аналитики больших данных c self-service Machine Learning на технологиях Big DataKafka, Spark Streaming, Kudu и Impala

Ключевым преимуществом использования Spark Streaming для регрессионной модели является возможность обеспечить непрерывное обучение в режиме self-service Machine Learning, разделяя потоки данных на обучающий и рабочий, который используется для предсказаний. Что такое самообслуживаемое машинное обучение и чем оно отличается от AutoML, мы рассказывали здесь. Подробный код рассмотренного решения с объяснениями и примерами на Apache Kafka, Spark Streaming, Spark SQL, Kudu и Impala, а также Spark MLLib и Impala MADlib, доступен в источнике [3]. Другой пример использования алгоритмов Machine Learning и технологий Big Data для решения прикладных бизнес-задач мы разбираем здесь, в кейсе крупной торговой сети.

В следующей статье мы продолжим разговор про Spark SQL и Apache Kudu, рассмотрев преимущества и особенности их совместного использования. А как на практике реализовать конвейер потокового self-service ML с помощью Apache Kafka, Spark, Hadoop и Impala для аналитики больших данных в проектах цифровизации своего бизнеса, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://www.open.ru/about/press/44983
  2. https://www.machinelearningmastery.ru/ml-algorithms-one-sd-%CF%83-regression-47b01d8d51f9/
  3. https://www.svds.com/building-a-prediction-engine-using-spark-kudu-and-impala/
  4. https://madlib.apache.org/