Обзор HIVE

Опубликовано: 18 Февраля, 2022

С самого начала обычного прорыва Интернета многие компании-поставщики поисковых систем и компании / организации, занимающиеся электронной коммерцией, изо дня в день боролись с постоянным ростом объема данных. Даже некоторые сайты социальных сетей, такие как Facebook, Twitter, Instagram и т. Д., Также сталкиваются с той же проблемой. Сегодня многочисленные ассоциации понимают, что информация, которую они собирают, является выгодным активом для понимания своих клиентов, влияния их деятельности на рынке, их производительности и эффективности их инфраструктуры и т. Д. Таким образом, именно здесь Hadoop появился как хранитель, который предоставляет Мы предлагаем эффективный способ обработки огромных наборов данных с помощью HDFS (распределенная файловая система Hadoop) и применяем MapReduce для разделения задач вычислений на единицы, которые могут быть распределены по кластеру оборудования (стандартное оборудование), обеспечивая масштабируемость (по горизонтали).
Необходимо решить некоторые серьезные проблемы, например: как можно перенести существующую структуру данных в Hadoop, если эта структура зависит от системы реляционных баз данных и языка структурированных запросов (SQL)? А как насчет безопасности данных, когда и главные создатели баз данных, и администраторы, и некоторые обычные пользователи, которые используют SQL для извлечения информации из своего хранилища данных?
Здесь появляется роль HIVE. Hive предоставляет диалект SQL, известный как Hive Query Language, сокращенно HQL, для извлечения или изменения данных. который хранится в Hadoop. Apache Hive - это система хранилища данных с открытым исходным кодом, построенная на основе Hadoop Cluster для запроса и анализа больших наборов данных, хранящихся в распределенной файловой системе Hadoop. HiveQL автоматически преобразует SQL-подобные запросы в задания MapReduce.

История HIVE -

HIVE разработан командой инфраструктуры данных Facebook. В Facebook кластер Hadoop от Hive способен хранить более 2 петабайт необработанных данных и ежедневно обрабатывает и загружает около 15 терабайт данных. Сейчас его используют и многие компании. Позже Apache Foundation взяла на себя управление Hive и доработала его, сделав его открытым исходным кодом. Он также используется и разрабатывается другими компаниями, такими как Netflix, Управлением по регулированию финансовой отрасли (FINRA) и т. Д.

Функции -

Hive - это декларативный язык на основе SQL, который в основном используется для анализа данных и создания отчетов. Hive работает на стороне сервера кластера.
Hive обеспечивает гибкость и эволюцию схемы, а также упрощает обобщение данных, запросы данных и анализ.
В Hive мы можем создавать таблицы двух типов - секционированные и разделенные, что позволяет обрабатывать данные, хранящиеся в HDFS, а также повышает производительность.
Таблицы Hive определяются непосредственно в файловой системе Hadoop (HDFS).
В Hive есть драйверы JDBC / ODBC
Hive быстр, масштабируем и прост в освоении.
В Hive есть оптимизатор на основе правил для оптимизации планов.
Используя Hive, мы также можем выполнять специальные запросы для анализа данных.

Архитектура HIVE -

  • METASTORE - используется для хранения метаданных схемы таблиц, времени создания, местоположения и т. Д. Он также предоставляет раздел метаданных, чтобы помочь драйверу отслеживать прогресс различных наборов данных, распределенных по кластеру. Метаданные помогают водителю отслеживать данные, и это очень важно. Следовательно, сервер резервного копирования регулярно реплицирует данные, которые могут быть восстановлены в случае потери данных.
  • ВОДИТЕЛЬ - Он действует как контроллер. Драйвер начинает выполнение оператора с создания сеансов и отслеживает жизненный цикл и ход выполнения. Он также хранит метаданные, созданные во время выполнения запроса HQL.
  • КОМПИЛЯТОР - используется для компиляции запроса Hive, который преобразует запрос в план выполнения. Этот план содержит задачи и шаги, которые необходимо выполнить Hadoop MapReduce, чтобы получить результат, переведенный запросом.
  • OPTIMIZER - оптимизирует и выполняет преобразования в плане выполнения, чтобы получить оптимизированный направленный ациклический график, сокращенно DAG. Преобразование, такое как преобразование конвейера объединений в одно объединение, и разделение задач, например применение преобразования к данным перед операцией сокращения, для повышения производительности и масштабируемости.
  • ИСПОЛНИТЕЛЬ - выполняет задачи после завершения компиляции и оптимизации. Он взаимодействует с системой отслеживания заданий Hadoop для планирования выполнения задач. Он заботится о конвейерной обработке задач, обеспечивая выполнение задачи с зависимостью только в том случае, если выполняются все другие предварительные условия.

