Jump to content

Улей Апачей

Улей Апачей
Оригинальный автор(ы) Фейсбук, Инк.
Разработчик(и) Авторы
Первоначальный выпуск 1 октября 2010 г .; 13 лет назад ( 01.10.2010 ) [1]
Стабильная версия
3.1.3 / 8 апреля 2022 г .; 2 года назад ( 08.04.2022 ) [2]
Предварительный выпуск
4.0.0-бета-1 / 14 августа 2023 г .; 11 месяцев назад ( 14.08.2023 ) [2]
Репозиторий github /апач /улей
Написано в Ява
Операционная система Кросс-платформенный
Доступно в SQL
Тип Хранилище данных
Лицензия Лицензия Апач 2.0
Веб-сайт улей .apache .org

Apache Hive — это проект программного обеспечения для хранения данных . Он построен на базе Apache Hadoop для обеспечения запроса и анализа данных. [3] [4] Hive предоставляет SQL-подобный интерфейс для запроса данных, хранящихся в различных базах данных и файловых системах, которые интегрируются с Hadoop. Традиционные SQL-запросы должны быть реализованы в MapReduce Java API для выполнения SQL-приложений и запросов к распределенным данным.

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

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

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

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

Первыми четырьмя форматами файлов, поддерживаемыми в Hive, были обычный текст, [13] файл последовательности, формат оптимизированных столбцов строк (ORC) [14] [15] и RCFile . [16] [17] Apache Parquet можно читать через плагин в версиях позже 0.10 и изначально начиная с 0.13. [18] [19]

Архитектура

[ редактировать ]

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

  • Metastore: хранит метаданные для каждой таблицы, такие как их схема и расположение. Он также включает метаданные раздела, которые помогают драйверу отслеживать ход выполнения различных наборов данных, распределенных по кластеру. [20] Данные хранятся в традиционном формате РСУБД . Метаданные помогают водителю отслеживать данные, и это очень важно. Следовательно, сервер резервного копирования регулярно реплицирует данные, которые можно восстановить в случае потери данных.
  • Драйвер: действует как контроллер, который получает операторы HiveQL. Он начинает выполнение оператора путем создания сеансов и отслеживает жизненный цикл и ход выполнения. Он хранит необходимые метаданные, сгенерированные во время выполнения оператора HiveQL. Драйвер также действует как точка сбора данных или результатов запроса, полученных после операции сокращения. [16]
  • Компилятор: выполняет компиляцию запроса HiveQL, которая преобразует запрос в план выполнения. Этот план содержит задачи и шаги, которые необходимо выполнить Hadoop MapReduce, чтобы получить выходные данные, преобразованные запросом. Компилятор преобразует запрос в абстрактное синтаксическое дерево (AST). После проверки совместимости и ошибок времени компиляции он преобразует AST в направленный ациклический граф (DAG). [21] Группа обеспечения доступности баз данных делит операторов на этапы и задачи MapReduce на основе входного запроса и данных. [20]
  • Оптимизатор: выполняет различные преобразования в плане выполнения для получения оптимизированной группы обеспечения доступности баз данных. Преобразования можно агрегировать вместе, например, конвертировать конвейер объединений в одно соединение, чтобы повысить производительность. [22] Он также может разделить задачи, например применить преобразование данных перед сокращенной операцией, чтобы обеспечить лучшую производительность и масштабируемость. Однако логика преобразования, используемая для оптимизации, может быть изменена или конвейеризирована с помощью другого оптимизатора. [16] Оптимизатор YSmart [23] является частью Apache Hive. Этот коррелированный оптимизатор объединяет коррелированные задания MapReduce в одно задание MapReduce, что значительно сокращает время выполнения.
  • Исполнитель: после компиляции и оптимизации исполнитель выполняет задачи. Он взаимодействует с системой отслеживания заданий Hadoop для планирования выполнения задач. Он заботится о конвейерной передаче задач, гарантируя, что задача с зависимостью будет выполнена только в том случае, если выполнены все остальные предварительные условия. [22]
  • CLI, пользовательский интерфейс и Thrift Server : интерфейс командной строки (CLI) предоставляет пользовательский интерфейс внешнему пользователю для взаимодействия с Hive путем отправки запросов и инструкций, а также мониторинга состояния процесса. Сервер Thrift позволяет внешним клиентам взаимодействовать с Hive по сети, аналогично протоколам JDBC или ODBC . [24]

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

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

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

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);
LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;
CREATE TABLE word_counts AS
SELECT word, count(1) AS count FROM
 (SELECT explode(split(line, '\s')) AS word FROM docs) temp
GROUP BY word
ORDER BY word;

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

DROP TABLE IF EXISTS docs;
CREATE TABLE docs (line STRING);

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

LOAD DATA INPATH 'input_file' OVERWRITE INTO TABLE docs;

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

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

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

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

[ редактировать ]

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

Схема применяется к таблице в традиционных базах данных. В таких традиционных базах данных таблица обычно применяет схему при загрузке данных в таблицу. Это позволяет базе данных убедиться, что введенные данные соответствуют представлению таблицы, указанному в определении таблицы. Эта конструкция называется схемой записи . Для сравнения, Hive не сверяет данные со схемой таблицы при записи. Вместо этого он впоследствии выполняет проверки во время чтения данных. Эта модель называется схемой чтения . [25] Оба подхода имеют свои преимущества и недостатки.

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

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

Безопасность

[ редактировать ]

В 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 использует три объекта: пользователя, группу и других с тремя разрешениями: чтение, запись и выполнение. Разрешения по умолчанию для вновь создаваемых файлов можно установить, изменив значение снятия маски для переменной конфигурации Hive. hive.files.umask.value. [5]

См. также

