Що таке Hive? Archiтектура та режими
Що таке Hive?
Hive — це інструмент ETL і сховищ даних, розроблений на основі розподіленої файлової системи Hadoop (HDFS). Hive полегшує роботу для виконання таких операцій, як
- Інкапсуляція даних
- Спеціальні запити
- Аналіз величезних масивів даних
Важливі характеристики Hive
- У Hive спочатку створюються таблиці та бази даних, а потім дані завантажуються в ці таблиці.
- Hive як сховище даних, призначене для керування та запитів лише структурованих даних, які зберігаються в таблицях.
- Маючи справу зі структурованими даними, Map Reduce не має функцій оптимізації та зручності використання, як UDF, але фреймворк Hive має. Оптимізація запитів означає ефективний спосіб виконання запитів з точки зору продуктивності.
- Мова Hive, натхненна SQL, відокремлює користувача від складного програмування Map Reduce. Він повторно використовує знайомі поняття зі світу реляційних баз даних, такі як таблиці, рядки, стовпці та схеми тощо, для полегшення навчання.
- Програмування Hadoop працює з плоскими файлами. Таким чином, Hive може використовувати структури каталогів для «розбиття» даних, щоб покращити продуктивність певних запитів.
- Новий і важливий компонент Hive, тобто Metastore, який використовується для зберігання інформації про схему. Це Metastore зазвичай знаходиться в реляційній базі даних. Ми можемо взаємодіяти з Hive за допомогою таких методів, як
- Веб-інтерфейс
- 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 схоже на серію автоматично згенерованих завдань скорочення карт.
- Hive підтримує концепції розділів і сегментів для легкого отримання даних, коли клієнт виконує запит.
- Hive підтримує спеціалізовані UDF (функції, визначені користувачем) для очищення даних, фільтрації тощо. Відповідно до вимог програмістів можна визначити UDF Hive.
Вулик проти реляційних баз даних
Використовуючи Hive, ми можемо виконувати деякі особливі функції, які недоступні в реляційних базах даних. Для величезного обсягу даних у пета-байтах важливо надсилати запити й отримувати результати за лічені секунди. І Hive робить це досить ефективно, він швидко обробляє запити та дає результати за секунду часу.
Тепер подивимося, що робить Hive таким швидким.
Деякі ключові відмінності між Hive та реляційними базами даних:
Реляційні бази даних є «Схема на READ і Schema на Write“. Спочатку створіть таблицю, а потім вставте дані в конкретну таблицю. У таблицях реляційної бази даних можна виконувати такі функції, як вставки, оновлення та модифікації.
Вулик - це "Схема тільки для ЧИТАННЯ“. Таким чином, такі функції, як оновлення, модифікації тощо, не працюють із цим. Оскільки запит Hive у типовому кластері виконується на кількох вузлах даних. Тому неможливо оновлювати та змінювати дані на кількох вузлах. (Версії Hive нижче 0.13)
Крім того, Hive підтримує "ПРОЧИТАТИ Багато НАПИСАТИ Раз” візерунок. Це означає, що після вставки таблиці ми можемо оновити таблицю в останніх версіях Hive.
ПРИМІТКА: Однак нова версія Hive має оновлені функції. Версії Hive (Hive 0.14) пропонують опції оновлення та видалення як нові функції
Вулик Archiтектура
Наведений вище знімок екрана пояснює Apache Архітектура вулика в деталях
Вулик складається в основному з 3 основних частин
- Клієнти Hive
- Служби Hive
- Зберігання та обчислення Hive
Клієнти Hive:
Hive надає різні драйвери для зв’язку з різними типами програм. Для додатків на основі Thrift він надасть клієнт Thrift для зв’язку.
для Java пов’язані програми, він надає драйвери JDBC. Окрім будь-якого іншого типу програм, наданих драйверів ODBC. Ці клієнти та драйвери, у свою чергу, знову спілкуються з сервером Hive у службах Hive.
Служби Hive:
Взаємодія клієнта з Hive може здійснюватися через Hive Services. Якщо клієнт хоче виконувати будь-які операції, пов’язані із запитом, у Hive, він має спілкуватися через Hive Services.
CLI — це інтерфейс командного рядка, який діє як служба Hive для операцій DDL (мова визначення даних). Усі драйвери взаємодіють із сервером Hive і основним драйвером у службах Hive, як показано на схемі архітектури вище.
Драйвер, присутній у службах Hive, представляє основний драйвер, і він передає всі типи JDBC, ODBC та інших програм, специфічних для клієнта. Драйвер оброблятиме ці запити від різних програм до мета-сховища та польових систем для подальшої обробки.
Зберігання та обчислення Hive:
Служби Hive, такі як Meta store, File system і Job Client, у свою чергу взаємодіють зі сховищем Hive і виконують такі дії
- Інформація про метадані таблиць, створених у Hive, зберігається в «Базі даних мета-сховища» Hive.
- Результати запитів і дані, завантажені в таблиці, зберігатимуться в кластері Hadoop на HDFS.
Хід виконання роботи:
З наведеного вище знімка екрана ми можемо зрозуміти потік виконання завдання в Hive з Hadoop
Потік даних у Hive поводиться за такою схемою;
- Виконання запиту з інтерфейсу користувача (інтерфейс користувача)
- Драйвер взаємодіє з компілятором для отримання плану. (Тут план стосується виконання запиту) процес і пов’язаний із ним збір інформації метаданих
- Компілятор створює план виконання завдання. Компілятор спілкується з Meta store для отримання запиту на метадані
- Мета-сховище надсилає інформацію метаданих назад до компілятора
- Компілятор спілкується з драйвером із запропонованим планом для виконання запиту
- Драйвер надсилає плани виконання до механізму виконання
- Execution Engine (EE) діє як міст між Hive і Hadoop для обробки запиту. Для операцій DFS.
- EE має спочатку зв’язатися з вузлом імені, а потім із вузлом даних, щоб отримати значення, збережені в таблицях.
- EE збирається отримати потрібні записи з вузлів даних. Фактичні дані таблиць знаходяться лише у вузлі даних. У той час як із вузла імені він отримує лише інформацію метаданих для запиту.
- Він збирає фактичні дані з вузлів даних, пов’язаних із згаданим запитом
- Execution Engine (EE) обмінюється двонаправленим зв’язком із сховищем Meta у Hive для виконання операцій DDL (мова визначення даних). Тут виконуються такі операції DDL, як CREATE, DROP і ALTERING таблиць і баз даних. Мета-сховище зберігатиме лише інформацію про назву бази даних, назви таблиць і назви стовпців. Він отримає дані, пов’язані зі згаданим запитом.
- Execution Engine (EE) у свою чергу взаємодіє з демонами Hadoop, такими як вузол імен, вузли даних і засіб відстеження завдань, щоб виконати запит поверх файлової системи Hadoop.
- Отримання результатів від водія
- Надсилання результатів до механізму виконання. Після отримання результатів із вузлів даних до EE, він надішле результати назад до драйвера та інтерфейсу користувача (інтерфейсу)
Вулик Постійний контакт із файловою системою Hadoop та її демонами через механізм виконання. Пунктирна стрілка на діаграмі потоку завдань показує зв’язок механізму виконання з демонами Hadoop.
Різні режими Hive
Hive може працювати в двох режимах залежно від розміру вузлів даних у Hadoop.
Ці режими,
- Локальний режим
- Режим зменшення карти
Коли використовувати локальний режим:
- Якщо Hadoop встановлено в псевдорежимі з одним вузлом даних, ми використовуємо Hive у цьому режимі
- Якщо розмір даних менший у термінах, обмежених однією локальною машиною, ми можемо використовувати цей режим
- Обробка буде дуже швидкою для менших наборів даних, наявних на локальній машині
Коли використовувати режим зменшення карти:
- Якщо Hadoop має кілька вузлів даних і дані розподіляються між різними вузлами, ми використовуємо Hive у цьому режимі
- Він виконуватиме роботу з великою кількістю наборів даних і запити виконуватимуться паралельно
- За допомогою цього режиму можна досягти кращої продуктивності обробки великих наборів даних
У Hive ми можемо встановити цю властивість, щоб згадати, який режим може працювати Hive? За замовчуванням він працює в режимі Map Reduce, а для локального режиму можна встановити наступне налаштування.
Вулик для роботи в локальному режимі встановлено
SET mapred.job.tracker=локальний;
Починаючи з версії Hive 0.7, він підтримує режим для автоматичного запуску завдань зменшення карт у локальному режимі.
Що таке Hive Server2 (HS2)?
HiveServer2 (HS2) — серверний інтерфейс, який виконує такі функції:
- Дозволяє віддаленим клієнтам виконувати запити до Hive
- Отримати результати згаданих запитів
З останньої версії він має деякі розширені функції на основі Thrift RPC, наприклад;
- Багатоклієнтська паралельність
- Authentication
Підсумки
Hive — це ETL та інструмент сховища даних на основі екосистеми Hadoop, який використовується для обробки структурованих і напівструктурованих даних.
- Hive — це база даних в екосистемі Hadoop, яка виконує операції DDL і DML і забезпечує гнучку мову запитів, наприклад HQL, для кращого надсилання запитів і обробки даних.
- Він надає стільки функцій порівняно з RDMS, який має певні обмеження.
Для індивідуальної логіки користувача для задоволення вимог клієнта.
- Він надає можливість написання та розгортання призначених для користувача сценаріїв і визначених користувачем функцій.
- Крім того, він надає розділи та відра для певної логіки зберігання.