Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы к экзу по БД.docx
Скачиваний:
21
Добавлен:
12.02.2024
Размер:
257.66 Кб
Скачать
  1. Hive. Назначение и принцип работы. Архитектура. High Availability конфигурация. Разница между schema-on-write и schema-on-read. Разница между managed и external таблицами.

Hive - это распределенное, отказоустойчивое хранилище данных, которое облегчает чтение, запись, управление данными, находящихся в распределенном хранилище, с помощью языка структурированных запросов HQL (Hive Query Language). HQL очень похож на стандартный SQL, который используется для взаимодействия с реляционными базами данных, но не полностью соответствует какой-либо конкретной версии стандарта ANSI SQL.

Назначение Hive заключается в предоставлении аналитикам и разработчикам возможности выполнять аналитические запросы к данным, хранящимся в Hadoop, с использованием SQL-подобного языка.

Принцип работы Hive команды в Hive превращаются в MapReduce задачи и выполняются небыстро для выполнения запросов и преобразования данных, что позволяет обрабатывать большие объемы данных распределённо на кластере Hadoop. можно использовать в Hive для хранения meta-информации MySQl или Derby DB.

Архитектура Hive состоит из следующих основных компонентов:

  • Metastore - это центральное хранилище метаданных Hive, где хранится информация о таблицах, столбцах, разделах и других объектах схемы данных.

  • HiveQL - это SQL-подобный язык запросов, который используется для выполнения аналитических запросов к данным в Hadoop.

  • Hive Server - это серверный компонент, который предоставляет удаленный доступ к Hive через JDBC, ODBC или Thrift.

  • - Driver отвечает за выполнение и управление выполнением запросов, представленных в HiveQL. Он разбирает запросы, оптимизирует их и распределяет задачи на исполнение с помощью MapReduce или других фреймворков.

  • - Execution Engine - это ядро, которое фактически выполняет задачи, сгенерированные на основе выполнения запросов HiveQL. Оно может использовать различные фреймворки исполнения, такие как MapReduce, Tez, Spark, для обработки и анализа данных.

Для обеспечения высокой доступности (High Availability) в Hive используются следующие методы:

1. Файловая система с высокой доступностью: Использование файловой системы с высокой доступностью, такой как Hadoop Distributed File System (HDFS) с поддержкой NameNode HA (высокой доступности узла имени), позволяет обеспечить непрерывную доступность к данным, хранящимся в HDFS.

2. Репликация Metastore: Дублирование Metastore и его репликация на несколько узлов позволяет обеспечить высокую доступность метаданных и возможность быстрого восстановления в случае сбоя.

3. Мониторинг и автоматическое восстановление: Настройка системы мониторинга для отслеживания состояния компонентов Hive и автоматическое восстановление в случае обнаружения проблем.

4. Кластеризация и балансировка нагрузки: Кластеризация и балансировка нагрузки используется для распределения запросов и обработки данных между узлами кластера, что позволяет обеспечить высокую доступность и производительность Hive.

Разница между schema-on-write и schema-on-read:

Schema-on-write предполагает, что данные будут проверены на соответствие структуре данных во время записи. Когда данные пишутся в базу данных или файловое хранилище, система гарантирует, что они соответствуют заранее определенной схеме.

Schema-on-read предполагает, что структура данных проверяется на соответствие определенной схеме во время их чтения, а не записи. Данные могут быть записаны без строгой проверки структуры, и проверка происходит только в момент их обработки или чтения.

Разница между managed и external таблицами:

Managed таблицы - это таблицы, управляемые Hive, которые хранятся в его собственной директории в HDFS. Hive управляет жизненным циклом этих таблиц, включая управление данными и метаданными.

External таблицы - это таблицы, которые ссылаются на данные, хранящиеся вне директории Hive в HDFS или в других хранилищах. Hive не управляет жизненным циклом данных этих таблиц, поэтому удаление внешней таблицы не приведет к удалению данных из хранилища.

(Простым языком - существует 2 типа таблиц: managed и external. External-таблицы работают с внешними данными не изменяя их, а managed позволяют их изменять).