Зачем вам Apache Bigtop или как собрать свой Hadoop для Big Data

Apache Bigtop, Big Data, Большие данные, обработка данных, архитектура, Hadoop, MapReduce, Hbase

Сегодня поговорим про еще один open-source проект от Apache Software Foundation – Bigtop, который позволяет собрать и протестировать собственный дистрибутив Hadoop или другого Big Data фреймворка, например, Greenplum. Читайте в нашей статье, что такое Apache Bigtop, как работает этот инструмент, какие компоненты он включает и где используется на практике.

Что такое Apache Bigtop и при чем тут Gradle с Maven

Согласно официальной документации, Bigtop – это проект с открытым исходным кодом от Apache Software Foundation для инженеров данных и Data Scientist’ов, который включает комплексную упаковку, тестирование и настройку ведущих компонентов Big Data инфраструктуры. Bigtop поддерживает широкий спектр компонентов, включая Hadoop, HBase, Spark и другие фреймворки для обработки и хранения больших данных.

Bigtop позволяет создать собственные RPM и DEB Hadoop-дистрибутивы, предоставляет интегрированную среду для smoke-тестирования, а также набор из более чем 50 тестовых файлов для начальных развертываний и комплексных обновлений всей платформы, а не только для отдельных компонентов. Также он поддерживает контейнерную виртуализацию через Docker-образы для развертывания Hadoop с нуля. Работать с Apache Bigtop можно на множестве операционных систем: Debian, Ubuntu, CentOS, Fedora, openSUSE и других [1].

В основе Bigtop лежат открытые технологии Gradle и Apache Maven. Напомним, Gradle – это система автоматической сборки, построенная на принципах Apache Ant и Maven, но с DSL на Groovy и Kotlin вместо XML-образной формы представления конфигурации проекта. Gradle был разработан для расширяемых многопроектных сборок, и поддерживает инкрементальные сборки. Gradle использует направленный ациклический граф для определения порядка выполнения задач, определяя, какие компоненты дерева сборки не изменились и какие задачи, зависимые от этих частей, не требуют перезапуска [2]. На практике Gradle используется достаточно широко. В частности, именно им Google собирает Android [3].

Apache Maven – это фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на XML-подобном языке POM (Project Object Model). Maven обеспечивает декларативную, а не императивную сборку проекта, включая в файлы описания проекта его спецификацию, а не отдельные команды выполнения. Все задачи по обработке файлов, описанные в спецификации, Maven выполняет через последовательность их обработки с помощью встроенных и внешних плагинов. Maven используется для построения и управления проектами на Java, C#, Ruby, Scala, и других языках программирования [4]. Именно Maven используется для сборки большинства проектов Apache Software Foundation. На практике начальная работа с Maven может показаться несколько сложной, что накладывает некоторые ограничения на новичков в Bigtop [3].

Таким образом, Bigtop позволяет установить и развернуть компоненты Hadoop, без привязки к конкретному дистрибутиву. Это также позволяет решить проблему взаимного соответствия версий отдельных компонентов экосистемы Hadoop. На практике часто возникает ситуация, когда по мере выпуска новых версий отдельных проектов они не коррелируют друг с другом [5]. Для этого Apache Bigtop включает инструментарий так называемого Smoke-тестирования – минимальный набор тестов на явные ошибки, которые легко автоматизируются, в т.с. с использованием средств непрерывной интеграции (CI, Continuous Integration) [6], что соответствует DevOps-подходу.

Hadoop и все-все-все: какие Big Data фреймворки входят в Apache Bigtop

Помимо Hadoop, последняя версия Bigtop (1.4 от 2019 года) включает около 30 компонентов. Перечислим основные из них, наиболее важные для хранения и обработки Big Data [5]:

  • Apache Crunch – библиотека с Java API для объединения и агрегирования данных, которые нецелесообразно реализовывать на классическом MapReduce. Это полезно при обработке временных рядов, сериализованных объектов, таких как Protocol Buf или формат AVROа также строки и столбцы HBase.
  • Apache Flume – распределенный, надежный и доступный сервис для эффективного сбора, агрегирования и перемещения больших объемов логов в режиме реального времени, используется в разработке приложений для аналитики Big Data «на лету».
  • Apache Giraph – высокомасшатбируемая система обработки итеративных графов.
  • Apache HBase – отказоустойчивая NoSQL-СУБД, колоночно-ориентированное мультиверсионное хранилище типа «ключ-значение» (key-value) поверх HDFS для эффективного хранения больших объёмов разреженных данных.
  • Apache HCatalog – уровень управления таблицами и хранилищем для Hadoop, который позволяет пользователям с различными инструментами обработки данных (Pig, MapReduce и пр.) легко читать и записывать данные.
  • Apache Hive – SQL-интерфейс доступа к данным, хранящимся в Hadoop (HDFS, HBase).
  • Apache Mahout – средство создания распределенных масштабируемых алгоритмов машинного обучения, ориентированных в основном на линейную алгебру.
  • Apache Oozie – серверная система планирования рабочих процессов для управления заданиями Hadoop.
  • Apache Pig – платформа для анализа больших наборов данных с высокоуровневом языком программирования, который позволяет эффективно распараллеливать структуру программ.
  • Apache Solr – масштабируемая платформа полнотекстового поиска на базе Lucene.
  • Apache Sqoop – еще один инструмент класса SQL-on-Hadoop, приложение интерфейса командной строки для передачи данных между реляционными базами данных и Hadoop.
  • Apache Whirr – набор библиотек для запуска облачных сервисов.
  • Apache Zookeeper – cервис-координатор для распределенной синхронизации небольших по объему данных (конфигурационная информация, пространство имен) для группы приложений.
  • Cloudera Hue – интерактивный веб-редактор запросов для взаимодействия с хранилищами данных, веб-интерфейс для анализа данных в Hadoop.
  • Apache DataFu – коллекция стабильных, хорошо протестированных библиотек для анализа больших данных и статистики в Hadoop.

Также в Bigtop можно добавить собственные компоненты, включая уникальные разработки.

В заключение перечислим наиболее примечательные проекты реального использования Apache Bigtop. Этот Big Data фреймворк активно применяется в Hadoop-дистрибутивах от Cloudera (CDH), проекте GlusterFS Hadoop от Red Hat, в платформе аналитики данных Uniting Data Platform, в EMC Greenplum для сборки для 1000-узлового кластера Analytics Workbench. Также Bigtop используется в Magna Tempus Group, Trend Micro и множестве других компаний по всему миру [7]. В частности, в апреле 2020 года на этот open-source проект обратила внимание команда управления данными «Ростелекома» [3]. В следующей статье мы продолжим разговор про Apache Hadoop и рассмотрим, как фармацевтический ритейлер АСНА (Ассоциация независимых аптек) построила на нем Data Lake для комплексного управления и аналитики Big Data

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

Источники

  1. https://bigtop.apache.org/
  2. https://ru.wikipedia.org/wiki/Gradle
  3. https://habr.com/ru/company/rostelecom/blog/499854/
  4. https://ru.wikipedia.org/wiki/Apache_Maven
  5. https://www.dummies.com/programming/big-data/hadoop/apache-bigtop-and-hadoop/
  6. https://ru.wikipedia.org/wiki/Smoke_test
  7. https://cwiki.apache.org/confluence/display/BIGTOP/Powered+By+Bigtop