![](https://habrastorage.org/getpro/habr/upload_files/242/250/b33/242250b33ebefc384e4681d31cb29ff9.png)
Мир больших данных становится только еще больше. Организации всех мастей производят огромное количество данных из года в год, и находят все больше способов использовать их для улучшения работы, лучшего понимания клиентов, более быстрой доставки продукции и снижения затрат, а также для других целей. Кроме того, руководители компаний, стремящиеся быстрее получить отдачу от данных, ищут возможности анализа в режиме реального времени.
Все это стимулирует значительные инвестиции в инструменты и технологии работы с большими данными. В своем отчете за август 2021 года компания IDC, занимающаяся исследованием рынка, оценила ожидаемые мировые расходы на системы больших данных и аналитики в $215,7 млрд в 2021 году, что на 10,1% больше, чем в прошлом году. Она также прогнозирует, что расходы будут расти на 12,8% в год до 2025 года.
Список технологий больших данных длинный: существует множество коммерческих продуктов, которые помогут организациям реализовать полный спектр аналитических инициатив на основе данных — от отчетности в реальном времени до приложений машинного обучения.
Кроме того, существует множество инструментов больших данных с открытым исходным кодом, некоторые из которых также предлагаются в коммерческих версиях или как часть платформ больших данных и управляемых услуг. Ниже представлен обзор 17 популярных инструментов и технологий с открытым исходным кодом для управления и анализа больших данных, перечисленных в алфавитном порядке с кратким описанием их ключевых функций и возможностей.
1. Airflow
Airflow — это платформа управления рабочими процессами для планирования и запуска сложных дата-пайплайнов в системах больших данных. Она позволяет инженерам по обработке данных и другим пользователям гарантировать, что каждая задача в рабочем процессе будет выполняться в установленном порядке и иметь доступ к необходимым системным ресурсам. Airflow также рекламируется как простой в использовании: Рабочие процессы создаются на языке программирования Python, и его можно использовать для построения моделей машинного обучения, передачи данных и других различных целей.
Платформа появилась на Airbnb в конце 2014 года и была официально объявлена как технология с открытым исходным кодом в середине 2015 года; в следующем году она присоединилась к программе инкубаторов Apache Software Foundation, а в 2019 году стала проектом верхнего уровня Apache. Airflow также включает следующие ключевые особенности:
модульная и масштабируемая архитектура, построенная на концепции направленных ациклических графов (DAG), которые иллюстрируют зависимости между различными задачами в рабочих процессах;
пользовательский интерфейс веб-приложения для визуализации дата-пайплайнов, мониторинга их продакшн-статуса и устранения неполадок; и
реди-мэйд интеграции с основными облачными платформами и другими сторонними сервисами.
2. Delta Lake
Databricks Inc., вендор программного обеспечения, основанный создателями механизма обработки Spark, разработал Delta Lake, а затем в 2019 году открыл доступ к технологии на базе Spark через Linux Foundation. Компания описывает Delta Lake как "слой хранения данных в открытом формате, который обеспечивает надежность, безопасность и производительность вашего озера данных для потоковых и пакетных операций".
Delta Lake не заменяет озера данных; скорее, она предназначена для того, чтобы расположиться поверх них и создать единое хранилище для структурированных, полуструктурированных и неструктурированных данных, устраняя тем самым их изолированность, которая может помешать приложениям больших данных. Кроме того, использование Delta Lake может помочь предотвратить повреждение данных, ускорить запросы, повысить свежесть данных и поддержать усилия по соблюдению нормативных требований, согласно Databricks. Технология также
поддерживает транзакции ACID;
хранит данные в открытом формате Apache Parquet; и
включает набор API, совместимых со Spark.
3. Drill
На сайте Apache Drill описывается как "распределенный механизм запросов с низкой задержкой для больших наборов данных, включая структурированные и полуструктурированные/вложенные данные". Drill может масштабироваться на тысячи узлов кластера и способен выполнять запросы к петабайтам данных, используя SQL и стандартные API подключения.
Разработанный для изучения наборов больших данных, Drill накладывается поверх множества источников данных, позволяя пользователям запрашивать широкий спектр информации в различных форматах, от Hadoop-файлов последовательностей и журналов сервера до баз данных NoSQL и облачных хранилищ объектов. Он также может делать следующее:
получать доступ к большинству реляционных баз данных через плагин;
работать с широко используемыми инструментами BI, такими как Tableau и Qlik; и
работать в любой распределенной кластерной среде, хотя для этого требуется программное обеспечение ZooKeeper от Apache для поддержания информации о кластерах.
4. Druid
Druid - это аналитическая база данных реального времени, обеспечивающая низкую задержку запросов, высокий параллелизм, многопользовательские возможности и мгновенную видимость потоковых данных. По словам ее сторонников, несколько конечных пользователей могут одновременно запрашивать данные, хранящиеся в Druid, без какого-либо воздействия на производительность.
Написанная на языке Java и созданная в 2011 году, Druid стала технологией Apache в 2018 году. Обычно она считается высокопроизводительной альтернативой традиционным хранилищам информации, которая лучше всего подходит для данных, управляемых событиями. Как и хранилище данных, она использует ориентированное на столбцы решение для хранения и может загружать файлы в пакетном режиме. Однако в ней также используются функции поисковых систем и баз данных временных рядов, включая следующие:
нативные инвертированные поисковые индексы для ускорения поиска и фильтрации данных;
разделение данных по времени и формирование запросов; и
гибкие схемы с собственной поддержкой полуструктурированных и вложенных данных.
5. Flink
Еще одна технология Apache с открытым исходным кодом, Flink — это фреймворк обработки потоков для распределенных, высокопроизводительных и всегда доступных приложений. Он поддерживает вычисления с учетом состояния над ограниченными и неограниченными потоками данных и может использоваться для пакетной, графовой и итеративной обработки.
Одним из основных преимуществ Flink, о которых говорят поклонники этой технологии, является ее скорость: она может обрабатывать миллионы событий в реальном времени при низкой задержке и высокой пропускной способности. Flink, разработанная для работы во всех распространенных кластерных средах, также включает следующие возможности:
вычисления в памяти с возможностью доступа к дисковому хранилищу при необходимости;
три уровня API для создания различных типов приложений; и
набор библиотек для комплексной обработки событий, машинного обучения и других распространенных случаев использования больших данных.
6. Hadoop
Распределенная среда для хранения данных и запуска приложений на кластерах стандартного аппаратного обеспечения (commodity hardware), (т.н. метод массовых кластерных вычислений). Hadoop была разработана как передовая технология работы с большими данными для обработки растущих объемов структурированной, неструктурированной и полуструктурированной информации. Впервые выпущенная в 2006 году, она стала практически синонимом больших данных; с тех пор ее частично затмили другие технологии, но она по-прежнему широко используется.
Hadoop состоит из четырех основных компонентов:
Hadoop Distributed File System (HDFS), которая разделяет информацию на блоки для хранения на узлах кластера, использует методы репликации для предотвращения потери данных и управляет доступом к ним;
YARN, сокращение от Yet Another Resource Negotiator, который планирует выполнение заданий на узлах кластера и выделяет под них системные ресурсы;
Hadoop MapReduce, встроенный механизм пакетной обработки, который разделяет большие объемы вычислений и запускает их на разных узлах для повышения скорости и балансировки нагрузки; и
Hadoop Common, общий набор утилит и библиотек.
Первоначально Hadoop была ориентирована только на выполнение пакетных приложений MapReduce. Добавление YARN в 2013 году открыло ее для других механизмов обработки и вариантов использования, но фреймворк по-прежнему тесно связан с MapReduce. Более широкая экосистема Apache Hadoop также включает в себя различные инструменты и дополнительные фреймворки для обработки, управления и анализа больших данных.
7. Hive
Hive — это программное обеспечение инфраструктуры хранилища данных на базе SQL для чтения, записи и управления большими датасетами в распределенных средах хранения. Оно было создано компанией Facebook, но затем стало открытым источником для компании Apache, которая продолжает развивать и поддерживать эту технологию.
Hive запускается поверх Hadoop и используется для обработки структурированной информации; точнее, оно применяется для обобщения и анализа данных, а также для запросов к большим объемам данных. Хотя его нельзя использовать для обработки транзакций в режиме онлайн, обновлений в реальном времени, запросов или заданий, требующих получения данных с малой задержкой, разработчики описывают Hive как масштабируемое, быстрое и гибкое.
Другие ключевые особенности включают следующее:
стандартная функциональность SQL для запросов и аналитики данных;
встроенный механизм, помогающий пользователям накладывать структуру на различные форматы данных; и
доступ к HDFS-файлам и файлам, хранящимся в других системах, таких как база данных Apache HBase.
8. HPCC Systems
HPCC Systems — это платформа обработки больших данных, разработанная компанией LexisNexis и получившая открытый исходный код в 2011 году. В соответствии со своим полным названием — High-Performance Computing Cluster — технология по своей сути представляет собой кластер компьютеров, созданный на основе стандартного аппаратного обеспечения для обработки, управления и доставки больших данных.
Продакшн-реди платформа озера данных, которая обеспечивает быструю разработку и исследование данных, HPCC Systems включает три основных компонента:
Thor, механизм переработки данных, который используется для очистки, объединения и преобразования данных, а также для профилирования, анализа и подготовки их к использованию в запросах;
Roxie, механизм доставки данных, используемый для предоставления подготовленной информации из системы очистки; и
Enterprise Control Language (ECL), язык программирования для разработки приложений.
9. Hudi
Hudi (произносится как "худи") — это сокращение от Hadoop Upserts Deletes and Incrementals. Еще одна технология с открытым исходным кодом, поддерживаемая Apache, используется для управления вводом и хранением больших аналитических датасетов на файловых системах, совместимых с Hadoop, включая HDFS и облачные сервисы хранения объектов.
Впервые разработанная компанией Uber, Hudi предназначена для обеспечения эффективного ввода и подготовки данных с низкой задержкой. Более того, она включает в себя структуру управления данными, которую организации могут использовать для выполнения следующих задач:
упростить инкрементную обработку данных и разработку дата-пайплайна;
улучшить качество информации в системах больших данных; и
управлять жизненным циклом датасетов.
10. Iceberg
Iceberg — это открытый формат таблицы, используемой для управления данными в озерах, что частично достигается путем отслеживания отдельных файлов с информацией в таблицах, а не в каталогах. Созданная компанией Netflix для использования со своими таблицами петабайтного размера, Iceberg теперь является проектом Apache. Согласно сайта, Iceberg обычно "используется в продакшне, где одна таблица может содержать десятки петабайт данных".
Разработанная для улучшения стандартных схем, существующих в таких инструментах, как Hive, Presto, Spark и Trino, таблица формата Iceberg имеет функции, аналогичные SQL в реляционных базах данных. Однако она также приспособлена для использования нескольких механизмов, работающих с одним и тем же датасетом. К другим примечательным особенностям относятся следующие:
эволюция схемы для модификации таблиц без необходимости переписывать или переносить данные;
скрытое разделение данных, что избавляет пользователей от необходимости поддерживать разделы; и
возможность "путешествия во времени", которая поддерживает воспроизводимые запросы с использованием одного и того же снапшота таблицы.
11. Kafka
Kafka — это платформа распределенной потоковой передачи событий, которая, по данным Apache, используется более чем 80% компаний из списка Fortune 100 и тысячами других организаций для высокопроизводительных дата-пайплайнов, потоковой аналитики, интеграции данных и критически важных приложений. Проще говоря, Kafka — это фреймворк для хранения, чтения и анализа потоковых данных.
Технология разделяет потоки информации и системы, удерживая потоки данных, чтобы затем использовать их в других местах. Она работает в распределенной среде и использует высокопроизводительный сетевой протокол TCP для связи с системами и приложениями. Kafka была создана компанией LinkedIn, а в 2011 году была передана компании Apache.
Ниже перечислены некоторые из ключевых компонентов Kafka:
набор из пяти основных API для Java и языка программирования Scala;
отказоустойчивость для серверов и клиентов в кластерах Kafka; и
эластичная масштабируемость до 1 000 "брокеров", или серверов хранения, на кластер.
12. Kylin
Kylin — это распределенное хранилище информации и аналитическая платформа для больших данных. Она предоставляет механизм аналитической обработки информации (OLAP), предназначенный для работы с очень большими массивами данных. Поскольку Kylin построена на базе других технологий Apache, включая Hadoop, Hive, Parquet и Spark, то она, по словам ее сторонников, может легко масштабироваться для обработки больших объемов данных.
Кроме того, она работает быстро, обеспечивая ответы на запросы, измеряемые миллисекундами. Также, Kylin обладает простым интерфейсом для многомерного анализа больших данных и интегрируется с Tableau, Microsoft Power BI и другими инструментами BI. Изначально Kylin была разработан компанией eBay, которая предоставила ее в качестве технологии с открытым исходным кодом в 2014 году; в следующем году она стал проектом верхнего уровня в рамках Apache. Среди других возможностей, которые она предоставляет, можно отметить следующие:
интерфейс ANSI SQL для многомерного анализа больших данных;
интеграция с Tableau, Microsoft Power BI и другими инструментами BI; и
предварительный расчет многомерных OLAP-кубов для ускорения аналитики.
13. Presto
Ранее известная как PrestoDB, эта система запросов SQL с открытым исходным кодом может одновременно обрабатывать как быстрые запросы, так и большие объемы информации в распределенных массивах данных. Presto оптимизирована для интерактивных запросов с низкой задержкой и масштабируется для поддержки аналитических приложений, работающих с несколькими петабайтами информации в хранилищах данных и других репозиториях.
Разработка Presto началась в Facebook в 2012 году. Когда ее создатели покинули компанию в 2018 году, технология раскололась на две ветви: PrestoDB, которую по-прежнему возглавляла Facebook, и PrestoSQL, которую запустили первоначальные разработчики. Так продолжалось до декабря 2020 года, когда PrestoSQL была переименована в Trino, а PrestoDB вернулась к названию Presto. В настоящее время проект Presto с открытым исходным кодом курируется Фондом Presto Foundation, который был создан как часть Linux Foundation в 2019 году.
Presto также включает следующие функции:
поддержка запросов к данным в Hive, различных базах данных и проприетарных хранилищах информации;
возможность объединять данные из нескольких источников в одном запросе; и
время отклика на запрос, которое обычно составляет от менее секунды до нескольких минут.
14. Samza
Samza — это система распределенной обработки потоков, созданная компанией LinkedIn и являющаяся в настоящее время проектом с открытым исходным кодом под управлением Apache. Согласно сайта проекта, Samza позволяет пользователям создавать стейтфул-приложения, способные в реальном времени обрабатывать данные из Kafka, HDFS и других источников.
Система может запускаться поверх Hadoop YARN или Kubernetes, также предлагается вариант автономного развертывания. На сайте Samza говорится, что она может обрабатывать "несколько терабайт" информации о состоянии данных с низкой задержкой и высокой пропускной способностью для быстрого анализа. При запуске пакетных приложений унифицированный API также может использовать тот же код, который был написан для работы с потоковыми данными. К другим особенностям относятся следующие:
встроенная интеграция с Hadoop, Kafka и некоторыми другими платформами данных;
возможность запуска в качестве встроенной библиотеки в приложениях на Java и Scala; и
функции отказоустойчивости, разработанные для быстрого восстановления после сбоев системы.
15. Spark
Spark — это механизм обработки и анализа данных в памяти, который может работать на кластерах, управляемых Hadoop YARN, Mesos и Kubernetes, или в автономном режиме. Он позволяет выполнять масштабные преобразования и анализ данных; может использоваться как для пакетных, так и потоковых приложений, а также для машинного обучения и обработки графов. Все это поддерживается следующим набором встроенных модулей и библиотек:
Spark SQL, для оптимизированной обработки структурированных данных с помощью SQL-запросов;
Spark Streaming и Structured Streaming, два модуля обработки потоков;
MLlib, библиотека машинного обучения, включающая алгоритмы и соответствующие инструменты; и
GraphX, API, который добавляет поддержку графовых приложений.
Доступ к информации можно получить из различных источников, включая HDFS, реляционные и NoSQL базы данных, а также датасеты в виде плоских файлов. Spark также поддерживает различные форматы файлов и предлагает разнообразный набор API для разработчиков.
Но его главная визитная карточка — скорость: разработчики Spark утверждают, что он может работать в 100 раз быстрее традиционного аналога MapReduce на пакетных заданиях при обработке в памяти. В результате Spark стал лучшим выбором для многих пакетных приложений в средах больших данных, а также функционировал как универсальный механизм. Впервые разработанный в Калифорнийском университете Беркли и в настоящее время поддерживаемый компанией Apache, он также может обрабатывать данные на диске, когда датасеты слишком велики, чтобы уместиться в доступной памяти.
16. Storm
Еще одна технология Apache с открытым исходным кодом, Storm — это распределенная система вычислений в реальном времени, предназначенная для надежной обработки неограниченных потоков данных. Согласно сайта проекта, она может использоваться для приложений, включающих аналитику в реальном времени, онлайновое машинное обучение и непрерывные вычисления, а также задания по извлечению, преобразованию и загрузке данных (ETL).
Кластеры Storm схожи с кластерами Hadoop, но приложения продолжают выполняться на постоянной основе, если их не остановить. Система отказоустойчива и гарантирует, что данные будут обработаны. Кроме того, на сайте Apache Storm говорится, что ее можно использовать с любым языком программирования, системой очередей сообщений и базой данных. Storm также включает следующие элементы:
функция Storm SQL, позволяющая выполнять SQL-запросы к потоковым датасетам;
Trident и Streams API, два других высокоуровневых интерфейса для обработки в Storm; и
использование технологии Apache Zookeeper для координации кластеров.
17. Trino
Как упоминалось выше, Trino — это одна из двух ветвей системы обработки запросов Presto. Известный как PrestoSQL до ребрендинга в декабре 2020 года, Trino "работает со смехотворной скоростью", по словам Trino Software Foundation. Эта группа, контролирующая разработку Trino, была первоначально создана в 2019 году как Presto Software Foundation; ее название также было изменено в рамках ребрендинга.
Trino позволяет пользователям запрашивать информацию независимо от того, где она хранится, с поддержкой нативного выполнения запросов в Hadoop и других репозиториях данных. Как и Presto, Trino также:
предназначена как для ситуативной интерактивной аналитики, так и для длительных пакетных запросов;
может объединять в запросах данные из нескольких систем; и
работает с Tableau, Power BI, R и другими инструментами BI и аналитики.
Также следует рассмотреть: Базы данных NoSQL
Базы данных NoSQL являются еще одним основным элементом технологии больших данных. Они отличаются от традиционных реляционных баз данных на основе SQL тем, что поддерживают гибкие схемы. Это делает их удобными для работы с огромными объемами всех типов информации - особенно с неструктурированными и полуструктурированными данными, которые плохо подходят для строгих схем, используемых в реляционных системах.
Программное обеспечение NoSQL появилось в конце 2000-х годов, чтобы помочь справиться с растущими объемами разнообразной информации, которую организации генерировали, собирали и хотели анализировать в рамках реализации инициатив по работе с большими данными. С тех пор базы данных NoSQL получили широкое распространение и в настоящее время используются на предприятиях различных отраслей. Многие из них являются технологиями с открытым исходным кодом, которые также предлагаются поставщиками в коммерческих версиях, а некоторые представляют собой проприетарные продукты, контролируемые одним вендором.
Кроме того, сами базы данных NoSQL бывают разных типов, которые поддерживают различные приложения для работы с большими данными. Вот четыре основные категории NoSQL с примерами доступных технологий в каждой из них:
Базы данных документов. Они хранят элементы данных в структурах, подобных документам, используя такие форматы, как JSON. Примеры включают Apache CouchDB, Couchbase Server, MarkLogic и MongoDB.
Графовые базы данных. Они соединяют "узлы" данных в графоподобные структуры, чтобы подчеркнуть взаимосвязи между информационными элементами. Примеры: AllegroGraph, Amazon Neptune и Neo4j.
Хранилища "ключ-значение". Они объединяют уникальные ключи и связанные с ними значения в относительно простую модель данных, которая легко масштабируется. Примерами являются Aerospike, Amazon DynamoDB и Redis.
Многоколоночные базы данных. Они хранят информацию в таблицах, которые могут содержать очень много столбцов для обработки огромного количества элементов данных. Примерами являются Cassandra, Google Cloud Bigtable и HBase.
Также были созданы мультимодельные базы данных с поддержкой различных NoSQL-подходов, а в некоторых случаях и SQL; примерами являются ArangoDB и Azure Cosmos DB от Microsoft. Другие вендоры NoSQL добавили поддержку мультимодельности в свои базы данных. Например, MarkLogic теперь включает хранилище графов, Couchbase Server поддерживает пары ключ-значение, а Redis предлагает модули баз данных документов и графов.
Приглашаем всех заинтересованных на открытое занятие по теме «Couchbase - документоориентированая NoSQL БД». На нем рассмотрим:
Задачи, основы архитектуры;
Основы построения отказоустойчивого кластера;
Анализ производительности кластера по сравнению с конкурентами — Mongo & Cassandra.
Регистрация по ссылке.