Yarn(Yet Another Resource Negotiator) — платформа планирования ресурсов, которая отвечает за выделение ресурсов и планирование вычислительных программ, таких как Spark и MapReduce, и не участвует во внутренней работе пользовательских программ. То же самое относится к архитектуре Master/Slave.
Следующий рисунок MapReduce отправлен Yarn для запуска в качестве примера, чтобы увидеть, какие основные компоненты Yarn в основном включает и роль каждого компонента:
Глобальный менеджер ресурсов (ResourceManager)
Главный узел, глобальный менеджер ресурсов, отвечает за управление ресурсами и их распределение во всей системе и в основном состоит из планировщика и диспетчера приложений.
Планировщик выделяет ресурсы в системе для каждого работающего приложения на основе ограничений, таких как емкость и очереди (например, количество ресурсов, выделенных для каждой очереди, максимальное количество заданий для выполнения и т. д.). Диспетчер приложений (ApplicationsManager) отвечает за управление всеми приложениями во всей системе, включая отправку приложений, согласование ресурсов с планировщиком для запуска, мониторинг Мастера приложений и его перезапуск в случае сбоя и т. д.
Менеджер узлов (NodeManager)
Подчиненный узел, диспетчер ресурсов и задач на каждом узле, должен сообщать диспетчеру ресурсов об использовании ресурсов на узле и рабочем состоянии каждого контейнера и в то же время получать и обрабатывать различные запросы от мастера приложений, такого как контейнер. старт/стоп
Диспетчер приложений (Мастер приложений)
Каждое приложение, отправленное пользователем, содержит менеджер приложений, который соответствует запуску MapReduce от имени MRAppMaster.Основные функции включают в себя:
1. Подайте заявку на ресурсы к глобальному менеджеру ресурсов
2. Далее распределяем полученные ресурсы на внутренние задачи
3. Общайтесь с обозревателем узлов, чтобы запускать/останавливать задачи.
4. Отслеживайте состояние выполнения всех задач и повторно применяйте ресурсы для задачи, чтобы перезапустить задачу, если задача не запускается.
Container
Его можно понимать как класс в Yarn, который инкапсулирует ресурсы, запрошенные узлом.Ресурсы, такие как память, ЦП и т. д., динамически генерируются в соответствии с требованиями приложения и являются базовой единицей разделения ресурсов в Yarn. На узле NodeManager одновременно существует несколько контейнеров. Каждая задача, отправляющая задание, выполняется в контейнере.
Планировщик пряжи
В соответствии с некоторыми ограничениями, такими как количество ресурсов, выделенных для каждой очереди, и максимальное количество заданий, которые должны быть выполнены, ресурсы в системе выделяются каждому приложению в соответствии с требованиями приложения к ресурсам. контейнер, упомянутый выше, и пользователь может создать новый планировщик для своих нужд. Yarn также предоставляет множество планировщиков, которые можно использовать напрямую:
FIFOScheduler (планировщик «первым поступил — первым обслужен»): не поддерживает вытеснение. Если есть особенно медленная задача, это повлияет на другие задачи.
FairScheduler: каждый пользователь справедливо распределяет ресурсы кластера и поддерживает вытеснение.Если некоторые задачи занимают много ресурсов в течение длительного времени, превышая долю ресурсов, которые должны быть выделены, задачи, которые получают слишком много ресурсов, будут прекращены.
CapacityScheduler (планировщик емкости): очередь с иерархической структурой, каждой очереди выделяется определенная емкость (например, назначение небольших заданий и больших заданий в разные очереди), а одна очередь поддерживает FIFO внутри
Автор подчеркивает:
1. Yarn не знает механизма работы программы, представленной пользователем, и обеспечивает только планирование вычислительных ресурсов (пользовательская программа обращается за ресурсами к yarn, а yarn отвечает за их распределение)
2. Роль руководителя в Yarn — это ResourceManager, а конкретная роль, предоставляющая вычислительные ресурсы, — NodeManager.
3. Yarn полностью отделен от запущенной пользовательской программы, что означает, что на Yarn можно запускать различные типы распределенных вычислительных программ, таких как Spark, MapReduce, Storm, Tez и т. д., при условии, что есть запросы ресурсов, соответствующие Yarn. спецификации в этих технических рамках механизм
4. Поскольку Yarn не участвует в выполнении пользовательских программ и т. д., Yarn становится общей платформой планирования ресурсов. Различные кластеры вычислительных машин, ранее существовавшие на предприятии, могут быть интегрированы в платформу управления ресурсами для повышения эффективности использования ресурсов.
5. Планировщик не участвует ни в какой работе, связанной с конкретным приложением, например, в мониторинге или отслеживании состояния выполнения приложения и т. д., а также не несет ответственности за перезапуск невыполненных задач, вызванных сбоем выполнения приложения или аппаратным сбоем, это все передано приложению.Мастер приложений, связанных с программой, завершен.
Статьи по Теме:
Распределенная файловая система HDFS
Несколько вопросов, которые вы должны знать о HDFS
обрати внимание наОфициальный аккаунт WeChat: обучение и обмен большими данными, получите больше технических галантерейных товаров