Что такое улей? Archiтекстура и режимы

⚡ Умное резюме

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

  • ???? Что это: Инструмент ETL и создания хранилищ данных, который добавляет таблицы, строки и столбцы поверх файлов, хранящихся в HDFS.
  • 🇧🇷 Метахранилище: Информация о схеме хранится в реляционном метахранилище, поддерживаемом Derby для одного пользователя и... MySQL для совместного доступа.
  • 🆚 В сравнении с СУБД: Hive проверяет схему при чтении, масштабируется горизонтально и отдает предпочтение масштабным сканированиям по сравнению с обновлениями на уровне строк, которые обрабатывает база данных.
  • ???? ️ Три слоя: Клиенты, сервисы и хранилище формируют архитектуру, а драйвер координирует работу компилятора, метаданных и механизма выполнения.
  • 🔀 Два режима: Локальный режим подходит для одного узла данных и небольших файлов, тогда как режим MapReduce распределяет выполнение по многоузловому кластеру.
  • ???? HiveServer2: Интерфейс HS2 на основе Thrift добавляет поддержку одновременной работы нескольких клиентов и аутентификацию для удаленных сессий.

Архитектура и режимы Hive

Что такое улей?

Hive — это инструмент для ETL-процессов и хранилищ данных, разработанный на основе распределенной файловой системы Hadoop (HDFS). Hive упрощает выполнение таких операций, как...

  • Инкапсуляция данных
  • Специальные запросы
  • Анализ огромных наборов данных

Важные характеристики Улья

Ниже приведены пункты, объясняющие, чем Hive отличается от обычной программы MapReduce.

  • В Hive сначала создаются таблицы и базы данных, а затем в эти таблицы загружаются данные.
  • Hive — это хранилище данных, предназначенное для управления и запроса только структурированных данных, хранящихся в таблицах.
  • При работе со структурированными данными MapReduce не обладает функциями оптимизации и повышения удобства использования, такими как пользовательские функции (UDF), в отличие от фреймворка Hive. Оптимизация запросов — это эффективный способ выполнения запросов с точки зрения производительности.
  • Язык программирования Hive, вдохновленный SQL, избавляет пользователя от сложностей программирования MapReduce. Он использует знакомые концепции из мира реляционных баз данных, такие как таблицы, строки, столбцы и схема, для упрощения обучения.
  • Программирование Hadoop работает с плоскими файлами. Поэтому Hive может использовать структуру каталогов для «раздел» данные для повышения производительности при выполнении определенных запросов.
  • Важным компонентом Hive является метахранилище, используемое для хранения информации о схеме. Это метахранилище обычно находится в реляционной базе данных. Мы можем взаимодействовать с Hive, используя такие методы, как...
    • Веб-интерфейс
    • Java Интерфейс подключения к базе данных (JDBC)
  • Большинство взаимодействий обычно происходит через интерфейс командной строки (CLI). Hive предоставляет CLI для написания запросов Hive с использованием языка запросов Hive (HQL).
  • В целом синтаксис HQL аналогичен синтаксису SQL Синтаксис, знакомый большинству аналитиков данных. Приведенный ниже пример запроса отображает все записи, присутствующие в указанной таблице.
    • Образец запроса : Выберите из
  • Hive поддерживает четыре формата файлов: ТЕКСТОВЫЙ ФАЙЛ, ПОСЛЕДОВАТЕЛЬНЫЙ ФАЙЛ, ORC и RCFILE (Запись столбчатого файла).
  • Для хранения метаданных одним пользователем Hive использует базу данных Derby, а для хранения метаданных несколькими пользователями или совместно используемых метаданных Hive использует MySQL.

Для настройки MySQL Для использования в качестве базы данных и хранения метаданных ознакомьтесь с руководством по этому вопросу. Настройка хранилища метаданных Hive с помощью MySQLчто является продолжением Руководство по установке Hive.

Некоторые ключевые моменты об Hive:

  • Основное различие между HQL и SQL заключается в том, что запрос Hive выполняется в инфраструктуре Hadoop, а не в традиционной базе данных.
  • Выполнение запросов Hive представляет собой последовательность автоматически сгенерированных операций. Уменьшение карты рабочие места.
  • Hive поддерживает концепции разделов и сегментов для упрощения извлечения данных при выполнении запроса клиентом.
  • Hive поддерживает пользовательские настройки UDF (пользовательские функции) для очистки данных, фильтрации и подобных работ. В соответствии с требованиями программистов можно определять пользовательские функции Hive.

Улей против реляционных баз данных

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

