В этом уроке вы узнаете
Что такое улей?
Hive — это инструмент ETL и хранилище данных, разработанный на основе распределенной файловой системы Hadoop (HDFS). Улей облегчает работу для выполнения таких операций, как
- Инкапсуляция данных
- Специальные запросы
- Анализ огромных наборов данных
Важные характеристики Улья
- В Hive сначала создаются таблицы и базы данных, а затем в эти таблицы загружаются данные.
- Hive как хранилище данных, предназначенное для управления и запроса только структурированных данных, хранящихся в таблицах.
- Работая со структурированными данными, Map Reduce не имеет функций оптимизации и удобства использования, таких как UDF, но имеет Hive Framework. Оптимизация запросов относится к эффективному способу выполнения запросов с точки зрения производительности.
- Язык Hive, основанный на SQL, отделяет пользователя от сложности программирования Map Reduce. Он использует знакомые понятия из мира реляционных баз данных, такие как таблицы, строки, столбцы, схемы и т. Д. Для простоты изучения.
- Программирование Hadoop работает с плоскими файлами. Таким образом, Hive может использовать структуры каталогов для «разделения» данных для повышения производительности при выполнении определенных запросов.
- Новый и важный компонент Hive, т.е. Metastore, используемый для хранения информации о схеме. Этот Metastore обычно находится в реляционной базе данных. Мы можем взаимодействовать с Hive, используя такие методы, как
- Веб-интерфейс
- Интерфейс Java Database Connectivity (JDBC)
- Большинство взаимодействий обычно происходит через интерфейс командной строки (CLI). Hive предоставляет интерфейс командной строки для написания запросов Hive с использованием языка запросов Hive (HQL)
- Как правило, синтаксис HQL аналогичен синтаксису SQL, с которым знакомо большинство аналитиков данных. В приведенном ниже примере запроса отображаются все записи, представленные в названии таблицы.
- Пример запроса : выберите * из <TableName>
- Hive поддерживает четыре формата файлов: TEXTFILE, SEQUENCEFILE, ORC и RCFILE (Record Columnar File).
- Для однопользовательского хранения метаданных Hive использует базу данных derby, а для многопользовательских метаданных или совместного использования метаданных Hive использует MYSQL.
Для настройки MySQL в качестве базы данных и для хранения метаданных см. Учебное пособие «Установка и настройка HIVE и MYSQL»
Некоторые из ключевых моментов о Hive:
- Основное различие между HQL и SQL заключается в том, что запрос Hive выполняется в инфраструктуре Hadoop, а не в традиционной базе данных.
- Выполнение запроса Hive будет похоже на серию автоматически сгенерированных карт, уменьшающих количество заданий.
- Hive поддерживает концепции разделов и сегментов для легкого извлечения данных, когда клиент выполняет запрос.
- Hive поддерживает пользовательские UDF (пользовательские функции) для очистки, фильтрации и т. Д. В соответствии с требованиями программистов можно определять UDF Hive.
Hive Vs Реляционные базы данных: —
Используя Hive, мы можем выполнять некоторые специфические функции, которых нет в реляционных базах данных. Для огромного количества данных в петабайтах важно запрашивать его и получать результаты за считанные секунды. И Hive делает это довольно эффективно, он обрабатывает запросы быстро и дает результаты за секунду.
Давайте посмотрим теперь, что делает Улей так быстро.
Некоторые ключевые различия между Hive и реляционными базами данных заключаются в следующем;
Реляционные базы данных представляют собой « Схема на READ и Схема на запись ». Сначала создайте таблицу, а затем вставьте данные в конкретную таблицу. В таблицах реляционной базы данных могут выполняться такие функции, как вставки, обновления и модификации.
Улей » Схема только для чтения «. Таким образом, такие функции, как обновление, модификации и т. Д. Не работают с этим. Потому что запрос Hive в типичном кластере выполняется на нескольких узлах данных. Поэтому невозможно обновлять и изменять данные на нескольких узлах (версии Hive ниже 0,13).
Кроме того, Hive поддерживает шаблон « READ Many WRITE Once ». Это означает, что после вставки таблицы мы можем обновить таблицу в последних версиях Hive.
ПРИМЕЧАНИЕ . Однако новая версия Hive поставляется с обновленными функциями. Версии Hive (Hive 0.14) предлагаются с опциями «Обновить» и «Удалить» в качестве новых функций.
Улей Архитектура
На приведенном выше снимке экрана подробно описывается архитектура Apache Hive.
Улей состоит в основном из 3 основных частей
- Клиенты улья
- Улей Услуги
- Хранение улья и вычисления
Клиенты Hive:
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 и выполняют следующие действия.
- Информация метаданных таблиц, созданных в Hive, хранится в Hive «База метаданных».
- Результаты запросов и данные, загруженные в таблицы, будут храниться в кластере Hadoop в HDFS.
Ход выполнения задания:
Из приведенного выше снимка экрана мы можем понять процесс выполнения задания в Hive с Hadoop
Поток данных в Hive ведет себя следующим образом;
- Выполнение запроса из пользовательского интерфейса (пользовательский интерфейс)
- Драйвер взаимодействует с компилятором для получения плана. (Здесь план относится к выполнению запроса) процесс и связанный с ним сбор метаданных
- Компилятор создает план для задания, которое будет выполнено. Компилятор связывается с Meta store для получения запроса метаданных
- Мета-хранилище отправляет метаданные обратно в компилятор
- Компилятор связывается с драйвером с предложенным планом выполнения запроса
- Драйвер Отправка планов выполнения в Механизм выполнения
- Механизм выполнения (EE) действует как мост между Hive и Hadoop для обработки запроса. Для операций DFS.
- EE должен сначала связаться с узлом имени, а затем с узлами данных, чтобы получить значения, хранящиеся в таблицах.
- EE собирается получить нужные записи из узлов данных. Фактические данные таблиц находятся только в узле данных. В то время как из узла имени он только извлекает информацию метаданных для запроса.
- Он собирает фактические данные из узлов данных, связанных с упомянутым запросом
- Механизм выполнения (EE) связывается в двух направлениях с мета-хранилищем, присутствующим в Hive, для выполнения операций DDL (язык определения данных). Здесь выполняются операции DDL, такие как таблицы и базы данных CREATE, DROP и ALTERING. Мета-магазин будет хранить информацию только об имени базы данных, именах таблиц и столбцов. Он будет получать данные, относящиеся к указанному запросу.
- Механизм выполнения (EE), в свою очередь, связывается с демонами Hadoop, такими как узел имени, узлы данных и средство отслеживания заданий, для выполнения запроса поверх файловой системы Hadoop.
- Получение результатов от водителя
- Отправка результатов в Механизм выполнения. Как только результаты извлекаются из узлов данных в EE, он отправляет результаты обратно в драйвер и в интерфейс пользователя (интерфейс)
Hive Постоянно контактирует с файловой системой Hadoop и ее демонами через механизм выполнения. Пунктирная стрелка на диаграмме потока заданий показывает связь механизма выполнения с демонами Hadoop.
Разные режимы Улья
Hive может работать в двух режимах в зависимости от размера узлов данных в Hadoop.
Эти режимы
- Локальный режим
- Режим уменьшения карты
Когда использовать Локальный режим:
- Если Hadoop установлен в псевдо режиме с одним узлом данных, мы используем Hive в этом режиме.
- Если размер данных меньше с точки зрения одной локальной машины, мы можем использовать этот режим
- Обработка будет очень быстрой для небольших наборов данных, присутствующих на локальном компьютере
Когда использовать режим уменьшения карты:
- Если Hadoop имеет несколько узлов данных и данные распределены по разным узлам, мы используем Hive в этом режиме
- Он будет работать с большим количеством наборов данных, и запрос будет выполняться параллельно
- Обработка больших наборов данных с лучшей производительностью может быть достигнута через этот режим
В Hive мы можем установить это свойство, чтобы указать, какой режим Hive может работать? По умолчанию он работает в режиме Map Reduce, а для локального режима вы можете иметь следующие настройки.
Улей для работы в локальном режиме установлен
SET mapred.job.tracker = local;
Начиная с версии 0.7 Hive, он поддерживает режим автоматического запуска задания сокращения карт в локальном режиме.
Что такое Hive Server2 (HS2)?
HiveServer2 (HS2) — это интерфейс сервера, который выполняет следующие функции:
- Позволяет удаленным клиентам выполнять запросы к Hive
- Получить результаты упомянутых запросов
В последней версии он имеет некоторые расширенные функции, такие как Thrift RPC;
- Многопользовательский параллелизм
- Аутентификация
Резюме:
Hive — это инструмент ETL и хранилище данных на вершине экосистемы Hadoop, используемый для обработки структурированных и полуструктурированных данных.
- Hive — это база данных, присутствующая в экосистеме Hadoop, которая выполняет операции DDL и DML, и предоставляет гибкий язык запросов, такой как HQL, для улучшения запросов и обработки данных.
- Он предоставляет множество функций по сравнению с RDMS, которая имеет определенные ограничения.
Для пользовательской логики для удовлетворения требований клиента.
- Он предоставляет возможность написания и развертывания пользовательских сценариев и пользовательских функций.
- Кроме того, он предоставляет разделы и корзины для логики хранения.