Какво е Hive? Archiтекстура и режими
⚡ Умно обобщение
Hive е SQL слоят на екосистемата Hadoop, превръщайки HiveQL операторите в разпределени задачи, които четат структурирани данни, вече намиращи се на HDFS, така че анализаторите заявяват петабайтови таблици, без сами да пишат MapReduce код.

Какво е Hive?
Hive е ETL и инструмент за съхранение на данни, разработен върху Hadoop Distributed File System (HDFS). Hive улеснява извършването на операции като
- Капсулиране на данни
- Ad-hoc заявки
- Анализ на огромни масиви от данни
Важни характеристики на Hive
Точките по-долу обясняват какво отличава Hive от обикновена MapReduce програма.
- В Hive първо се създават таблици и бази данни и след това данните се зареждат в тези таблици.
- Hive е хранилище за данни, предназначено за управление и заявки само до структурирани данни, съхранявани в таблици.
- Докато работи със структурирани данни, MapReduce няма функции за оптимизация и използваемост като UDF, но рамката Hive има. Оптимизацията на заявки се отнася до ефективен начин за изпълнение на заявки по отношение на производителността.
- Вдъхновеният от SQL език на Hive отделя потребителя от сложността на програмирането с MapReduce. Той използва повторно познати концепции от света на релационните бази данни, като таблици, редове, колони и схеми, за по-лесно усвояване.
- Програмирането на Hadoop работи с плоски файлове. Така че Hive може да използва структури от директории, за да „дял“ данни за подобряване на производителността при определени заявки.
- Важен компонент на Hive е метахранилището, използвано за съхраняване на информация за схемата. Това метахранилище обикновено се намира в релационна база данни. Можем да взаимодействаме с Hive, използвайки методи като
- Уеб GUI
- Java Интерфейс за свързване на бази данни (JDBC).
- Повечето взаимодействия обикновено се осъществяват през интерфейс на командния ред (CLI). Hive предоставя CLI за писане на Hive заявки, използвайки Hive Query Language (HQL).
- Като цяло синтаксисът на HQL е подобен на SQL синтаксис, с който повечето анализатори на данни са запознати. Примерната заявка по-долу показва всички записи, присъстващи в споменатото име на таблица.
- Примерна заявка : Изберете * от
- Hive поддържа четири файлови формата, а именно TEXTFILE, SEQUENCEFILE, ORC и RCFILE (Запис на колонен файл).
- За съхранение на метаданни за един потребител, Hive използва базата данни Derby, а за съхранение на метаданни за множество потребители или споделени метаданни Hive използва MySQL.
За настройка MySQL като базата данни и за съхраняване на метаданни, вижте урока за конфигуриране на метахранилището на Hive с MySQL, което е продължение на Ръководство за инсталиране на кошер.
Някои от ключовите точки за Hive:
- Основната разлика между HQL и SQL е, че заявката към Hive се изпълнява върху инфраструктурата на Hadoop, а не върху традиционна база данни.
- Изпълнението на заявка в Hive е поредица от автоматично генерирани MapReduce работни места.
- Hive поддържа концепции за дялове и кофи за лесно извличане на данни, когато клиентът изпълнява заявката.
- Hive поддържа персонализирани настройки UDF (потребителски дефинирани функции) за почистване на данни, филтриране и подобна работа. Според изискванията на програмистите, могат да се дефинират Hive UDF.
Кошер срещу релационни бази данни
Hive изпълнява функции, които релационните бази данни не могат. Когато данните са в петабайти, връщането на резултати за секунди е важно и Hive прави това ефективно. Ключовите разлики са следните.
Релационните бази данни са от „схема при четене и схема при запис“: първо се създава таблица, след което в нея се вмъкват данни. В релационните таблици на базата данни могат да се извършват функции като вмъкване, актуализиране и модификации.
Кошерът е „схема само за четене“Така че функции като актуализиране и модификация не работеха в ранните версии, защото заявка към Hive в типичен клъстер се изпълнява в множество DataNode, което правеше невъзможно актуализирането и модифицирането на данни в множество възли (Hive версии под 0.13).
Hive също така поддържа „Прочетете много, пишете веднъж“ шаблон, така че в по-новите версии таблицата може да бъде актуализирана след вмъкване.
ЗАБЕЛЕЖКА: По-новите версии на Hive идват с актуализирани функции. Hive 0.14 въведе UPDATE и DELETE като нови функции, а по-късните версии добавиха пълна поддръжка на ACID транзакции.
Таблицата по-долу обобщава сравнението.
| Аспект | Релационна база данни | Apache Hive |
|---|---|---|
| Валидиране на схемата | При писане | При четене |
| Типичен обем данни | Гигабайти в терабайти | Терабайти в петабайти |
| Натоварване | OLTP чете и пише на ниво ред | Пълно сканиране на пакетен анализ |
| Език за заявки | SQL | HQL, диалект, вдъхновен от SQL |
| Изпълнение | Двигател на база данни | Разпределени клъстерни задачи |
Кошер Archiтекстура
Диаграмата по-долу обяснява Apache Архитектура на кошера в детайли.
Кошерът се състои главно от 3 основни части:
- Клиенти на кошера
- Услуги за кошери
- Съхранение и изчисления в кошера
Клиенти на Hive
Hive предоставя различни драйвери за комуникация с различни видове приложения. За приложения, базирани на Thrift, той предоставя Thrift клиент за комуникация.
За Java За свързани приложения, той предоставя JDBC драйвери. За всеки друг тип приложение, той предоставя ODBC драйвери. Тези клиенти и драйвери от своя страна комуникират със сървъра на Hive в услугите на Hive.
Hive Services
Взаимодействията на клиента с Hive се осъществяват чрез Hive услугите. Ако клиентът иска да извърши някаква операция, свързана със заявки, в Hive, той трябва да комуникира чрез Hive услугите.
CLI действа като услуга на Hive за DDL операции. Всички драйвери комуникират със сървъра на Hive и главния драйвер в услугите на Hive, както е показано на архитектурната диаграма по-горе.
Драйверът в услугите на Hive е основният драйвер: той комуникира с JDBC, ODBC и други специфични за клиента приложения, след което предава техните заявки към метахранилището и файловата система за по-нататъшна обработка.
Съхранение и компютри в Hive
Услугите на Hive, като метахранилището, файловата система и клиентът на заданието, от своя страна комуникират със хранилището на Hive и извършват следните действия:
- Метаданните за таблици, създадени в Hive, се съхраняват в Hive. база данни за метахранилища.
- Резултатите от заявките и данните, заредени в таблиците, се съхраняват в клъстера Hadoop на HDFS.
Поток на изпълнение на задачата
Диаграмата по-долу tracизвършва една заявка от потребителския интерфейс към DataNodes и обратно.
От горната диаграма можем да разберем потока на изпълнение на задачи в Hive с Hadoop. Потокът от данни в Hive се държи по следния модел.
- Изпълнение на заявка от потребителския интерфейс (UI)
- Драйверът взаимодейства с компилатора, за да получи плана. (Тук планът се отнася до процеса на изпълнение на заявката и свързаното с него събиране на метаданни.)
- Компилаторът създава план за изпълнение на задачата. Компилаторът комуникира с метахранилището, за да получи заявката за метаданни.
- Метахранилището изпраща информация за метаданни обратно на компилатора
- Компилаторът комуникира с драйвера с предложения план за изпълнение на заявката.
- Драйверът изпраща планове за изпълнение към механизма за изпълнение
- Изпълнителният механизъм (EE) действа като мост между Hive и Hadoop за обработка на заявката, включително DFS операциите:
- EE първо се свързва с NameNode, а след това с DataNode, за да получи стойностите, съхранени в таблиците.
- EE извлича желаните записи от DataNode-ите. Действителните данни от таблицата се намират само във възлите с данни; от NameNode извлича само метаданни за заявката.
- Събира действителни данни от възлите за данни, свързани със споменатата заявка
- EE комуникира двупосочно с метахранилището, за да извършва DDL (език за дефиниране на данни) операции, като например СЪЗДАВАНЕ, ИЗПУСКВАНЕ и ПРОМЯНА върху таблици и бази данни. Метахранилището съхранява само имена на бази данни, таблици и колони.
- EE от своя страна комуникира с демони на Hadoop, като NameNode, DataNodes и job. tracker за изпълнение на заявката върху файловата система Hadoop
- Извличане на резултати от драйвера
- Изпращане на резултати към изпълнителния механизъм. След като резултатите бъдат извлечени от възлите за данни към EE, той ги изпраща обратно към драйвера и към потребителския интерфейс (front-end).
Hive поддържа връзка с файловата система Hadoop и нейните демони чрез механизма за изпълнение. Пунктираната стрелка на диаграмата показва тази комуникация.
Различни режими на Hive
Hive може да работи в два режима в зависимост от размера на възлите за данни в Hadoop. Тези режими са:
- Местен режим
- Режим MapReduce
Кога да използвате локален режим
- Ако Hadoop е инсталиран в псевдоразпределен режим с един възел за данни, използваме Hive в този режим.
- Ако размерът на данните е достатъчно малък, за да бъде ограничен до една локална машина, можем да използваме този режим
- Обработката ще бъде много бърза на по-малки набори от данни, налични в локалната машина
Кога да използвате режим MapReduce
- Ако Hadoop има множество възли за данни и данните са разпределени между различните възли, използваме Hive в този режим.
- Изпълнява се с големи количества данни и заявката се изпълнява паралелно.
- Чрез този режим може да се постигне обработка на големи набори от данни с по-добра производителност
В Hive можем да зададем свойство, което да указва в кой режим Hive трябва да работи. По подразбиране работи в режим MapReduce, а за локален режим можете да използвате следната настройка:
SET mapred.job.tracker=local;
От версия 0.7 на Hive нататък се поддържа режим, който автоматично изпълнява MapReduce задачи в локален режим. В Hive 4.x енджинът по подразбиране е Apache Tez, така че това свойство се отнася за стария път MapReduce.
Какво е Hive Server2 (HS2)?
HiveServer2 (HS2) е сървърен интерфейс, който изпълнява следните функции:
- Позволява на отдалечени клиенти да изпълняват заявки срещу Hive
- Извлича резултатите от тези заявки
Текущите версии добавят разширени функции, базирани на Thrift RPC, като например:
- Мултиклиентска паралелност
- заверка
HS2 стои зад Beeline и всяка JDBC или ODBC сесия, поради което замени еднопотребителския Hive CLI. HiveQL оператори и вградени функции препратката е естествената следваща стъпка.