CLI, UI и Thrift Server - он используется для предоставления внешнего интерфейса пользователя для взаимодействия с Hive путем написания запросов, инструкций и мониторинга процесса. Сервер Thrift позволяет внешним клиентам взаимодействовать с Hive по сети, аналогично протоколу JDBC или ODBC.

Работающий -

  1. Прежде всего, пользователь отправляет свой запрос, а интерфейс командной строки отправляет этот запрос драйверу.
  2. Затем драйвер использует компилятор запросов для проверки синтаксиса.
  3. Затем компилятор запросит метаданные, отправив запрос метаданных в Metastore.
  4. В ответ на этот запрос хранилище метаданных отправляет метаданные компилятору.
  5. Затем компилятор повторно отправляет план драйверу после проверки требований.
  6. Драйвер отправляет план механизму выполнения.
  7. Механизм выполнения отправляет задание в средство отслеживания заданий и назначает задание в средство отслеживания заданий. Здесь запрос выполняет задание MapReduce. А тем временем механизм выполнения выполняет операции с метаданными с Metastore.
  8. Затем механизм выполнения извлекает результаты из узла данных и отправляет их драйверу.
  9. Наконец, драйвер отправляет результаты в интерфейс улья.

Хранилище HIVE Metastore -

Hive Metastore - это центральное хранилище метаданных. Он хранит метаданные для таблиц Hive (например, их схему и расположение) и разделы в реляционной базе данных. Он обеспечивает клиентский доступ к этой информации с помощью API службы хранилища метаданных.
Режимы:

  • Встроенный: в Hive по умолчанию служба хранилища метаданных и службы Hive работают в одной JVM. В этом режиме данные в локальной файловой системе хранятся с использованием встроенной базы данных derby.
  • Локальный: Hive - это фреймворк на основе SQL, который должен иметь несколько сеансов. В локальном режиме разрешено несколько сеансов Hive. Это может быть достигнуто с помощью любого приложения JDBC, например MySQL, которое работает в отдельной JVM.
  • Удаленный: в этом режиме службы хранилища метаданных и кустов выполняются на отдельной JVM. API-интерфейсы экономичной сети используются различными процессами для связи между ними.


    API HIVE
    API-интерфейсы Hive доступны разработчикам, которые хотят интегрировать свои приложения и фреймворк с экосистемой Hive. Вот некоторые из API:

    1. HCatalog CLI (на основе команд) - это API на основе запросов, что означает, что он разрешает только выполнение и отправку HQL.
    2. Metastore (JAVA) - это API на основе Thrift, который реализуется интерфейсом IMetaStoreClient с использованием JAVA. Этот API отделяет уровень хранилища метаданных от Hive Internals.
    3. Загрузка потоковых данных (JAVA) - используется для записи данных непрерывной потоковой передачи в таблицы транзакций с использованием свойств ACID Hive.
    4. Потоковая мутация (JAVA) - используется в трансформационных операциях, таких как обновление, вставка, удаление, для преобразования в транзакционные таблицы, а также с использованием свойства ACID.
    5. Hive-JDBC (JDBC) - используется для поддержки функциональности JDBC в Hive.


    Ограничения -
    У Apache Hive также есть некоторые ограничения:

    1. Разрешены представления только для чтения, но не разрешены материализованные представления.
    2. Он не поддерживает триггеры.
    3. Запросы Apache Hive имеют очень большую задержку.
    4. Нет разницы между значениями NULL и NULL.


    Чем HIVE отличается от СУБД?

    1. RDBMS поддерживает схему при записи, тогда как Hive предоставляет схему при чтении.
    2. В Hive мы можем писать один раз, но в РСУБД мы можем писать столько раз, сколько захотим.
    3. Hive может обрабатывать большие наборы данных, тогда как СУБД не может обрабатывать более 10 ТБ.
    4. Hive обладает высокой масштабируемостью, но масштабируемость в РСУБД стоит потери.
    5. У Hive есть функция Bucketing, которой нет в СУБД.