Apache Hive

редактировать
Apache Hive
Apache Hive
Исходный автор (ы) Facebook
Разработчик (и) Соавторы
Первоначальный выпуск1 октября 2010 г.; 10 лет назад (2010-10-01)
Стабильный выпуск 3.1.2 / 26 августа 2019 г.; 13 месяцев назад (26.08.2019)
Репозиторий github.com / apache / hive
Написано наJava
Операционная система Кросс-платформенный
Доступно вSQL
Тип Хранилище данных
Лицензия Лицензия Apache 2.0
Веб-сайткуст.apache.org

Apache Hive - это программный проект хранилища данных, созданный на основе Apache Hadoop для обеспечения запросов и анализа данных. Hive предоставляет SQL -подобный интерфейс для запроса данных, хранящихся в различных базах данных и файловых системах, которые интегрируются с Hadoop. Традиционные SQL-запросы должны быть реализованы в Java API MapReduce для выполнения SQL-приложений и запросов к распределенным данным. Hive предоставляет необходимую абстракцию SQL для интеграции SQL-подобных запросов (HiveQL) в базовую Java без необходимости реализации запросов в низкоуровневом Java API. Поскольку большинство приложений для хранилищ данных работают с языками запросов на основе SQL, Hive помогает переносить приложения на основе SQL в Hadoop. Первоначально разработанный Facebook, Apache Hive используется и разрабатывается другими компаниями, такими как Netflix и Регулирующим органом финансовой отрасли (FINRA). Amazon поддерживает программный ответвление Apache Hive, включенное в Amazon Elastic MapReduce на Amazon Web Services.

Содержание
  • 1 Функции
  • 2 Архитектура
  • 3 HiveQL
    • 3.1 Пример
  • 4 Сравнение с традиционными базами данных
  • 5 Безопасность
  • 6 См. Также
  • 7 Ссылки
  • 8 Внешние ссылки
Функции

Apache Hive поддерживает анализ больших наборов данных, хранящихся в Hadoop. HDFS и совместимые файловые системы, такие как Amazon S3 filesystem и Alluxio. Он предоставляет SQL -подобный язык запросов под названием HiveQL со схемой при чтении и прозрачно преобразует запросы в задания MapReduce, Apache Tez и Spark. Все три механизма выполнения могут работать в согласователе ресурсов Hadoop, YARN (еще один согласователь ресурсов). Для ускорения запросов он предоставляет индексы, включая индексы растровых изображений. Другие функции Hive включают:

  • Индексирование для ускорения, тип индекса, включая сжатие, и индекс растрового изображения с версии 0.10, планируется больше типов индексов.
  • Различные типы хранения, такие как простой текст, RCFile, HBase, ORC и др.
  • Хранение метаданных в системе управления реляционными базами данных, что значительно сокращает время выполнения семантических проверяет во время выполнения запроса.
  • Работа со сжатыми данными, хранящимися в экосистеме Hadoop, с использованием алгоритмов, включая DEFLATE, BWT, snappy и т. д.
  • Встроенные пользовательские функции (UDF) для управления датами, строками и другими инструментами интеллектуального анализа данных. Hive поддерживает расширение набора UDF для обработки сценариев использования, не поддерживаемых встроенными функциями.
  • SQL-подобные запросы (HiveQL), которые неявно преобразуются в задания MapReduce, Tez или Spark.

Автор По умолчанию Hive хранит метаданные во встроенной базе данных Apache Derby, а также могут использоваться другие клиент-серверные базы данных, такие как MySQL.

Первые четыре формата файлов, поддерживаемые в Hive представлял собой простой текст, файл последовательности, оптимизированный столбчатый формат строк (ORC) и RCFile. Apache Parquet можно было читать через плагин в версиях позже 0.10 и изначально начиная с 0,13. Дополнительные плагины Hive поддерживают запросы к Bitcoin Blockchain.

Architecture

