В този урок ще научите -
- Какво е кошер?
- Архитектура на кошера
- Различни режими на кошер
- Какво е Hive Server2 (HS2)?
Какво е кошер?
Hive е инструмент за складиране на ETL и данни, разработен върху Hadoop Distributed File System (HDFS). Кошерът улеснява работата при извършване на операции като
- Капсулиране на данни
- Специални запитвания
- Анализ на огромни масиви от данни
Важни характеристики на кошера
- В Hive първо се създават таблици и бази данни и след това данните се зареждат в тези таблици.
- Hive като хранилище за данни, предназначено за управление и заявки само на структурирани данни, които се съхраняват в таблици.
- Докато се занимава със структурирани данни, Map Reduce няма функции за оптимизация и използваемост като UDF, но Hive framework има. Оптимизацията на заявката се отнася до ефективен начин за изпълнение на заявка по отношение на производителността.
- Вдъхновеният от SQL език на Hive отделя потребителя от сложността на програмата Map Reduce. Той използва повторно познати концепции от света на релационните бази данни, като таблици, редове, колони и схеми и т.н. за улесняване на обучението.
- Програмирането на Hadoop работи върху плоски файлове. И така, Hive може да използва структури на директории за „разделяне“ на данни, за да подобри производителността на определени заявки.
- Нов и важен компонент на Hive, т.е. Metastore, използван за съхранение на информация за схемата. Този Metastore обикновено се намира в релационна база данни. Можем да взаимодействаме с Hive, използвайки методи като
- Уеб GUI
- Интерфейс на Java Database Connectivity (JDBC)
- Повечето взаимодействия обикновено се осъществяват през интерфейса на командния ред (CLI). Hive предоставя CLI за писане на Hive заявки, използвайки Hive Query Language (HQL)
- По принцип синтаксисът на HQL е подобен на синтаксиса на SQL, с който повечето анализатори на данни са запознати. Примерната заявка по-долу показва всички записи, присъстващи в споменатото име на таблица.
- Примерна заявка : Изберете * от
- Примерна заявка : Изберете * от
- Hive поддържа четири файлови формата, които са TEXTFILE, SEQUENCEFILE, ORC и RCFILE (Record Columnar File).
- За съхранение на метаданни за един потребител, Hive използва база данни на дерби, а за многопотребителски метаданни или споделен случай на метаданни Hive използва MYSQL.
За настройка на MySQL като база данни и за съхраняване на информация за метаданни проверете урок "Инсталиране и конфигуриране на HIVE и MYSQL"
Някои от ключовите моменти за Кошера:
- Основната разлика между HQL и SQL е, че Hive заявката се изпълнява в инфраструктурата на Hadoop, а не в традиционната база данни.
- Изпълнението на заявката за кошер ще бъде като поредица от автоматично генерирани задания за намаляване на картата.
- Hive поддържа концепции за разделяне и групи за лесно извличане на данни, когато клиентът изпълни заявката.
- Hive поддържа специфични за потребителя UDF (Потребителски функции) за почистване на данни, филтриране и др. Според изискванията на програмистите може да се дефинират Hive UDF.
Hive Vs Релационни бази данни: -
Използвайки Hive, можем да изпълним някаква особена функционалност, която не е постигната в релационните бази данни. За огромно количество данни, които са в пета-байтове, е важно да ги заявите и да получите резултати за секунди. И Hive прави това доста ефективно, обработва заявките бързо и дава резултати за секунда.
Нека видим сега какво прави Hive толкова бърз.
Някои ключови разлики между базите данни с кошер и релацията са следните;
Релационните бази данни са от " Схема за ЧЕТЕНЕ и Схема за запис ". Първо създаване на таблица, след което вмъкване на данни в конкретната таблица. В таблици на релационни бази данни могат да се изпълняват функции като вмъквания, актуализации и модификации.
Hive е „ Схема само за ЧЕТЕНЕ “. Така че функции като актуализация, модификации и т.н. не работят с това. Тъй като заявката Hive в типичен клъстер работи на множество възли на данни. Така че не е възможно да се актуализират и модифицират данни в множество възли. (Версии на кошера под 0.13)
Също така, Hive поддържа модел „ ПРОЧЕТЕТЕ МНОГО ПИШЕТЕ веднъж “. Което означава, че след вмъкване на таблица можем да актуализираме таблицата в най-новите версии на Hive.
ЗАБЕЛЕЖКА : Новата версия на Hive идва с актуализирани функции. Версиите на Hive (Hive 0.14) предлагат опции за актуализиране и изтриване като нови функции
Архитектура на кошера
Горната екранна снимка обяснява подробно архитектурата на Apache Hive
Кошерът се състои главно от 3 основни части
- Клиенти на кошери
- Услуги за кошери
- Съхранение и изчисляване на кошери
Клиенти на кошери:
Hive предоставя различни драйвери за комуникация с различен тип приложения. За приложения, базирани на Thrift, той ще осигури Thrift клиент за комуникация.
За приложения, свързани с Java, той предоставя JDBC драйвери. Различни от всеки тип приложения, предоставени ODBC драйвери. Тези клиенти и драйвери от своя страна отново комуникират със сървъра на Hive в услугите на Hive.
Услуги за кошери:
Клиентските взаимодействия с Hive могат да се извършват чрез Hive Services. Ако клиентът иска да извърши някакви операции, свързани с заявка в Hive, той трябва да комуникира чрез Hive Services.
CLI е интерфейсът на командния ред действа като услуга Hive за операции DDL (език за дефиниране на данни). Всички драйвери комуникират със сървъра на Hive и с основния драйвер в услугите на Hive, както е показано на горната архитектурна схема.
Драйверът, присъстващ в услугите на Hive, представлява основният драйвер и той комуникира всички видове JDBC, ODBC и други специфични за клиента приложения. Шофьорът ще обработва тези заявки от различни приложения към мета хранилище и полеви системи за по-нататъшна обработка.
Съхранение и изчисляване на кошери:
Услугите на Hive като Meta store, File system и Job Client на свой ред комуникират със Hive storage и изпълняват следните действия
- Информацията за метаданни на таблици, създадени в Hive, се съхранява в Hive "Мета база данни за съхранение".
- Резултатите от заявките и данните, заредени в таблиците, ще се съхраняват в клъстера Hadoop на HDFS.
Поток за изпълнение на работното място:
От горната екранна снимка можем да разберем потока на изпълнение на задачата в Hive с Hadoop
Потокът от данни в Hive се държи по следния модел;
- Изпълнение на заявка от потребителския интерфейс (потребителски интерфейс)
- Драйверът взаимодейства с Compiler за получаване на плана. (Тук планът се отнася до изпълнение на заявка) и свързаното с него събиране на информация за метаданни
- Компилаторът създава плана за изпълнение на задача. Компилатор, комуникиращ с Meta store за получаване на заявка за метаданни
- Meta store изпраща информация за метаданни обратно на компилатора
- Компилатор, комуникиращ с Driver с предложения план за изпълнение на заявката
- Шофьор Изпращане на планове за изпълнение към двигателя за изпълнение
- Execution Engine (EE) действа като мост между Hive и Hadoop за обработка на заявката. За DFS операции.
- EE трябва първо да се свърже с Node Node и след това с Data nodes, за да получи стойностите, съхранявани в таблици.
- EE ще извлече желаните записи от Data Nodes. Действителните данни на таблиците се намират само във възел за данни. Докато от Name Node той извлича само информацията за метаданни за заявката.
- Той събира действителни данни от възли на данни, свързани със споменатата заявка
- Execution Engine (EE) комуникира двупосочно с Meta store, наличен в Hive, за да извършва операции DDL (Data Definition Language). Тук се извършват DDL операции като CREATE, DROP и ALTERING таблици и бази данни. Meta store ще съхранява информация само за име на база данни, имена на таблици и имена на колони. Той ще извлече данни, свързани със споменатата заявка.
- Execution Engine (EE) от своя страна комуникира с демони на Hadoop като възел за име, възли с данни и тракер за работа, за да изпълни заявката върху файловата система на Hadoop
- Резултати от драйвера
- Изпращане на резултатите към механизма за изпълнение. След като резултатите бъдат извлечени от възлите за данни към EE, той ще изпрати резултатите обратно към драйвера и към потребителския интерфейс (преден край)
Hive Непрекъснато е в контакт с файловата система Hadoop и нейните демони чрез Execution engine. Пунктирната стрелка в диаграмата на потока на задачите показва комуникацията на двигателя за изпълнение с демони на Hadoop.
Различни режими на кошер
Hive може да работи в два режима в зависимост от размера на възлите за данни в Hadoop.
Тези режими са,
- Местен режим
- Режим за намаляване на картата
Кога да използвате локален режим:
- Ако Hadoop е инсталиран в псевдо режим с един възел за данни, ние използваме Hive в този режим
- Ако размерът на данните е по-малък в срок, ограничен до една локална машина, можем да използваме този режим
- Обработката ще бъде много бърза за по-малки набори от данни, присъстващи в локалната машина
Кога да използвате режима за намаляване на картата:
- Ако Hadoop има множество възли за данни и данните се разпределят между различни възли, ние използваме Hive в този режим
- Той ще изпълнява голям брой набори от данни и заявка, която ще се изпълнява паралелно
- Чрез този режим може да се постигне обработка на големи масиви от данни с по-добра производителност
В Hive можем да зададем това свойство да споменава кой режим Hive може да работи? По подразбиране работи в режим Намаляване на картата и за локален режим можете да имате следната настройка.
Кошера за работа в локален режим
ЗАДАВАНЕ mapred.job.tracker = локално;
От версията на Hive 0.7 той поддържа режим за автоматично стартиране на задачите за намаляване на задачите в локален режим.
Какво е Hive Server2 (HS2)?
HiveServer2 (HS2) е сървърен интерфейс, който изпълнява следните функции:
- Позволява на отдалечени клиенти да изпълняват заявки срещу Hive
- Вземете резултатите от споменатите заявки
От последната версия има някои разширени функции, базирани на Thrift RPC като;
- Мулти-клиентска паралелност
- Удостоверяване
Резюме:
Hive е инструмент за ETL и съхранение на данни върху екосистемата на Hadoop и се използва за обработка на структурирани и полуструктурирани данни.
- Hive е база данни, присъстваща в екосистемата на Hadoop, извършва DDL и DML операции и осигурява гъвкав език за заявки като HQL за по-добро заявяване и обработка на данни.
- Той предоставя толкова много функции в сравнение с RDMS, което има определени ограничения.
За специфична за потребителя логика, която да отговаря на изискванията на клиента.
- Той предоставя възможност за писане и внедряване на персонализирани скриптове и потребителски функции.
- В допълнение, той предоставя дялове и кофи за специфични логики за съхранение.