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

Что такое улей?
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 Архитектура улья в деталях.
Hive состоит в основном из 3 ключевых частей:
- Клиенты Hive
- Услуги улья
- Хранение и вычисления в 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 с Hadoop. Поток данных в Hive ведет себя по следующей схеме.
- Выполнение запроса из пользовательского интерфейса (UI).
- Драйвер взаимодействует с компилятором для получения плана выполнения. (В данном случае под планом понимается процесс выполнения запроса и сбор связанной с ним метаинформации.)
- Компилятор создает план выполнения задания. Компилятор взаимодействует с хранилищем метаданных для получения запроса на метаданные.
- Метахранилище отправляет информацию о метаданных обратно компилятору.
- Компилятор передает драйверу предлагаемый план выполнения запроса.
- Драйвер отправляет планы выполнения в исполнительный механизм.
- Исполнительный механизм (EE) выступает в качестве моста между Hive и Hadoop для обработки запросов, включая операции DFS:
- Сначала EE связывается с NameNode, а затем с DataNodes, чтобы получить значения, хранящиеся в таблицах.
- EE извлекает необходимые записи из DataNodes. Фактические данные таблицы находятся только на узлах данных; из NameNode он извлекает только метаданные для запроса.
- Он собирает фактические данные из узлов данных, связанных с упомянутым запросом.
- EE осуществляет двустороннюю связь с хранилищем метаданных для выполнения операций DDL (языка определения данных), таких как: СОЗДАТЬ, УДАЛИТЬ и ИЗМЕНИТЬ В таблицах и базах данных хранится только информация о названиях. Метахранилище содержит только имена баз данных, таблиц и столбцов.
- В свою очередь, EE взаимодействует с демонами Hadoop, такими как NameNode, DataNodes и job. tracker для выполнения запроса поверх файловой системы Hadoop
- Получение результатов от водителя
- Отправка результатов в исполнительный механизм. После получения результатов от узлов данных в исполнительный механизм, он отправляет результаты обратно драйверу и пользовательскому интерфейсу (фронтенду).
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 Следующим естественным шагом будет составление реферата.


