ApplicationManager: Управляет жизненным циклом приложений, начиная от их инициализации до завершения. Этот модуль координирует запуск и мониторинг всех компонентов приложения на узлах кластера.

2. NodeManager (Менеджер узла):

Расположение: Работает на каждом узле кластера.

Функции: NodeManager отвечает за управление ресурсами на конкретном узле. Он отслеживает использование ресурсов (памяти, процессора) на узле и управляет контейнерами (containers) — изолированными средами выполнения, в которых запускаются задачи приложения. NodeManager также регулярно отправляет отчёты о состоянии узла и его ресурсах в ResourceManager.

3. ApplicationMaster (Менеджер приложения):

Расположение: Запускается для каждого приложения, работающего на YARN.

Функции: ApplicationMaster управляет выполнением конкретного приложения. Он запрашивает у ResourceManager необходимые ресурсы, распределяет их между задачами приложения, следит за выполнением задач и обрабатывает возможные сбои. Это обеспечивает гибкость и адаптивность выполнения приложений, так как каждый ApplicationMaster может иметь свои собственные стратегии управления задачами и ресурсами.


YARN значительно улучшает масштабируемость, гибкость и эффективность кластера Hadoop благодаря следующим функциям:

1. Разделение управления ресурсами и обработкой данных:

В отличие от первой версии Hadoop, где MapReduce выполнял функции как фреймворка для обработки данных, так и системы управления ресурсами, YARN выделяет управление ресурсами в отдельный слой. Это позволяет запускать на кластере не только задачи MapReduce, но и другие типы приложений (например, Apache Spark, Apache Flink), что делает Hadoop универсальной платформой для работы с большими данными.

2. Поддержка различных типов рабочих нагрузок:

YARN позволяет одновременно выполнять на одном кластере различные типы приложений, включая интерактивные запросы, поточные вычисления и пакетную обработку данных. Это делает YARN более гибкой системой, способной эффективно использовать ресурсы кластера для различных задач и улучшать общую производительность.

3. Динамическое выделение ресурсов:

Система YARN способна динамически перераспределять ресурсы между приложениями в зависимости от их текущих потребностей. Это означает, что ресурсы, неиспользуемые одним приложением, могут быть перераспределены для других задач, что повышает эффективность использования кластера и уменьшает время простоя ресурсов.

4. Масштабируемость:

YARN спроектирована для работы на масштабируемых кластерах, что позволяет увеличивать количество узлов и приложений без значительных изменений в конфигурации системы. Это достигается благодаря децентрализации управления: ResourceManager и NodeManager распределяют нагрузку, а ApplicationMaster обеспечивает индивидуальное управление приложениями.

Введение YARN произвело революцию в экосистеме Hadoop, превратив её из платформы, ориентированной исключительно на MapReduce, в универсальную среду для выполнения различных типов приложений. YARN открыло возможности для интеграции множества фреймворков и инструментов, таких как Apache Spark, Apache Storm, Apache Flink, и другие. Это сделало Hadoop более гибкой и адаптивной платформой, способной удовлетворять разнообразные потребности современных организаций в области обработки и анализа больших данных.

YARN также обеспечило более эффективное использование ресурсов в кластерах, что позволило компаниям снизить затраты на инфраструктуру и увеличить производительность своих систем. В результате YARN стал неотъемлемым компонентом для всех, кто работает с большими данными, обеспечивая надёжную, масштабируемую и гибкую основу для работы с различными типами данных и вычислений.

Ниже приведена схема, которая показывает, как компоненты YARN взаимодействуют между собой для распределения ресурсов и выполнения задач.

ResourceManager включает в себя два основных модуля: Scheduler и ApplicationManager.

NodeManagers управляют ресурсами на каждом узле, и каждый из них содержит несколько контейнеров (Containers), где выполняются задачи.

ApplicationMasters представляют разные приложения, которые взаимодействуют как с ResourceManager, так и с NodeManagers. (Рис. 2)



— Hive