Реляционные базы данных имеют «схема при чтении и схема при записи»Сначала создается таблица, затем в нее вставляются данные. В таблицах реляционных баз данных можно выполнять такие функции, как вставка, обновление и изменение данных.

Улей «схема только для чтения»Таким образом, такие функции, как обновление и изменение, не работали в ранних версиях, поскольку запрос Hive в типичном кластере выполняется на нескольких узлах DataNode, что делало невозможным обновление и изменение данных на нескольких узлах (версии Hive ниже 0.13).

Hive также поддерживает «Читай много, пиши один раз» Благодаря этому в последних версиях таблицу можно обновлять после вставки данных.

ПРИМЕЧАНИЕ: В более новых версиях Hive появились обновленные функции. В Hive 0.14 были добавлены функции UPDATE и DELETE, а в последующих релизах была добавлена ​​полная поддержка транзакций ACID.

В таблице ниже приведено краткое сравнение.

Аспект Реляционная база данных Апачский улей
Проверка схемы При записи При чтении
Типичный объем данных Гигабайты в терабайты Терабайты в петабайты
Нагрузка Построчное чтение и запись OLTP Пакетный анализ полного сканирования
Язык запросов SQL HQL — диалект, вдохновлённый SQL.
Типы Механизм базы данных Задания распределенного кластера

Hive Archiтекстура

Приведенная ниже диаграмма объясняет следующее: Apache Архитектура улья в деталях.

Архитектурная схема Apache Hive, отображающая клиентов, сервисы, хранилище и вычислительные ресурсы.

Hive состоит в основном из 3 ключевых частей:

  1. Клиенты Hive
  2. Услуги улья
  3. Хранение и вычисления в Hive

Клиенты улья

Hive предоставляет различные драйверы для взаимодействия с различными типами приложений. Для приложений, использующих Thrift, он предоставляет клиент Thrift для связи.

До Java Для смежных приложений предоставляются драйверы JDBC. Для любых других типов приложений предоставляются драйверы ODBC. Эти клиенты и драйверы, в свою очередь, взаимодействуют с сервером Hive через службы Hive.

Услуги улья

Взаимодействие клиента с Hive осуществляется через сервисы Hive. Если клиент хочет выполнить какие-либо операции, связанные с запросами в Hive, ему необходимо взаимодействовать через сервисы Hive.

Интерфейс командной строки (CLI) выступает в качестве службы Hive для операций DDL. Все драйверы взаимодействуют с сервером Hive и основным драйвером в службах Hive, как показано на приведенной выше архитектурной схеме.

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

Хранение улья и вычисления

В свою очередь, службы Hive, такие как метахранилище, файловая система и клиент заданий, взаимодействуют с хранилищем Hive и выполняют следующие действия:

  • Метаданные о таблицах, созданных в Hive, хранятся в самом Hive. база данных метаданных.
  • Результаты запросов и данные, загруженные в таблицы, хранятся в кластере Hadoop. HDFS.

Последовательность выполнения заданий

Схема ниже tracЭто один запрос от пользовательского интерфейса к узлам данных и обратно.

Схема выполнения заданий в Hive tracотправка запроса из пользовательского интерфейса к узлам данных

Из приведенной выше диаграммы мы можем понять поток выполнения заданий в Hive с Hadoop. Поток данных в Hive ведет себя по следующей схеме.

  1. Выполнение запроса из пользовательского интерфейса (UI).
  2. Драйвер взаимодействует с компилятором для получения плана выполнения. (В данном случае под планом понимается процесс выполнения запроса и сбор связанной с ним метаинформации.)
  3. Компилятор создает план выполнения задания. Компилятор взаимодействует с хранилищем метаданных для получения запроса на метаданные.
  4. Метахранилище отправляет информацию о метаданных обратно компилятору.
  5. Компилятор передает драйверу предлагаемый план выполнения запроса.
  6. Драйвер отправляет планы выполнения в исполнительный механизм.
  7. Исполнительный механизм (EE) выступает в качестве моста между Hive и Hadoop для обработки запросов, включая операции DFS:
    • Сначала EE связывается с NameNode, а затем с DataNodes, чтобы получить значения, хранящиеся в таблицах.
    • EE извлекает необходимые записи из DataNodes. Фактические данные таблицы находятся только на узлах данных; из NameNode он извлекает только метаданные для запроса.
    • Он собирает фактические данные из узлов данных, связанных с упомянутым запросом.
    • EE осуществляет двустороннюю связь с хранилищем метаданных для выполнения операций DDL (языка определения данных), таких как: СОЗДАТЬ, УДАЛИТЬ и ИЗМЕНИТЬ В таблицах и базах данных хранится только информация о названиях. Метахранилище содержит только имена баз данных, таблиц и столбцов.
    • В свою очередь, EE взаимодействует с демонами Hadoop, такими как NameNode, DataNodes и job. tracker для выполнения запроса поверх файловой системы Hadoop
  1. Получение результатов от водителя
  2. Отправка результатов в исполнительный механизм. После получения результатов от узлов данных в исполнительный механизм, он отправляет результаты обратно драйверу и пользовательскому интерфейсу (фронтенду).