Основные компоненты архитектуры Hive:

  • Metastore: хранит метаданные для каждой из таблиц, таких как их схема и расположение. Он также включает метаданные раздела, которые помогают драйверу отслеживать прогресс различных наборов данных, распределенных по кластеру. Данные хранятся в традиционном формате СУБД. Метаданные помогают водителю отслеживать данные, и это очень важно. Следовательно, сервер резервного копирования регулярно реплицирует данные, которые могут быть восстановлены в случае потери данных.
  • Драйвер: действует как контроллер, который получает операторы HiveQL. Он запускает выполнение инструкции, создавая сеансы, и отслеживает жизненный цикл и ход выполнения. Он хранит необходимые метаданные, созданные во время выполнения оператора HiveQL. Драйвер также действует как точка сбора данных или результатов запроса, полученных после операции Reduce.
  • Компилятор: выполняет компиляцию запроса HiveQL, который преобразует запрос в план выполнения. Этот план содержит задачи и шаги, которые необходимо выполнить Hadoop MapReduce, чтобы получить выходные данные, переведенные запросом. Компилятор преобразует запрос в абстрактное синтаксическое дерево (AST). После проверки совместимости и ошибок времени компиляции он преобразует AST в направленный ациклический граф (DAG). DAG разделяет операторы на этапы и задачи MapReduce на основе входного запроса и данных.
  • Оптимизатор: выполняет различные преобразования в плане выполнения для получения оптимизированного DAG. Преобразования можно агрегировать вместе, например преобразовать конвейер соединений в одно соединение, для повышения производительности. Он также может разделять задачи, такие как применение преобразования к данным перед операцией сокращения, чтобы обеспечить лучшую производительность и масштабируемость. Однако логика преобразования, используемая для оптимизации, может быть изменена или конвейеризована с помощью другого оптимизатора.
  • Исполнитель: после компиляции и оптимизации исполнитель выполняет задачи. Он взаимодействует с системой отслеживания заданий Hadoop для планирования выполнения задач. Он обеспечивает конвейерную обработку задач, обеспечивая выполнение задачи с зависимостью только в том случае, если выполняются все другие предварительные условия.
  • CLI, UI и Thrift Server : команда -line interface (CLI) предоставляет пользовательский интерфейс для внешнего пользователя, который может взаимодействовать с Hive, отправляя запросы, инструкции и отслеживая состояние процесса. Сервер Thrift позволяет внешним клиентам взаимодействовать с Hive по сети, аналогично протоколам JDBC или ODBC.
HiveQL

Хотя HiveQL основан на SQL, это возможно. не строго следовать полному стандарту SQL-92. HiveQL предлагает расширения не в SQL, в том числе многотабличные вставки и создание таблицы как select, но предлагает только базовую поддержку для индексов. В HiveQL отсутствовала поддержка транзакций и материализованных представлений, а также ограниченная поддержка подзапросов. Поддержка вставки, обновления и удаления с полной функциональностью ACID стала доступной в версии 0.14.

Внутри компилятор переводит операторы HiveQL в направленные ациклический граф из заданий MapReduce, Tez или Spark, которые отправляются в Hadoop для выполнения.

Пример

Количество слов программа считает, сколько раз каждое слово встречается во входных данных. Подсчет слов можно записать в HiveQL как:

1 DROP TABLE IF EXISTS docs; 2 СОЗДАТЬ ТАБЛИЦУ документы (строка СТРОКА); 3 ЗАГРУЗИТЬ ДАННЫЕ INPATH 'input_file' ПЕРЕЗАПИСАТЬ В ТАБЛИЦУ документы; 4 СОЗДАТЬ ТАБЛИЦУ word_counts как 5 SELECT word, count (1) AS count FROM 6 (SELECT explode (split (line, '\ s')) AS word FROM docs) temp 7 GROUP BY word 8 ORDER BY word;

Краткое объяснение каждого из операторов следующее:

1 DROP TABLE IF EXISTS docs; 2 СОЗДАТЬ ТАБЛИЦУ документы (строка СТРОКА);

Проверяет, существует ли таблица docs, и удаляет ее, если существует. Создает новую таблицу с именем docsс единственным столбцом типа STRINGс именем line.

3 ЗАГРУЗИТЬ ДАННЫЕ INPATH 'input_file' OVERWRITE INTO TABLE docs;

Загружает указанный файл или каталог (в данном случае «input_file») в таблицу. OVERWRITEуказывает, что целевая таблица, в которую загружаются данные, должна быть перезаписана; В противном случае данные будут добавлены.

4 CREATE TABLE word_counts AS 5 SELECT word, count (1) AS count FROM 6 (SELECT explode (split (line, '\ s')) AS word FROM docs) temp 7 GROUP BY word 8 ORDER BY word;