Hive — это инструмент, разработанный для анализа больших объемов данных, который предоставляет удобный интерфейс, похожий на SQL, для взаимодействия с данными в экосистеме Hadoop. Основная задача Hive — упрощение работы с Hadoop, позволяя пользователям выполнять запросы, обработку и агрегацию данных с помощью языка, близкого к SQL, что делает его доступным для людей, не имеющих глубоких знаний в программировании на Java или MapReduce.

Hive использует язык запросов HiveQL (или HQL), который является расширением SQL и поддерживает большинство стандартных SQL-команд. Это позволяет пользователям писать запросы, управлять данными и создавать отчеты без необходимости напрямую взаимодействовать с Hadoop MapReduce, что может быть сложным и трудоемким процессом. Внутренне Hive преобразует запросы HiveQL в задачи MapReduce, которые затем выполняются на кластере Hadoop. Это превращает сложные вычислительные задачи в последовательность более управляемых шагов, что упрощает работу с большими данными.

Одной из ключевых особенностей Hive является поддержка различных форматов хранения данных, таких как текстовые файлы, паркет (Parquet), Avro и ORC (Optimized Row Columnar). Это позволяет пользователям выбирать наиболее подходящий формат в зависимости от конкретных требований к производительности и эффективности хранения. Hive также включает средства для работы с метаданными, что упрощает управление схемами данных и поддерживает работу с большими и сложными наборами данных.

Hive предлагает возможности для расширения и настройки, что позволяет интегрировать его с различными инструментами и платформами, такими как Apache HBase, Apache Tez и Apache Spark. Эти возможности делают Hive гибким инструментом для обработки и анализа данных, поддерживающим как традиционные задачи бизнес-анализа, так и более сложные вычислительные задачи в области больших данных.

Ниже приведена блок-схема, показывающая работу HiveQL. (Рис. 3)



В этой схеме представлено:

Пользовательский Интерфейс (HiveQL): Пользователь вводит запросы.

Hive: Обрабатывает запросы через парсер, оптимизатор и планировщик.

Hadoop: Выполняет запросы, используя HDFS для хранения данных и MapReduce/Tez/Spark для обработки.

Выходные Данные: Результаты запроса возвращаются пользователю.


— Pig

Pig — это платформа для анализа больших данных, разработанная для упрощения обработки и анализа больших объемов данных, хранящихся в распределенных системах, таких как Apache Hadoop. Pig позволяет пользователям выполнять сложные операции обработки данных, такие как фильтрация, агрегация и преобразование данных, с помощью языка программирования высокого уровня, известного как Pig Latin. Это делает работу с большими данными более доступной для аналитиков и разработчиков, которые не обязательно являются экспертами в низкоуровневом программировании или администрировании систем.

Pig Latin, язык программирования, используемый в Pig, представляет собой декларативный язык, который позволяет пользователям описывать операции обработки данных, не беспокоясь о том, как именно эти операции будут выполнены. Это значительно упрощает создание сложных рабочих процессов, так как пользователи могут сосредоточиться на том, что нужно сделать с данными, а не на том, как это будет осуществлено. Кроме того, Pig Latin обеспечивает гибкость и мощность благодаря своей способности обрабатывать как структурированные, так и неструктурированные данные.

Одной из ключевых особенностей Pig является его способность интегрироваться с Hadoop, что позволяет эффективно использовать ресурсы распределенных систем для обработки больших объемов данных. Pig выполняет свои задачи на основе MapReduce, однако предоставляет более высокоуровневый интерфейс, чем традиционный MapReduce API. Это позволяет ускорить разработку и уменьшить сложность программного обеспечения для обработки данных, поскольку Pig берет на себя управление распределенными вычислениями и хранением данных.

Pig также поддерживает расширения через пользовательские функции и скрипты, что позволяет адаптировать платформу под специфические требования анализа данных. Например, пользователи могут создавать свои собственные функции для обработки данных или интегрировать Pig с другими инструментами и библиотеками для выполнения более сложных задач. Это делает Pig универсальным инструментом для анализа данных, способным справляться с различными задачами и интегрироваться с разными технологиями в экосистеме обработки больших данных.

Процесс работы Pig можно представить в виде нескольких этапов, которые включают подготовку данных, написание и выполнение Pig Latin скрипта, и обработку результатов.

Ниже представлена упрощенная схема того, как работает Pig:

1. Подготовка данных