Hive поддерживает связь с файловой системой Hadoop и её демонами через механизм выполнения. Пунктирная стрелка на диаграмме показывает этот обмен данными.

Различные режимы Улья

Hive может работать в двух режимах в зависимости от размера узлов данных в Hadoop. Эти режимы следующие:

  • Локальный режим
  • режим MapReduce

Когда использовать локальный режим

  • Если Hadoop установлен в псевдораспределенном режиме с одним узлом данных, в этом режиме мы используем Hive.
  • Если размер данных достаточно мал, чтобы их можно было использовать только на одном локальном компьютере, мы можем использовать этот режим.
  • Обработка будет очень быстрой для небольших наборов данных, присутствующих на локальном компьютере.

Когда использовать режим MapReduce

  • Если Hadoop имеет несколько узлов данных, и данные распределены по этим узлам, в этом режиме мы используем Hive.
  • Он работает с большими объемами данных, и запросы выполняются параллельно.
  • В этом режиме можно обеспечить обработку больших наборов данных с более высокой производительностью.

В Hive можно задать свойство, указывающее, в каком режиме должен работать Hive. По умолчанию он работает в режиме MapReduce, а для локального режима можно использовать следующую настройку:

SET mapred.job.tracker=local;

Начиная с версии Hive 0.7, поддерживается режим, который автоматически запускает задания MapReduce в локальном режиме. В Hive 4.x движок по умолчанию — Apache Tez, поэтому это свойство применяется к устаревшему пути MapReduce.

Что такое Hive Server2 (HS2)?

HiveServer2 (HS2) — это серверный интерфейс, выполняющий следующие функции:

  • Позволяет удаленным клиентам выполнять запросы к Hive.
  • Извлекает результаты этих запросов.

В текущих версиях добавлены расширенные функции на основе Thrift RPC, такие как:

  • Многоклиентский параллелизм
  • Аутентификация

HS2 работает в фоновом режиме с Beeline и всеми сессиями JDBC или ODBC, поэтому он заменил однопользовательский интерфейс командной строки Hive. Операторы и встроенные функции HiveQL Следующим естественным шагом будет составление реферата.

Часто задаваемые вопросы (FAQ)

Hive — это слой пакетных запросов, который сканирует большие таблицы с помощью распределенных задач. HBase — это хранилище NoSQL, предназначенное для чтения и записи отдельных строк со скоростью в миллисекунды. Они решают противоположные задачи доступа и часто работают параллельно.

Hive работает на MapReduce, Apache Tez или Apache SparkMapReduce устарел, и Hive 4.x по умолчанию использует Tez, который хранит промежуточные результаты в памяти, а не записывает их на диск между этапами.

Управляемая таблица предоставляет Hive права собственности на метаданные и файлы, поэтому удалите её.ping Это удаляет данные из каталога хранилища. Внешняя таблица хранит только метаданные, и удаление данных происходит во внешней таблице.ping Это оставляет базовые файлы нетронутыми.

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

Copilot разрабатывает схемы соединений HiveQL, оконные функции и Java Шаблоны пользовательских функций (UDF) создаются на основе комментариев, что сокращает объем рутинной работы. Однако имена столбцов, ключи разделов и типы данных по-прежнему необходимо предварительно проверять на соответствие реальному метахранилищу.

Да. В Hive 0.14 были добавлены команды UPDATE и DELETE, а в более поздних версиях реализована полная поддержка ACID для транзакционных таблиц. Hive 4.x расширяет это за счет таблиц Apache Iceberg с изоляцией снимков и эволюцией схемы.

Все три используют SQL-запросы через одни и те же файлы. Hive предпочитает выполнять длительные пакетные задания и владеет метаданными, которые считывают другие. Spark SQL подходит для смешанных конвейеров обработки данных; Trino ориентирован на интерактивные запросы к нескольким источникам.

Да, в основном через Hive Metastore, который остается стандартным каталогом. SparkTrino, Presto и Flink читают данные. Сам Hive по-прежнему обрабатывает запланированные пакетные преобразования и загрузку данных в хранилище.

Подведем итог этой публикации следующим образом: