Documentation
🐘 Hadoop
Теория по Hive

Куратор раздела

Виндюков Евгений
Виндюков Евгений

Apache Hive

Hive

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

Проще говоря, Hive помогает аналитикам и дата-инженерам писать запросы в стиле SELECT, JOIN, GROUP BY, а дальше сам переводит их в задания для распределённого выполнения.


Зачем нужен Hive

  • Позволяет работать с большими файлами через SQL-подобный язык HiveQL.
  • Снимает необходимость писать MapReduce вручную.
  • Удобен для витрин, отчётов, ETL и пакетной аналитики.
  • Хорошо подходит для данных, которые уже лежат в файловом хранилище.

Как Hive работает

Сам запрос в Hive обычно проходит такой путь:

  1. Пользователь отправляет HiveQL запрос.
  2. Hive проверяет синтаксис и обращается к Metastore за метаданными.
  3. Планировщик строит план выполнения.
  4. Запрос превращается в задачи для одного из движков: MapReduce, Tez или Spark.
  5. Результат записывается обратно в таблицу, файл или возвращается пользователю.

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


Основные компоненты

Metastore

Хранит описание таблиц:

  • названия и типы колонок,
  • расположение данных,
  • партиции,
  • форматы файлов,
  • параметры таблиц.

Без Metastore Hive не понимает, как именно интерпретировать файлы в хранилище.

HiveServer2

Это серверный слой, через который к Hive подключаются клиенты, BI-инструменты и другие сервисы.

Driver и Compiler

Они принимают запрос, разбирают его, строят план и подготавливают выполнение.

Execution engine

Непосредственно исполняет запрос в кластере через выбранный движок.


Таблицы в Hive

Managed table

Hive управляет и метаданными, и файлами данных.
Если удалить таблицу, данные обычно удаляются вместе с ней.

External table

Hive хранит только метаданные, а сами данные лежат отдельно.
Это удобный вариант, если данными управляет другой процесс или если важно не потерять файлы при удалении таблицы.


Что важно знать на практике

  • Hive часто используют для batch-аналитики, а не для мгновенных интерактивных запросов.
  • Для ускорения работы очень важны partitioning и правильный выбор формата файлов, например Parquet или ORC.
  • В современных стеках Hive часто работает вместе с YARN, Tez, Spark и Hive Metastore.
  • Для частых обновлений и транзакционной нагрузки Hive подходит хуже, чем специализированные OLTP/OLAP СУБД.

Когда Hive особенно полезен

  • когда нужно быстро дать SQL-доступ к данным в Hadoop;
  • когда уже есть большое файловое хранилище и нужен слой метаданных;
  • когда строятся регулярные отчёты и витрины;
  • когда запросы выполняются пакетно, а не в режиме realtime.

Коротко

Hive - это SQL-оболочка над большими данными в Hadoop.
Он помогает описывать таблицы, читать файлы как реляционные данные и запускать тяжёлые аналитические запросы без ручного написания низкоуровневой распределённой логики.