Apache CarbonData: еще один колоночный формат для больших данных

архитектура больших данных форматы Big Data, CarbonData курсы обучение разработчиков Apache Spark, CarbonData анализ данных с Apache Spark, обучение большим данным, курсы Big Data для разработчиков, CarbonData Spark, Школа Больших Данных Учебный центр Коммерсант

Формат данных в озере или гибридном хранилище типа Data LakeHouse сильно влияет на скорость выполнения аналитических запросов. Сегодня рассмотрим, как Apache CarbonData делает аналитику больших данных в реальном времени еще быстрее.

Что такое Apache CarbonData

Традиционные форматы данных, часто используемые в проектах Big Data, такие как CSV и AVRO, имеют определенные ограничения: неэффективное сжатие данных и их медленное извлечение, а также отсутствие универсальной поддержки всех типов данных. Хотя технически эти форматы позволяют реализовать индексирование по какому-либо из столбцов, на практике, эффективность такой индексации ниже, чем у Apache CarbonData с его встроенными возможностями многоуровневого индексирования, которое ускоряет сканирование и повышает эффективность выполнения запросов.

CarbonData — это индексированный колоночный формат данных, разработанный специально для OLAP-сценариев с большими данными в реальном времени. Это полностью индексированное колоночное собственное хранилище данных Hadoop создано для обработки тяжелых аналитических рабочих нагрузок и подробных запросов к большим данным с помощью Spark SQL

Колоночное хранение данных означает, что значения каждого столбца в наборе хранятся вместе, а не построчно. Это приводит к лучшему сжатию, так как значения в столбце часто похожи, и также позволяет более эффективно выполнять запросы, которым требуется только подмножество столбцов в таблице.

CarbonData позволяет быстрее выполнять интерактивные запросы по петабайтам данных благодаря многоуровневому индексированию, методам сжатия и кодирования, направленным на повышение производительности аналитических запросов с фильтрами и агрегатами. Многоуровневые индексы помогают сократить ненужное сканирование блоков данных, значительно ускоряя загрузку данных и обработку запросов. В стратегии многоуровневого индексирования на уровне блоков минимальный/максимальный индекс и индекс Блума помогают быстро обрезать блоки во время сканирования данных. При этом индекс и данные на уровне блока хранятся вместе, что ускоряет доступ к ним за счет сокращения количества операций дискового ввода-вывода в процессе запроса.

Уникальная организация данных ускоряет поиск и сокращает объем извлекаемых значений, а усовершенствованная оптимизация pushdown позволяет использовать API-интерфейс источника данных Spark, сокращая объем данных, передаваемых при shuffle-операциях.

Примечательно, что CarbonData поддерживает несколько форматов сериализации данных: CSV, TSV, JSON, AVRO, Parquet, ORC и другие. Это позволяет пользователям хранить данные в наиболее удобном формате, соответствующем их потребностям, обеспечивая универсальность и гибкость в обработке данных. CarbonData использует несколько методов кодирования, включая кодирование длин серий, дельта-кодирование и адаптивное кодирование. Эти методы, наряду с возможностями колоночного хранения, обеспечивают эффективное сжатие данных, сокращая потребление пространства без ущерба для качества данных.

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

Поскольку формат Apache CarbonData изначально был разработан для стека Big Data, он поддерживает параллельную загрузку данных благодаря многоядерной обработке, позволяя выполнять партицинирование, группировку и повторное разделение данных в рамках их предварительной обработки перед загрузкой в озеро или хранилище с гибридной архитектурой.

Наконец, CarbonData поддерживает все основные типы данных, от примитивных до комплексных, таких как массивы, структуры и сопоставления. Поэтому можно работать с данными из разных источников, от реляционных СУБД до NoSQL И файловых хранилищ.

Архитектура и возможности

Apache CarbonData состоит из нескольких уровней:

  • таблица – набор сегментов, каждый из которых представляет собой набор файлов данных;
  • сегмент – набор файлов с блоком данных;
  • блок данных содержит ряд страниц столбцов, которые организованы по столбцам;
  • страница хранит фактические данные, которые закодированы и сжаты.

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

CarbonData обладает богатым набором функций для аналитики больших данных:

  • собственный язык DDL-запросов для создания и управления таблицами, включая операции CREATE, UPDATE, DELETE, CTAS. Эти DDL-запросы соответствуют формату Hive, Spark SQL и поддерживают дополнительные свойства и конфигурации.
  • Собственный язык DML-запросов для загрузки и вставки данных с синтаксисом, аналогичным Apache Hive;
  • управление сегментами для эффективного управления инкрементальными загрузками таблиц, включая поддержку транзакций для выполняемых операций;
  • поддержка разделов, аналогичных Hive и собственные разделы CarbonData, поддерживающие разбиение по хэшу, списку и диапазону;
  • сжатие сегментов, которое также помогает улучшить фильтрацию запросов.
  • внешние таблицы, чтобы читать любой файл CarbonData, выводить его схему и предоставлять представление реляционной таблицы для выполнения SQL-запросов;
  • индексация с помощью фильтра Блума и Lucene для длинных текстовых данных;
  • материализованные представления — таблицы предварительной агрегации и соединения, которые могут поддерживать эффективную перезапись и обработку запросов. В CarbonData материализованные представления могут переписывать запросы для выборки из любой таблицы, включая внешние. Это особенно полезно для сохранения агрегированных данных из внешней таблицы фактов для перезаписи запроса и эффективного извлечения их из CarbonData.
  • Потоковая передача данных почти в реальном времени с помощью DSL для простого создания таблиц-источников и приемников Spark Streaming без необходимости разработки собственного приложения.
  • SDK для записи данных из приложений, созданных не с помощью фреймворка Apache Spark. Например, можно написать потоковое приложение-потребитель из Kafka и использовать CarbonData в качестве таблицы-приемника для хранения данных.
  • Интеграция с различными хранилищами данных: благодаря использованию API-интерфейса HDFS можно записывать данные в S3, OBS или любое облачное хранилище, поддерживающее протокол S3. Чтение и запись данных поддерживается с помощью Alluxio — виртуальной распределенной файловой системы с открытым исходным кодом.

Благодаря своей архитектуре CarbonData отлично подходит для аналитических рабочих нагрузок с большими данными в режиме реального времени. Например, в финтехе это могут быть сценарии обнаружения мошенничества, анализ рисков и обновление ежедневного баланса клиентов. В телекоме этот формат данных пригодится для использования в архитектуре систем, ориентированных на обнаружение аномалий сигналов, анализа записей GSM-данных для определения загрузки мачты в определенный период времени и повторной балансировки ее конфигурации, а также анализа пропускной способности потоковой передачи и качества сети. Аналогичным образом, на CarbonData можно построить озеро данных для IoT-систем, к примеру, в целях интерактивного мониторинга перемещений транспортных средств в режиме реального времени.

Hadoop для инженеров данных

Код курса
HDDE
Ближайшая дата курса
по запросу
Продолжительность
40 ак.часов
Стоимость обучения
120 000 руб.

Узнайте больше подробностей по проектированию и поддержке современных дата-архитектур в проектах аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://medium.com/@diehardankush/apache-carbondata-an-introduction-and-overview-19e440ecfc40
  2. https://carbondata.apache.org/introduction.html
Поиск по сайту