Как сократить цикл BI-аналитики Big Data в тысячи раз или ETL-конвейер Apache Kafka-Storm-Kudu-Impala в Xiaomi

Автор Категория , , , , ,
Как сократить цикл BI-аналитики Big Data в тысячи раз или ETL-конвейер Apache Kafka-Storm-Kudu-Impala в Xiaomi

Сегодня мы рассмотрим практический кейс использования Apache Kudu с Kafka, Storm и Cloudera Impala в крупной китайской корпорации, которая производит смартфоны. На базе этих Big Data технологий компания Xiaomi построила собственную платформу для BI-аналитики больших данных и генерации отчетности в реальном времени.

История Kudu-проекта в Xiaomi

Корпорация Xiaomi начала использовать Kudu еще в 2016 году, вместе с Cloudera Impala, которая на тот момент еще находилась в стадии инкубации open-source проектов фонда Apache Software Foundation [1]. До применения Kudu архитектура аналитической Big Data системы выглядела следующим образом [2]:

  • данные из различных источников (более 20 миллиардов записей в день) сохранялись в HBase и в отдельной базе файлов последовательности в формате Sequence;
  • далее эти данные обрабатывались с помощью Apache Hive, классического Hadoop MapReduce и Spark, разделяясь на 2 потока согласно лямбда-архитектуре, о которой мы рассказывали здесь;
  • Impala, как средство класса SQL-on-Hadoop, использовалось для интерактивного доступа к данным, хранящимся в HDFS в формате Parquet;
  • исторические данные из HBase напрямую передавались в конечные BI-сервисы.
Apache Hadoop, HBase, HDFS, Impala, BI-архитектура Big Data в Xiaomi
Архитектура Bi-системы аналитики больших данных в компании Xiaomi на базе Apache Hadoop (Hbase и HDFS), MapReduce, Spark, Hive и Cloudera Impala

Основными недостатками этой BI-системы были низкая скорость и высокая сложность обработки данных. На практике для получения результатов анализа требовалось от 1 часа до целого дня, что неприемлемо для современного бизнеса. Более того, порядок поступления логов в хранилище не соответствовал логической последовательности происхождения событий. Из-за этого требовалось считывать данные за предыдущие периоды (2-3 дня), чтобы получить все события одного дня. Поэтому было принято решение о построении ETL-конвейера обработки данных (data pipeline), который позволит быстрее и проще отслеживать и анализировать данные о событиях RPC-вызовов мобильных приложений и других серверных служб. Для этого в Xiaomi был внедрены Apache Kudu, Kafka и Storm, обеспечивающие быструю аналитику больших данных в near real-time режиме [2].

Результаты внедрения BI-системы аналитики Big Data

Новая архитектура Bi-системы аналитики больших данных о событиях RPC-вызовов мобильных приложений и других серверных служб в Xiaomi построена следующим образом [2]:

  • данные из различных источников агрегируются в топиках Apache Kafka;
  • приложения на базе Apache Storm отвечают за потоковую обработку этих данных в реальном времени;
  • Apache Kudu выполняет роль хранилища для исходных данных из источников и результатов OLAP-сканирования обработанных данных из Storm-приложений;
  • Impala применяется для интерактивного доступа к данным в Kudu через инструментарий SQL-запросов;
  • конечные BI-сервисы принимают данные как через Impala, так и непосредственно через прямой доступ к Kudu.
Apache Kafka, Storm, Kudu, Impala, ETL, Big Data pipeline, BI-аналитика больших данных
Архитектура Bi-системы аналитики больших данных в компании Xiaomi на базе Apache Kudu с Kafka, Storm и Cloudera Impala

Обновленная архитектура BI-системы аналитики больших данных на базе Apache Kudu, Kafka и Storm показала успешные результаты уже в первые полгода production-использования в Xiaomi позволила улучшить ключевые показатели надежности и производительности [1].

Благодаря Kudu канал обработки данных существенно упростился, в т.ч. за счет поддержки операций произвольного чтения и записи. Также стал возможным интерактивный анализ данных непосредственно в Kudu с максимальной временной задержкой не более 10 секунд [2].

Видео по этому кейсу было представлено в докладе Майка Перси, software-инженера компании Cloudera на ежегодной конференции Spark Summit Europe в 2016 году. Сам доклад посвящен применению Apache Kudu и Spark SQL для быстрой аналитики быстро меняющихся данных (Apache Kudu and Spark SQL for Fast Analytics on Fast Data) [3]. Некоторые аспекты интеграции Apache Kudu и Spark SQL мы уже разбирали здесь. Завтра мы рассмотрим еще один пример практического использования этих технологий для расширенной аналитики больших данных, разобрав кейс банка “Открытие”. А в другой статье мы рассмотрим доклад сотрудника Cloudera подробнее, фокусируясь на ключевых преимуществах, которые Kudu приносит в Spark.

Как использовать Apache Kudu и другие компоненты экосистемы Hadoop на практике для аналитики больших данных в проектах цифровизации своего бизнеса, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Источники

  1. https://blogs.apache.org/foundation/entry/apache_software_foundation_announces_apache
  2. https://www.programmersought.com/article/8000180188/
  3. https://databricks.com/session/apache-kudu-and-spark-sql-for-fast-analytics-on-fast-data