Кейс потоковой аналитики больших данных с Apache Kafka, Spark (Flink) и BI-системами

курсы аналитики больших данных, примеры и кесы аналитика Big Data, обучение большим данным, курсы Spark, обучение курс Kafka, обучение курс Greenplum, курсы Flink, Школа Больших Данных Учебный Центр Коммерсант

Сегодня рассмотрим пример построения системы потоковой аналитики больших данных на базе Apache Kafka, Spark, Flink, NoSQL-СУБД, BI-системой Tableau или визуализацией в Kibana. Читайте далее, кому и зачем исследовать Twitter-посты в реальном времени, как это реализовать технически, визуализировать в наглядных BI-дэшбордах для принятия data-driven решений и при чем здесь Kappa-архитектура.

Еще раз об аналитике Big Data для бизнеса: маркетинговая постановка задачи

Реклама и маркетинг до сих пор остаются самими крупными потребителями технологий Big Data и Data Science. Причем современный бизнес не только стремится удовлетворить возникшую потребность клиента, но и сформировать ее, простимулировав спрос или предугадав желания потребителя. К примеру, посетители парков отдыха, летних фестивалей и спортивных мероприятий на открытом воздухе заинтересованы в быстрой доставке продуктов для пикника или готовых блюдах. Идентифицировать потенциального клиента можно с помощью онлайн-анализа его активности в социальных сетях. Например, хэштеги #отдых, #паркгорького, #выходные и т.д. под фотографиями в Instagram или Twitter вместе с данными геолокации указывают на то, что именно сейчас человек прогуливается в конкретном районе и, возможно, в зависимости от погоды, с удовольствием выпьет горячий кофе или прохладный зеленый чай, закусив сытным бургером или ЗОЖ-ланчем. Конечно, если пользователь в это самое время не находится в кафе, т.е. в сообщении отсутствуют хэштеги #кафе, #обед, #летняяверанда и пр. Анализируя подобные посты и твиты в реальном времени, фудтех-компания может значительно повысить свою прибыль за счет таких ситуативных продаж.

Таким образом, ключевыми возможностями системы потоковой аналитики больших данных для этого случая будут следующие:

  • масштабируемость, точность и высочайшая скорость обработки данных (в реальном времени или near real-time);
  • интеллектуальный анализ собранной информации и автоматизированное принятие решений, например, генерация персональных спецпредложений с учетом исторических интересов клиента и его текущих характеристик, таких как геолокация, время суток, погода и прочие факторы;
  • визуализация результатов анализа на интерактивном дэшборде.

Как это реализовать на практике, рассмотрим далее.

Архитектура ML-системы потоковой аналитики больших данных

Типичная для вышеописанной потребности Big Data система имеет классическую Kappa-архитектуру, которая позволяет относительно недорого обрабатывать уникальные события в реальном времени без глубинного исторического анализа. Технически это можно реализовать следующим образом [1]:

  • считывать данные из соцсетей в real-time режиме;
  • агрегировать их, извлекая интересующие хэштеги и определяя отношения между ними;
  • производить вычисления, формируя персональные рекомендации с помощью моделей машинного обучения (Machine Learning);
  • визуализировать результаты анализа данных в дэшборде BI-системы.

В частности, Twitter API позволяет получать данные в реальном времени, обрабатывать их и передавать далее по конвейеру обработки, который будет выглядеть так:

  • данные собираются в формате JSON с помощью API Twitter и записываются в топики Apache Kafka для онлайн-аналитики, а также в Hadoop HDFS для формирования истории;
  • за пакетные и потоковые вычисления, а также ML отвечают Spark-приложения;
  • в качестве аналитического хранилища данных подойдет NoSQL-СУБД, которая лучше всего отвечает заранее определенным требованиям к хранению и скорости считывания/записи данных, например, Apache HBase, Hive, Greenplum, Cassandra, Elasticsearch и т.д.
  • для генерации отчетов и визуализации результатов анализа данных можно использовать готовые BI-решения, например, Tableau, интегрированное с аналитической СУБД с помощью специальных коннекторов.
Kafka, Spark, BI, NoSQL
ML-аналитика твитов в режиме реального времени с Kafka, Spark, NoSQL и BI

Однако, реализовать подобную систему онлайн-аналитики больших данных можно не только с помощью отмеченных на рисунке технологий Big Data. Читайте далее, какие альтернативы возможны для каждого из описанных компонентов.

Apache Kafka и другие технологии реализации

Сложность связывания компонентов системы между собой и наличие готовых интеграционных коннекторов может стать критерием выбора того или иного фреймворка. Например, в октябре 2020 года вышел релиз Greenplum-Spark Connector 2.0, о котором мы рассказывали здесь. А связать ту же MPP-СУБД Greenplum с Apache Kafka можно с помощью Greenplum Stream Server (GPSS) или Java-фреймворка PXF (Platform eXtension Framework), что мы разбирали в этой статье. А про особенности создания собственного коннектора Apache Spark к BI-системе Tableau читайте в этом материале.

Кроме того, в качестве критериев выбора аналитической СУБД можно использовать необходимые функциональные и нефункциональные требования к этому компоненту системы. Например, у Elasticsearch почти мгновенная индексация новых данных в JSON-и других полуструктурированных форматах с поддержкой нечеткого поиска и модулями ML, о чем мы упоминали здесь. А встроенная интеграция с Kibana позволит визуализировать результаты аналитики данных, как это было сделано в кейсе по анализу конверсии рекламных объявлений. Преимуществом такого варианта решения является отсутствие затрат на коммерческую лицензию BI-системы Tableau – вместо нее используется связка Apache Kafka с компонентами ELK-стека (Elasticsearch, Logstash, Kibana). А за реализацию алгоритмов машинного обучения отвечает код на PySpark во фреймворке Spark [2].

Впрочем, подобные возможности предоставляет и Apache Flink, который можно использовать вместо Spark, если требуется быстрая обработка данных в режиме действительно реального времени. Аналогично Spark, фреймворк Flink также предоставляет модули SQL и библиотеки Machine Learning, в т.ч. набор алгоритмов Alink. Как и Spark, Flink позволяет писать код на Java, Scala и Python с улучшенной производительностью благодаря обновлениям в последнем релизе 1.13.0, выпущенном в мае 2021 года [3]. Ответы на вопрос «Apache Spark vs Flink» (чем похожи и чем отличаются эти распределенные фреймворки) ищите в нашей отдельной статье. О другом интересном кейсе реализации алгоритмов машинного обучения в PySpark читайте в новом материале. А пример применения Flink в мониторинге производственных процессов смотрите здесь.

Технические подробности реализации рассмотренного кейса и другие подобные примеры потоковой аналитики больших данных на базе Apache Kafka, Spark и Greenplum вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

 

 

Источники

  1. https://medium.datadriveninvestor.com/experience-stream-analysis-using-pyspark-kafka-and-tableau-24edbb813c08
  2. https://bigdataschool.ru/blog/ctr-prediction-with-kafka-spark-elk-case.html
  3. https://flink.apache.org/news/2021/05/03/release-1.13.0.html
Поиск по сайту