[ редактировать ]
  1. ^ «Выпуск-1.0.0 · apache/Hive» . Гитхаб .
  2. ^ Jump up to: а б «Apache Hive — Загрузки» . Проверено 21 ноября 2022 г.
  3. ^ Друзья, Джейсон (2009). Про Хадуп . Апресс . ISBN  978-1-4302-1942-2 .
  4. ^ Инь Хуай, Ашутош Чаухан, Алан Гейтс, Гюнтер Хаглейтнер, Эрик Н. Хэнсон, Оуэн О'Мэлли, Джитендра Панди, Юань Юань, Рубао Ли и Сяодун Чжан (2014). «Основные технические достижения в Apache Hive» . СИГМОД 14. С. 1235–1246. дои : 10.1145/2588555.2595630 . {{cite conference}}: CS1 maint: несколько имен: список авторов ( ссылка )
  5. ^ Jump up to: а б с Программирование Hive [Книга] .
  6. ^ Пример использования Hive/Hadoop
  7. ^ Данные OSCON 2011, Адриан Кокрофт, «Поток данных в Netflix» на YouTube
  8. ^ Руководство разработчика Amazon Elastic MapReduce
  9. ^ Руководство по языку HiveQL
  10. ^ Апач Тез
  11. ^ Руководство по языку Hive
  12. ^ Лам, Чак (2010). Hadoop в действии . Публикации Мэннинга . ISBN  978-1-935182-19-1 .
  13. ^ «Оптимизация Hadoop и больших данных с помощью Text и HiveОптимизация Hadoop и больших данных с помощью Text и Hive» . Архивировано из оригинала 15 ноября 2014 г. Проверено 16 ноября 2014 г.
  14. ^ «Руководство по языку ORC» . Вики проекта Hive . Проверено 24 апреля 2017 г.
  15. ^ Инь Хуай, Сиюань Ма, Рубао Ли, Оуэн О'Мэлли и Сяодун Чжан (2013). «Понимание базовой структуры и основных проблем методов размещения таблиц в кластерах» . ВЛДБ' 39. С. 1750–1761. CiteSeerX   10.1.1.406.4342 . дои : 10.14778/2556549.2556559 . {{cite conference}}: CS1 maint: несколько имен: список авторов ( ссылка )
  16. ^ Jump up to: а б с «Хранилище данных Facebook в петабайтном масштабе с использованием Hive и Hadoop» (PDF) . Архивировано из оригинала (PDF) 28 июля 2011 г. Проверено 9 сентября 2011 г.
  17. ^ Юнцян Хэ, Рубао Ли, Инь Хуай, Чжэн Шао, Намит Джайн, Сяодун Чжан и Чживэй Сюй (2011). «RCFile: быстрая и экономичная структура размещения данных в складских системах на основе MapReduce» . 27-я Международная конференция IEEE по инженерии данных. {{cite conference}}: CS1 maint: несколько имен: список авторов ( ссылка )
  18. ^ «Паркет» . 18 декабря 2014 г. Архивировано из оригинала 2 февраля 2015 г. Проверено 2 февраля 2015 г.
  19. ^ Мэсси, Мэтт (21 августа 2013 г.). «Мощное трио больших данных: Spark, Parquet и Avro» . zenfractal.com . Архивировано из оригинала 2 февраля 2015 года . Проверено 2 февраля 2015 г.
  20. ^ Jump up to: а б «Дизайн — Apache Hive — Apache Software Foundation» . cwiki.apache.org . Проверено 12 сентября 2016 г.
  21. ^ «Абстрактное синтаксическое дерево» . c2.com . Проверено 12 сентября 2016 г.
  22. ^ Jump up to: а б Докероглу, Тансел; Озал, Серкан; Баир, Мурат Али; Чинар, Мухаммет Серкан; Косар, Ахмет (29 июля 2014 г.). «Повышение производительности Hadoop Hive за счет совместного использования задач сканирования и вычислений» . Журнал облачных вычислений . 3 (1): 1–11. дои : 10.1186/s13677-014-0012-6 .
  23. ^ Рубао Ли, Тянь Ло, Инь Хуай, Фушенг Ван, Юнцян Хэ и Сяодун Чжан (2011). «YSmart: еще один переводчик SQL-to-MapReduce» . 31-я Международная конференция по распределенным вычислительным системам. стр. 25–36. {{cite conference}}: CS1 maint: несколько имен: список авторов ( ссылка )
  24. ^ «HiveServer — Apache Hive — Apache Software Foundation» . cwiki.apache.org . Проверено 12 сентября 2016 г.
  25. ^ Jump up to: а б с Уайт, Том (2010). Hadoop: полное руководство . О'Рейли Медиа . ISBN  978-1-4493-8973-4 .
  26. ^ Руководство по языку Hive
  27. ^ ACID и транзакции в Hive
  28. ^ «Hive: складское решение на основе MapReduce Framework» (PDF) . Архивировано из оригинала (PDF) 8 октября 2013 г. Проверено 3 сентября 2011 г.
  29. ^ «Введение в транзакции Hive» . datametica.com . Архивировано из оригинала 3 сентября 2016 г. Проверено 12 сентября 2016 г.
  30. ^ «Транзакции Hive — Apache Hive — Apache Software Foundation» . cwiki.apache.org . Проверено 12 сентября 2016 г.
  31. ^ «Свойства конфигурации — Apache Hive — Apache Software Foundation» . cwiki.apache.org . Проверено 12 сентября 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 633c9e3c505e4bd602eba6e99d0707fa__1719919620
URL1:https://arc.ask3.ru/arc/aa/63/fa/633c9e3c505e4bd602eba6e99d0707fa.html
Заголовок, (Title) документа по адресу, URL1:
Apache Hive - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)