Запрос CREATE TABLE word_counts AS SELECT word, count (1) AS countсоздает таблицу с именем word_countsс двумя столбцами: wordи количество. Этот запрос получает входные данные из внутреннего запроса (SELECT explode (split (line, '\ s')) AS word FROM docs) temp ". Этот запрос служит для разделения входных слов на разные строки временная таблица с псевдонимом temp. GROUP BY WORDгруппирует результаты на основе их ключей. В результате получается столбец count, содержащий количество вхождений для каждого слова столбца слово. ORDER BY WORDSсортирует слова в алфавитном порядке.

Сравнение с традиционными базами данных

Операции хранения и запросов Hive тесно напоминают традиционные базы данных. Хотя Hive является диалектом SQL, существует множество различий в структуре и работе Hive по сравнению с реляционными базами данных. Различия в основном связаны с тем, что Hive построен на основе Hadoop экосистемы, и должен соответствовать ограничениям Hadoop и MapReduce.

Схема применяется к таблице в традиционных базах данных. В таких традиционных базах данных таблица обычно обеспечивает соблюдение схемы при загрузке данных в таблицу. Это позволяет базе данных убедиться, что введенные данные соответствуют представлению таблицы, как указано в определении таблицы. Такой дизайн называется схемой при записи. Для сравнения, Hive не проверяет данные по схеме таблицы при записи. Вместо этого он впоследствии выполняет проверки во время выполнения, когда данные читаются. Эта модель называется схемой при чтении. У этих двух подходов есть свои преимущества и недостатки. Проверка данных по схеме таблицы во время загрузки увеличивает накладные расходы, поэтому традиционным базам данных требуется больше времени для загрузки данных. Проверки качества выполняются по данным во время загрузки, чтобы гарантировать, что данные не повреждены. Раннее обнаружение поврежденных данных обеспечивает раннюю обработку исключений. Поскольку таблицы вынуждены соответствовать схеме после / во время загрузки данных, они имеют лучшую производительность во время запроса. Hive, с другой стороны, может загружать данные динамически без какой-либо проверки схемы, обеспечивая быструю начальную загрузку, но с недостатком относительно более низкой производительности во время запроса. У Hive есть преимущество, когда схема недоступна во время загрузки, а вместо этого генерируется позже динамически.

Транзакции являются ключевыми операциями в традиционных базах данных. Как и любая типичная СУБД, Hive поддерживает все четыре свойства транзакций (ACID ): атомарность, согласованность, изоляция и Прочность. Транзакции в Hive были введены в Hive 0.13, но были ограничены только уровнем раздела. В последней версии Hive 0.14 эти функции были полностью добавлены для поддержки полных свойств ACID. Hive 0.14 и более поздних версий предоставляет различные транзакции на уровне строк, такие как INSERT, DELETE и UPDATE. Включение транзакций INSERT, UPDATE, DELETE требует установки соответствующих значений для свойств конфигурации, таких как hive.support.concurrency, hive.enforce.bucketingи hive.exec.dynamic. partition.mode.

Security

В Hive v0.7.0 добавлена ​​интеграция с безопасностью Hadoop. Hadoop начал использовать поддержку авторизации Kerberos для обеспечения безопасности. Kerberos позволяет взаимную аутентификацию между клиентом и сервером. В этой системе запрос клиента на билет передается вместе с запросом. В предыдущих версиях Hadoop было несколько проблем, таких как возможность пользователей подделать свое имя пользователя, задав свойство hadoop.job.ugi, а также операции MapReduce, выполняемые одним и тем же пользователем: hadoop или mapred. Благодаря интеграции Hive v0.7.0 с безопасностью Hadoop эти проблемы в значительной степени были исправлены. Задания TaskTracker запускаются пользователем, запустившим его, и имя пользователя больше не может быть подделано путем установки свойства hadoop.job.ugi. Разрешения для вновь созданных файлов в Hive диктует HDFS. Модель авторизации распределенной файловой системы Hadoop использует три объекта: пользователь, группа и другие с тремя разрешениями: чтение, запись и выполнение. Разрешения по умолчанию для вновь создаваемых файлов можно установить, изменив значение umask для переменной конфигурации Hive hive.files.umask.value.

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-11 20:10:34
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте