Обзор ВИЧ
#HadoopС самого начала обычного прорыва в Интернете многие компании-поставщики поисковых систем и компании / организации, занимающиеся электронной торговлей, боролись с регулярным ростом объема данных день ото дня. Даже некоторые сайты социальных сетей, такие как Facebook, Twitter, Instagram и т. Д., Также сталкиваются с такой же проблемой. Сегодня многие ассоциации понимают, что информация, которую они собирают, является прибыльным ресурсом для понимания их клиентов, влияния их деятельности на рынке, их эффективности и эффективности их инфраструктуры и т. Д. Так что именно здесь Hadoop появился в качестве хранителя, который обеспечивает Мы имеем эффективный способ обработки огромных наборов данных с использованием HDFS (распределенной файловой системы Hadoop) и навязываем MapReduce для разделения погрешностей вычислений на единицы, которые можно распределить по кластеру аппаратных средств (стандартное оборудование), обеспечивая масштабируемость (горизонтальная).
Необходимо решить некоторые большие проблемы, такие как: Как кто-то переместит существующую структуру данных в Hadoop, если эта структура зависит от системы реляционных баз данных и языка структурированных запросов (SQL)? А как насчет безопасности данных, когда и основные создатели баз данных, и администраторы, и некоторые обычные пользователи, которые используют SQL для получения информации из своего хранилища данных?
Это где роль HIVE входит в картину. Hive предоставляет диалект SQL, известный как язык запросов Hive, сокращенно HQL, для извлечения или изменения данных. который хранится в Hadoop. Apache Hive — это система хранилища данных с открытым исходным кодом, созданная на основе кластера Hadoop, для запроса и анализа больших наборов данных, хранящихся в распределенной файловой системе Hadoop. HiveQL автоматически преобразует SQL-подобные запросы в задания MapReduce.
История ВИЧЕ —
HIVE разработан командой инфраструктуры данных Facebook. В Facebook кластер Hadoop Hive способен хранить более 2 петабайт необработанных данных, и ежедневно он обрабатывает и загружает около 15 терабайт данных. Сейчас его используют и многие компании. Позже, Apache Foundation принял Hive, развил его и сделал открытым исходным кодом. Он также используется и разрабатывается другими компаниями, такими как Netflix, Регулирующий орган финансовой индустрии (FINRA) и т. Д.
Характеристики —
Hive — это декларативный язык на основе SQL, в основном используемый для анализа данных и создания отчетов. Hive работает на стороне сервера кластера.
Hive обеспечивает гибкость и эволюцию схемы, а также упрощает сбор данных, запросы данных и анализ.
В Hive мы можем создавать два типа таблиц — секционированные и с разбивкой, что делает возможным обработку данных, хранящихся в HDFS, а также повышает производительность.
Таблицы кустов определяются непосредственно в файловой системе Hadoop (HDFS).
В Hive у нас есть драйверы JDBC / ODBC
Улей быстрый и масштабируемый, и его легко освоить.
В Hive есть оптимизатор на основе правил для оптимизации планов.
Используя Hive, мы также можем выполнять специальные запросы для анализа данных.
Архитектура HIVE —
- METASTORE — используется для хранения метаданных схемы таблиц, времени создания, местоположения и т. Д. Он также обеспечивает раздел метаданных, чтобы помочь драйверу отслеживать ход выполнения различных наборов данных, распределенных по кластеру. Метаданные помогают водителю отслеживать данные, и это очень важно. Следовательно, сервер резервного копирования регулярно реплицирует данные, которые могут быть получены в случае потери данных.
- ВОДИТЕЛЬ — Он действует как контроллер. Драйвер запускает выполнение оператора путем создания сеансов и отслеживает жизненный цикл и ход выполнения. Он также хранит метаданные, сгенерированные во время выполнения HQL-запроса.
- COMPILER — используется для компиляции запроса Hive, который преобразует запрос в план выполнения. Этот план содержит задачи и шаги, которые необходимо выполнить Hadoop MapReduce, чтобы получить выходные данные, переведенные запросом.
- ОПТИМИЗАТОР — оптимизирует и выполняет преобразования в плане выполнения, чтобы получить оптимизированный ориентированный ациклический граф, сокращенно обозначенный как DAG. Преобразование, такое как преобразование конвейера объединений в одно объединение, и разделение задач, например применение преобразования данных перед операцией сокращения, для обеспечения лучшей производительности и масштабируемости.
- EXECUTOR — выполняет задачи после компиляции и оптимизации. Он взаимодействует с системой отслеживания заданий Hadoop для планирования запуска задач. Он заботится о конвейерной обработке задач, обеспечивая выполнение задачи с зависимостью только в том случае, если выполняются все другие предварительные условия.
CLI, UI и Thrift Server. Он используется для предоставления внешнего интерфейса пользователю для взаимодействия с Hive путем написания запросов, инструкций и мониторинга процесса. Thrift-сервер позволяет внешним клиентам взаимодействовать с Hive по сети, аналогично протоколу JDBC или ODBC.
Работает —
- Прежде всего, пользователь отправляет свой запрос, а CLI отправляет этот запрос драйверу.
- Затем драйвер пользуется помощью компилятора запросов для проверки синтаксиса.
- Затем компилятор запрашивает метаданные, отправляя запрос метаданных в Metastore.
- В ответ на этот запрос metastore отправляет метаданные компилятору.
- Затем компилятор отправляет план водителю после проверки требований.
- Водитель отправляет план в механизм исполнения.
- Механизм выполнения отправляет задание на отслеживание заданий и назначает задание на отслеживание заданий. Здесь запрос выполняет задание MapReduce. А тем временем механизм исполнения выполняет операции с метаданными с Metastore.
- Затем механизм выполнения выбирает результаты из узла данных и отправляет эти результаты драйверу.
- Наконец, драйвер отправляет результаты в интерфейс улья.
HIVE Metastore —
Hive Metastore — это центральное хранилище метаданных. Он хранит метаданные для таблиц Hive (например, их схемы и местоположения) и разделов в реляционной базе данных. Он предоставляет клиенту доступ к этой информации с помощью API службы метастазов.
Режимы работы :
- Встроенный. В Hive по умолчанию служба метастазов и службы кустов работают в одной JVM. В этом режиме данные в локальной файловой системе хранятся с использованием встроенной базы данных derby.
- Local: Hive — это основанная на SQL инфраструктура, которая должна иметь несколько сеансов. В локальном режиме допускается несколько сеансов Hive. Это может быть достигнуто с помощью любого приложения JDBC, такого как MySQL, которое работает в отдельной JVM.
- Удаленный: в этом режиме службы метастазов и кустов работают в отдельной JVM. API-интерфейсы Thrift используются различными процессами для связи между ними.
- API-интерфейсы HIVE
- API-интерфейсы Hive доступны для разработчиков, которые хотят интегрировать свои приложения и среду с экосистемой Hive. Вот некоторые из API-
- HCatalog CLI (Command Based) — это API на основе запросов, который означает, что он разрешает только выполнение и передачу HQL.
- Metastore (JAVA) — это основанный на Thrift API, который реализуется интерфейсом IMetaStoreClient с использованием JAVA. Этот API-интерфейс отделяет хранилище метастазов от Hive Internals.
- Поток потоковых данных (JAVA) — используется для записи непрерывных потоковых данных в транзакционные таблицы с использованием свойств ACID Hive.
- Потоковая мутация (JAVA) — используется в операциях преобразования, таких как обновление, вставка, удаление, чтобы преобразовать ее в транзакционные таблицы, а также с помощью свойства ACID.
- Hive-JDBC (JDBC) — используется для поддержки функциональности JDBC в Hive.
Ограничения —
Apache Hive также имеет некоторые ограничения:
- Представления только для чтения разрешены, но материализованные представления не допускаются.
- Он не поддерживает триггеры.
- Запросы Apache Hive имеют очень высокую задержку.
- Нет разницы между NULL и нулевыми значениями.
Чем ВИЧ отличается от СУРБД?
- СУБД поддерживает схему при записи, тогда как Hive предоставляет схему при чтении.
- В Hive мы можем писать один раз, но в RDBMS мы можем писать столько раз, сколько захотим.
- Hive может обрабатывать большие наборы данных, тогда как RDBMS не может обрабатывать более 10 ТБ.
- Hive отлично масштабируется, но масштабируемость в СУБД стоит потерь.
- У Hive есть функция Bucketing, которой нет в RDBMS.