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

Apache Hive
Hive - это SQL-подобный слой для работы с большими данными в экосистеме Hadoop.
Он нужен тогда, когда данные уже лежат в HDFS, S3 или другом хранилище, а читать и агрегировать их хочется через знакомый SQL, а не через MapReduce-код.
Проще говоря, Hive помогает аналитикам и дата-инженерам писать запросы в стиле SELECT, JOIN, GROUP BY, а дальше сам переводит их в задания для распределённого выполнения.
Зачем нужен Hive
- Позволяет работать с большими файлами через SQL-подобный язык HiveQL.
- Снимает необходимость писать MapReduce вручную.
- Удобен для витрин, отчётов, ETL и пакетной аналитики.
- Хорошо подходит для данных, которые уже лежат в файловом хранилище.
Как Hive работает
Сам запрос в Hive обычно проходит такой путь:
- Пользователь отправляет
HiveQLзапрос. - Hive проверяет синтаксис и обращается к Metastore за метаданными.
- Планировщик строит план выполнения.
- Запрос превращается в задачи для одного из движков: MapReduce, Tez или Spark.
- Результат записывается обратно в таблицу, файл или возвращается пользователю.
Важно помнить, что 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.
Он помогает описывать таблицы, читать файлы как реляционные данные и запускать тяжёлые аналитические запросы без ручного написания низкоуровневой распределённой логики.