- •Ответы к экзамену по большим данным
- •Компонент Hadoop. Главные сервисы, схема взаимодействия. Пример взаимодействия сервисов Hadoop при выполнении задачи MapReduce.
- •Hdfs. Архитектура сервиса. Роль DataNode и NameNode. FsImage и Journal. High Availability конфигурация. Виды api.
- •Hdfs. Worm подход. Почему hdfs не любит маленькие файлы? Почему Secondary NameNode нельзя считать backup Node?
- •MapReduce. Стадии обработки клиентского запроса. Оптимизаторы: Combiner, Partitioner, Comparator с примерами использования. Хранение файлов до, вовремя и после выполнения запроса.
- •Yarn. Основные сервисы. Архитектура компонента. High Availability конфигурация. Пример выполнения запроса при обработке MapReduce задачи.
- •Пример выполнения запроса при обработке MapReduce задачи:
- •Yarn. Виды scheduler’ов. Fifo, Fair, Capacity. Достоинства и недостатки. Механизм очередей.
- •Hive. Назначение и принцип работы. Архитектура. High Availability конфигурация. Разница между schema-on-write и schema-on-read. Разница между managed и external таблицами.
- •Hive. Оптимизация работы. Партиции и бакеты: принцип работы. Формулы для распределения записей. Плюсы и минусы применения.
- •Hbase. Назначение и принцип работы. Архитектура. High Availability конфигурация. Модель данных. Minor и Major Compaction. Регион hBase и его составляющие
- •Spark. Назначение и принцип работы. Отличия от MapReduce. Архитектура. Основные api. Виды планировщиков в Spark.
- •Spark. Библиотека Spark Core. Spark rdd. 2 типа операций над rdd. Lazy Evaluation. Типы трансформаций. Lineage. Использование cache, разница между cache и persist.
- •Apache Kafka. Партиции и топики. Репликация данных. Распределение данных в топиках. Leader-follower архитектура. N-sync реплики. Удаление данных из Kafka.
- •Airflow. Назначение и принцип работы. Dag. Сущности Operator и Sensor. Основные виды операторов.
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 позволяют их изменять).