Apache Kudu

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:04, 13 июня 2020.
Apache Kudu
Apache Kudu Logo.png
Разработчики: Apache Kudu Committers and PMC Members
Постоянный выпуск: 1.11.1
Написана на: C++ (язык программирования)
Операционная система: Linux, macOS
Тип ПО: DBMS (Database Management System)
Лицензия: Apache License
Веб-сайт Official website

Apache Kudu — бесплатное и OSS (Open-Source Software) ориентированное на столбцы хранилище экосистемы Apache Hadoop. Он совместим с большинством сред обработки данных в среде Hadoop. Он обеспечивает полноту уровня хранения Hadoop для быстрой аналитики быстрых данных.[1] Проект с открытым исходным кодом для сборки Apache Kudu начался как внутренний проект в Cloudera.[2] Первая версия Apache Kudu 1.0 была выпущена 19 сентября 2016 года. [3]

Описание

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

  • Быстрая обработка рабочих нагрузок OLAP.
  • Интеграция с MapReduce, Spark и другими компонентами экосистемы Hadoop.
  • Тесная интеграция с Apache Impala, что делает его хорошей изменчивой альтернативой использованию HDFS с Apache Parquet.
  • Сильная, но гибкая модель согласованности, позволяющая выбирать требования согласованности для каждого запроса, в том числе возможность строго последовательной согласованности.
  • Высокая производительность для одновременного выполнения последовательных и случайных рабочих нагрузок.
  • Прост в администрировании и управлении.
  • Высокая доступность. Планшетные серверы и мастера используют согласованный алгоритм Raft, который обеспечивает доступность для чтения и записи, если доступно более половины общего числа реплик. Например, если доступны 2 из 3 реплик или 3 из 5 реплик, планшет доступен.
  • Операции чтения могут обслуживаться только читающими планшетами, даже в случае отказа ведущего планшета.
  • Модель структурированных данных.

Объединив все эти свойства, Kudu нацелена на поддержку семейств приложений, которые сложно или невозможно реализовать в технологиях хранения Hadoop текущего поколения. Вот несколько примеров приложений, для которых Kudu - отличное решение:

  • Отчеты о приложениях, в которых поступающие данные должны быть немедленно доступны для конечных пользователей
  • Приложения временного ряда, которые должны одновременно поддерживать:
  1. запросы к большим объемам исторических данных
  2. подробные запросы об отдельной сущности, которые должны возвращаться очень быстро
  • Приложения, использующие прогнозные модели для принятия решений в режиме реального времени с периодическим обновлением прогнозной модели на основе всех исторических данных

Особенности интеграции Kudu-Impala

CREATE / ALTER / DROP TABLE

Impala поддерживает создание, изменение и удаление таблиц, используя Kudu в качестве постоянного слоя. Таблицы следуют тому же внутреннему / внешнему подходу, что и другие таблицы в Impala, что позволяет гибко получать и запрашивать данные.

INSERT

Данные могут быть вставлены в таблицы Kudu в Impala, используя тот же синтаксис, что и любая другая таблица Impala, такие же, как таблицы, использующие HDFS или HBase для сохранения.

UPDATE / DELETE

Impala поддерживает команды SQL UPDATE и DELETE для изменения существующих данных в таблице Kudu построчно или в виде пакета. Синтаксис команд SQL выбран так, чтобы быть максимально совместимым с существующими стандартами. В дополнение к простым командам DELETE или UPDATE, вы можете указать сложные объединения с предложением FROM в подзапросе.

Гибкое разбиение

Подобно разделению таблиц в Hive, Kudu позволяет динамически предварительно разбивать таблицы по хэшам или разбивать на заранее определенное количество разделов, чтобы распределять записи и запросы равномерно по всему кластеру. Вы можете разбить на любое количество столбцов первичного ключа, любое количество хешей и необязательный список разделенных строк.

Параллельное сканирование

Для достижения максимально возможной производительности на современном оборудовании клиент Kudu, используемый Impala, распараллеливает сканирование на нескольких планшетах.

Высокоэффективные запросы

Там, где это возможно, Impala передает оценку предикатов в Kudu, чтобы предикаты оценивались как можно ближе к данным. Производительность запросов сопоставима с Parquet во многих рабочих нагрузках.

Архитектура

На следующей диаграмме показан кластер Kudu с тремя мастерами и несколькими планшетными серверами, каждый из которых обслуживает несколько планшетов. Это иллюстрирует, как консенсус Raft используется, чтобы учесть как лидеров, так и последователей как для мастеров, так и для планшетов. Кроме того, планшетный сервер может быть лидером для некоторых планшетов и последователем для других. Лидеры показаны желтым цветом, а подписчики - синим.

Сверхбыстрое хранение столбцов Как и большинство современных хранилищ аналитических данных, Kudu организует свои данные по столбцам, а не по строкам. Хранение столбцов позволяет эффективно кодировать и сжимать. Например, строковое поле с несколькими уникальными значениями может использовать только несколько битов на строку хранения. Благодаря таким методам, как кодирование по длине прогона, дифференциальное кодирование и векторизованная битовая упаковка, Kudu быстро считывает данные и экономит место при их хранении.

Хранение в столбцах также значительно сокращает объем ввода-вывода данных, необходимый для обслуживания аналитических запросов. Используя такие методы, как ленивая материализация данных и предикатное нажатие, Kudu может выполнять задачу найти иголку в стоге сена по миллиардам строк и терабайт данных в считанные секунды.

Процесс установки

Источники

  1. https://kudu.apache.org/
  2. "Почему Kudu был разработан внутри Cloudera до его выпуска?". 2017-05-21. Retrieved 2017-05-21. 
  3. "Apache Kudu выпуск". 2017-05-21. Archived from the original on 2017-05-21. Retrieved 2017-05-21. Получено 2017-05-21 . Kudu 1.0.0 был выпущен 19 сентября 2016 года. Это первый релиз, который не считается «бета». […] Kudu 0.5.0 (бета) была выпущена 28 сентября 2015 года. Это была первая публичная версия Kudu..