У цьому підручнику ви дізнаєтесь-
- Що таке вулик?
- Архітектура вуликів
- Різні режими вулика
- Що таке Hive Server2 (HS2)?
Що таке вулик?
Hive - це інструмент ETL та зберігання даних, розроблений поверх розподіленої файлової системи Hadoop (HDFS). Вулик полегшує роботу для виконання подібних операцій
- Інкапсуляція даних
- Спеціальні запити
- Аналіз величезних наборів даних
Важливі характеристики вулика
- У Hive спочатку створюються таблиці та бази даних, а потім дані завантажуються в ці таблиці.
- Вулик як сховище даних, призначене для управління та запитів лише структурованих даних, які зберігаються в таблицях.
- Маючи справу зі структурованими даними, Map Reduce не має функцій оптимізації та зручності використання, таких як UDF, але Hive framework має. Оптимізація запитів відноситься до ефективного способу виконання запиту з точки зору продуктивності.
- Мова Hive, натхненна SQL, відокремлює користувача від складності програмування Map Reduce. Він повторно використовує знайомі поняття зі світу реляційних баз даних, такі як таблиці, рядки, стовпці та схеми тощо для зручності навчання.
- Програмування Hadoop працює на плоских файлах. Отже, Hive може використовувати структури каталогів для «розділення» даних для підвищення продуктивності певних запитів.
- Новий і важливий компонент Hive, тобто Metastore, який використовується для зберігання інформації про схему. Цей Metastore зазвичай знаходиться в реляційній базі даних. Ми можемо взаємодіяти з Hive за допомогою таких методів, як
- Веб-графічний інтерфейс
- Інтерфейс підключення до бази даних Java (JDBC)
- Більшість взаємодій, як правило, відбувається через інтерфейс командного рядка (CLI). Hive надає CLI для написання запитів Hive за допомогою мови запитів Hive (HQL)
- Як правило, синтаксис HQL подібний до синтаксису SQL, з яким знайомі більшість аналітиків даних. Наведений нижче зразок запиту відображає всі записи, що містяться у згаданій назві таблиці.
- Зразок запиту : Виберіть * з
- Зразок запиту : Виберіть * з
- Hive підтримує чотири формати файлів: TEXTFILE, SEQUENCEFILE, ORC та RCFILE (запис стовпчастого файлу).
- Для однокористувацького зберігання метаданих Hive використовує базу даних дербі, а для багатокористувацьких метаданих або спільного випадку метаданих Hive використовує MYSQL.
Для налаштування MySQL як бази даних та зберігання інформації про метадані перевірте Підручник "Встановлення та налаштування HIVE та MYSQL"
Деякі ключові моменти щодо вулика:
- Основна різниця між HQL та SQL полягає в тому, що запит Hive виконується в інфраструктурі Hadoop, а не в традиційній базі даних.
- Виконання запиту Hive буде схоже на ряд автоматично генерованих завдань, що зменшують карту.
- Hive підтримує концепції розділів та сегментів для легкого отримання даних, коли клієнт виконує запит.
- Hive підтримує спеціальні UDF (User Defined Functions) для очищення даних, фільтрації тощо. Відповідно до вимог програмістів можна визначити UDF Hive.
Бази даних Hive проти реляційних: -
Використовуючи Hive, ми можемо виконати певну особливість, яка не досягається в Реляційних базах даних. Для величезного обсягу даних, що містяться у пета-байтах, важливим є запит і отримання результатів за лічені секунди. І Hive робить це досить ефективно, він швидко обробляє запити і дає результати в секунду.
Подивимось зараз, що робить Вулик таким швидким.
Нижче наведено деякі ключові відмінності між базами даних Вулля та реляційними базами даних;
Реляційні бази даних мають " Схему для читання та Схему для запису ". Спочатку створіть таблицю, а потім вставте дані до певної таблиці. На таблицях реляційних баз даних можуть виконуватися такі функції, як вставки, оновлення та модифікації.
Вулик - це " Схема лише для читання ". Отже, такі функції, як оновлення, модифікації тощо, з цим не працюють. Оскільки запит Hive у типовому кластері працює на декількох Вузлах даних. Тому неможливо оновити та модифікувати дані на декількох вузлах. (Версії вуликів нижче 0,13)
Крім того, Вулик підтримує шаблон " ПРОЧИТАЙТЕ багато ПИШИТИ ОДИН раз ". Це означає, що після вставки таблиці ми можемо оновити таблицю в останніх версіях 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, файлова система та клієнт завдання, по черзі спілкуються із сховищем Hive і виконують такі дії
- Інформація про метадані таблиць, створених у Hive, зберігається у Hive "База даних зберігання мета".
- Результати запитів і дані, завантажені в таблиці, будуть зберігатися в кластері Hadoop на HDFS.
Потік виконання робіт:
З наведеного вище скріншоту ми можемо зрозуміти потік виконання завдання в Hive with Hadoop
Потік даних у Hive поводиться за таким шаблоном;
- Виконання запиту з інтерфейсу користувача (інтерфейс користувача)
- Драйвер взаємодіє з Compiler для отримання плану. (Тут план стосується виконання запиту) та збору інформації про метадані
- Компілятор створює план виконання завдання. Компілятор, що спілкується з магазином Meta для отримання запиту на метадані
- Meta store надсилає інформацію про метадані назад компілятору
- Компілятор, що спілкується з драйвером, із запропонованим планом виконання запиту
- Водій Надсилає плани виконання на движок Виконання
- Execution Engine (EE) діє як міст між Hive та Hadoop для обробки запиту. Для операцій DFS.
- Для отримання значень, що зберігаються в таблицях, EE спочатку повинен зв’язати Ім'я Вузол, а потім Вузли Даних.
- EE збирається отримати бажані записи з Вузлів даних. Фактичні дані таблиць містяться лише у вузлі даних. У той час як з Name Node він отримує лише інформацію про метадані для запиту.
- Він збирає фактичні дані з вузлів даних, пов’язаних із згаданим запитом
- Механізм виконання (EE) взаємодіє двосторонньо із сховищем Meta, наявним у Hive, для виконання операцій DDL (мова визначення даних). Тут виконуються операції DDL, такі як CREATE, DROP та ALTERING таблиці та бази даних. Meta store буде зберігати інформацію про ім'я бази даних, імена таблиць та імен стовпців. Він отримає дані, пов’язані із згаданим запитом.
- Механізм виконання (EE), у свою чергу, взаємодіє з демонами Hadoop, такими як вузол імені, вузли даних та трекер завдань, щоб виконати запит поверх файлової системи Hadoop
- Отримання результатів від драйвера
- Надсилання результатів до механізму виконання. Як тільки результати отримані з вузлів даних в EE, він надішле результати назад до драйвера та до інтерфейсу користувача (інтерфейс)
Hive постійно контактує з файловою системою Hadoop та її демонами за допомогою механізму виконання. Пунктирна стрілка на схемі потоку завдань показує зв'язок механізму виконання з демонами Hadoop.
Різні режими вулика
Вулик може працювати в двох режимах, залежно від розміру вузлів даних у 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, що має певні обмеження.
Спеціальна логіка, яка відповідає вимогам клієнта.
- Він надає можливість написання та розгортання призначених для користувача сценаріїв та визначених користувачем функцій.
- Крім того, він забезпечує розділи та сегменти для зберігання конкретних логік.