SlideShare a Scribd company logo
1 of 37
Download to read offline
Методы распределенной обработки
больших объемов данных в Hadoop
Москва 2014
Лекция 13: YARN
План
• Компоненты YARN
• Детали про выполнение задач MapReduce на
YARN
– Job Submission
– Job Initialization
– Tasks Assignment
– Tasks' Memory
– Status Updates
– Failure Recovery
YARN
• Yet Another Resource Negotiator (YARN)
• Отвечает за
– Cluster Resource Management
– Scheduling
• Различные приложения могут быть запущены на
YARN
– MapReduce как один из вариантов
– http://wiki.apache.org/hadoop/PoweredByYarn
• Также упоминается/называется как MapReduce2.0,
NextGenMapReduce
– Это не совсем правильные названия, т.к. YARN не
привязан к MapReduce
YARN vs. Old MapReduce
• Перед YARN в Hadoop были демоны JobTracker и TaskTracker
– JobTracker отвечает за управление ресурсами и
мониторинг/управление тасками
• Обработка failed tasks
• Task Bookkeeping
• Подход, основанный на JobTracker, имеет свои минусы
– Scalability Bottleneck – 5,000+ nodes, 40 000 tasks
– Гибкость управления cluster resource sharing and allocation
• Slot based approach
• Напр., 12 слотов на машину независимо, насколько от «размера» таска
– Единственная парадигма MapReduce
• В 2010 году в Yahoo! Начали разработку нового поколения
MapReduce - YARN
Пример схемы демонов YARN
Компоненты MapReduce на YARN
• Сlient
– Отправляет и запускает MR-задачу
• Resource Manager
– Контролирует использование ресурсов по всему Hadoop-кластеру
• Node Manager
– Запускается на каждой ноде кластера
– Создает execution container
– Мониторит его использование
• MapReduce Application Master
– Координирует и управляет MR-задачи
– Общается с Resource Manager про шедулинг тасков
– Таски запускаются через NodeManager
• HDFS
– Общее место хранилища ресурсов и данных задач между компонентами
YARN
Выполнение MR-задачи на YARN
Выполнение MR-задачи на YARN
• Клиент отправляет MR-задачу используя объект класса Job
– Клиент запускается в своей собственной JVM
• Код задачи взаимодействует с Resource Manager для получения
мета-данных приложения (в частности, application id)
• Код задачи перемещает все даннные, необходимые для задачи, в
HDFS для того, чтобы они были доступны в последствии
• Код задачи отправляет приложение на Resource Manager
• Resource Manager выбирает Node Manager с доступными
ресурсами и запрашивает контейнер для MRAppMaster
• Node Manager выделяет контейнер для MRAppMaster
– MRAppMaster будет заниматься выполнением и координацией MR-
задачи
• MRAppMaster берет необходимые данные для задачи из HDFS
Выполнение MR-задачи на YARN
• MRAppMaster получает информацию от Resource Manager о
доступных ресурсах
– Resource Manager выберет Node Manager с наибольшим кол-вом
ресурсов
• MRAppMaster говорит выбранному Node Manager запустить
таски Map и Reduce таски
• NodeManager создает контейнеры YarnChild, которые
координируют и выполняют таски
• YarnChild получает данные для задачи из HDFS которые нужны
для выполнения тасков
• YarnChild выполняет таски Map и Reduce
Запуск MapReduce-задачи
• Используется класс для конфигурации задачи
– org.apache.hadoop.mapreduce.Job
• Запуск задачи
– job.waitForCompletion(true)
• Активация протокола YARN
– mapreduce.framework.name= yarn
Запуск MapReduce-задачи, шаги
• Запрашивается Application Id от Resource
Manager
• Job Client проверяет спецификации output
задачи
• Рассчитывается Input Splits
• Job Resources копируются в HDFS
– Jar files, configurations, input splits
• Запуск задачи
Запуск MapReduce-задачи, шаги
Инциализация задачи, шаги
• Resource Manager получает запрос на запуск
нового приложения
• Resource Manager делегирует это своему
внутреннему компоненту – Scheduler
– Существует несколько типов шедулеров
• Scheduler запрашивает контейнер для процесса
Application Master
– Application Master для MapReduce это MRAppMaster
• MRAppMaster инициализирует свои внутренние
объекты и выполняет задачу, общаясь с
Resource Manager
Инциализация MRAppMaster, шаги
• Создает внутренние объекты для мониторинга процесса
• Запрашивает Input Splits
– Были созданы клиентов и лежат в HDFS
• Создает таски
– Map-таск на сплит
– Кол-во Reduce-тасков указывается в mapreduce.job.reduces
• Решает, как запускать таски
– В случае небольшой задачи все тасик будут запущены в
рамках одной MRAppMaster JVM
– Такие задачи называются “uberized” или “uber”
– Выполняет таски на Node Manager
Инциализация MRAppMaster, шаги
MRAppMaster и Uber Job
• Если задача слишком маленькая, то MRAppMaster будет
запускать таски map и reduce внутри одной JVM
– Идея в том, что затраты на осуществление распределенности
таких тасков будет выше, чем запуск их паралельно
• Задача будет являться uber если встречаются все условия:
– Меньше 10 мапперов
• mapreduce.job.ubertask.maxmaps
– Один редьюсер
• mapreduce.job.ubertask.maxreduces
– Размер входных данных меньше размера 1 HDFS-блока
• mapreduce.job.ubertask.maxbytes
• Запуск uber-задач можно отключить
– mapreduce.job.ubertask.enable=false
Task Assignment
• Только для не-Uber задач
• MRAppMaster определяет контейнер для тасков map
и reduce от Resource Manager. Запрос включает:
– Информацию о data locality (hosts & racks), которая
рассчитывается в InputFormat и сохраняется в InputSplits
– Требования по памяти для тасков
• Scheduler в Resource Manager использует
предоставленную информацию для того, чтобы
решить, где размещать таски
– В идеале таск размещается на той же ноде, где и лежат
данные для обработки.
– План Б – внутри той же стойки (rack)
Fine-Grained Memory Model
• В YARN администраторы и разработчики имеют
большой контроль над управлением памятью
– NodeManager
• Обычно один инстанс на машину
– Task Containers, которые запускают таски
• Множество тасков может быть запущено на одном
NodeManager
– Scheduler
– JVM Heap
• Память для кода разработчиков
– Virtual Memory
• Предотвращает монопозизацию машины таском
Memory Model: Node Manager
• Node Manager создает контейнеры, которые
запускают таски map и reduce
– Сумма всех контейнеров не может превышать
заданный лимит
– Node Manager не будет создавать контейнер если
недостаточно доступной памяти
• Лимиты на размер выделенной памяти
определяются для каждого Node Manager
– yarn.nodemanager.resource.memory-mb в yarn-
default.xml
• По-умолчанию 8,192MB
– Задается один раз при запуске
Memory Model: Task Memory
• Контролирует лимит физической памяти для каждой
задачи
– Лимит физической памяти, которую таски могут аллоцировать
– Весь размер используемой физической памяти должен
укладываться в конфигурируемое значение
• Container Memory Usage = JVM Heap Size + JVM Perm Gen + Native
Libraries + Memory used by spawned processes
– Таск убивается, если он превышает размер разрешенной
физической памяти
• Определяется следующими параметрами:
– mapreduce.map.memory.mb для map tasks
– mapreduce.reduce.memory.mb для reduce tasks
– Default memory = 1024
Memory Model: JVM Heap
• Помним
– Container Memory Usage = JVM Heap Size + JVM Perm
Gen + Native Libraries + Memory used by spawned
processes
• JVM Heap size может быть определен через:
– mapreduce.reduce.java.opts
– mapreduce.map.java.opts
Пример: mapreduce.map.java.opts=-Xmx2G
Memory Model: Virtual Memory
• Из документации к top
– "Virtual Memory includes all code, data and shared libraries plus
pages that have been swapped out“
• Аллокации Virtual Memory ограничиваются Node
Manager
– Таск убивается, если превышает размер доступной Virtual
Memory
• Задается как множитель к лимиту физической памяти
– По-умолчанию, это 2.1 от размера физической памяти
контейнера
• Напр., если размер контейнера задан в 1Гб физической памяти,
тогда лимит виртуальной памяти будет 2.1Гб
– yarn.nodemanager.vmem-pmem-ratio в yarn-site.xml
– Задается один раз при запуске
Memory Model: Пример
• Пусть мы хотим задать heap size для map-таска 512Мб и reduce-таска 1Гб
• Client’s Job Configuration
– Heap Size:
• mapreduce.map.java.opts=-Xmx512
• mapreduce.reduce.java.opts=-Xmx1G
– Container Limit, требуется extra 512MB сверх Heap space
• mapreduce.map.memory.mb=1024
• mapreduce.reduce.memory.mb=1536
• YARN NodeManager Configuration – yarn-site.xml
– 10 Gigs наr NodeManager => 10 mappers или 6 reducers (или некоторая
комбинация)
• yarn.nodemanager.resource.memory-mb=10240
– Установить свойство оя Scheduler для выделения 512MB increments
• yarn.scheduler.capacity.minimum-allocation-mb=512
– Virtual Memory limit = 2.1 заданной физической памяти
• 2150.4MB для Map tasks
• 3225.6MB для Reduce tasks
Task Execution
• MRAppMaster делает запрос к Node Manager на
запуск контейнера
– Containers и Node Manager(ы) уже были выбраны на
предыдущем шаге
• Для каждого таска Node Manager стартует контейнер
– java-процесс YarnChild как основной класс
• YarnChild запускается в отдельно выделенной JVM
• YarnChild копирует локально файлы ресурсов
– Configuration, jars и .тд.
• YarnChild выполняет таски map или reduce
MapReduce Task Execution
Components
Status Updates
• Таск отправляет статус на MRAppMaster
– Polling каждый 3 сек
• MRAppMaster аккумулирует и агрегирует информацию
для определения текущего статуса задачи
– Определяет, что задача выполнилась
• Клиент (Job object) запрашивает (poll) MRAppMaster
обновленный статус
– По-умолчанию, каждую секунду
• mapreduce.client.progressmonitor.pollinterval
• Resource Manager Web UI отображает все запущенные
приложения YARN, где каждый ссылается на Web UI of
Application Master
– В нашем случае MRAppMaster Web UI
MapReduce Status Updates
Resource Manager Web UI
Failures
• Могут случиться в:
– Tasks
– Application Master (MRAppMaster)
– Node Manager
– Resource Manager
Task Failures
• Наиболее часто встречается и проще исправить
• Task exceptions и JVM crashes передаются на
MRAppMaster
– Attempt (не таск!) помечается как “failed”
• “Подвисшие” таск будут найдены и killed
– Attempt помечается как “failed”
– Контролируется через mapreduce.task.timeout
• Таск будет считаться failed после 4х попыток
(attempts)
– mapreduce.map.maxattempts
– mapreduce.reduce.maxattempts
Application Master Failures
• Приложение, выполняемое на Application
Master, может быть перезапущено
– По-умолчанию, оно не будет перезапущено и
завершиться после одного failure
– yarn.resourcemanager.am.max-retries
• Resource Manager получает heartbeats от
Application Master (MRAppMaster) и может его
перезапустить в случае ошибки
• Перезапущенный Application Master может
восстановить последнее состояние тасков
– Завершенные таски не будут запущены заново
– yarn.app.mapreduce.am.job.recovery.enable=true
Node Manager Failure
• Failed Node Manager перестанет отправлять
heartbeat-сообщения на Resource Manager
• Resource Manager добавит в black list тот
Node Manager, который не отправлял отчет
более 10 мин
– yarn.resourcemanager.nm.liveness-
monitor.expiryinterval-ms
• Таски на failed Node Manager
восстанавливаются и отправляются на
рабочий Node Manager
Node Manager Blacklisting
• MRAppMaster может добавить в black list
Node Manager, если на этой ноде большое
число failure
• MRAppMaster попробует перезапустить
таски на нормальных нодах
• Black list не аффектит другие задачи
• По-умолчанию должно произойти 3 failre на
ноде чтобы попасть в blacklist
– mapreduce.job.maxtaskfailures.per.tracker
Resource Manager Failures
• Наиболее серьезная проблема, может
привести к downtime
– Задачи и таски не смогут запускаться
• Resource Manager был спроектирован для
автоматического восстановления в таких
случаях
– На данный момент это в процессе разработки
– Сохраняет состояния в постоянное хранилище
– Ожидается реализация через ZooKeeper
Job Scheduling
• По-умолчанию, используется FIFO
– Поддержка нескольких приоритетов:
• VERY_LOW, LOW, NORMAL, HIGH и VERY_HIGH
– Два пути для задания приоритета
• mapreduce.job.priority property
• job.setPriority(JobPriority.HIGH)
• Два основных типа шедулера
– CapacityScheduler
• Общий, многоцелевой кластер
• Гарантируется емкость ресурсов (capacity)
– FairScheduler
• Гарантирует честное распределение ресурсов между
приложениями
Powered by YARN
• Apache Giraph
– Итеративная система обработки графов
– Facebook обрабатывает триллион ребер за ~4 мин
• Spark
– Платформа для быстрой аналитики данных
• Apache HAMA
– Фреймворк для массивных научных вычислений над
матрицами, графами и сетями
• Open MPI
Вопросы?

More Related Content

What's hot

Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016Markus Höfer
 
Apache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLab
Apache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLabApache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLab
Apache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLabCloudxLab
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
 
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduceRoman Brovko
 
What to do if Your Kafka Streams App Gets OOMKilled? with Andrey Serebryanskiy
What to do if Your Kafka Streams App Gets OOMKilled? with Andrey SerebryanskiyWhat to do if Your Kafka Streams App Gets OOMKilled? with Andrey Serebryanskiy
What to do if Your Kafka Streams App Gets OOMKilled? with Andrey SerebryanskiyHostedbyConfluent
 
Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...
Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...
Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...DataStax
 
Resilient Distributed DataSets - Apache SPARK
Resilient Distributed DataSets - Apache SPARKResilient Distributed DataSets - Apache SPARK
Resilient Distributed DataSets - Apache SPARKTaposh Roy
 
Introduction to Yarn
Introduction to YarnIntroduction to Yarn
Introduction to YarnApache Apex
 
MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka
MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka
MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka Edureka!
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMongoDB
 
Hive+Tez: A performance deep dive
Hive+Tez: A performance deep diveHive+Tez: A performance deep dive
Hive+Tez: A performance deep divet3rmin4t0r
 
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...Databricks
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationshadooparchbook
 
Streaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScaleStreaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScaleMariaDB plc
 
Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...
Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...
Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...Simplilearn
 
03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-командыRoman Brovko
 
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBaseHBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBaseHBaseCon
 

What's hot (20)

Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016Bucket your partitions wisely - Cassandra summit 2016
Bucket your partitions wisely - Cassandra summit 2016
 
Apache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLab
Apache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLabApache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLab
Apache Spark - Basics of RDD | Big Data Hadoop Spark Tutorial | CloudxLab
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce
 
What to do if Your Kafka Streams App Gets OOMKilled? with Andrey Serebryanskiy
What to do if Your Kafka Streams App Gets OOMKilled? with Andrey SerebryanskiyWhat to do if Your Kafka Streams App Gets OOMKilled? with Andrey Serebryanskiy
What to do if Your Kafka Streams App Gets OOMKilled? with Andrey Serebryanskiy
 
Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...
Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...
Advanced Cassandra Operations via JMX (Nate McCall, The Last Pickle) | C* Sum...
 
Resilient Distributed DataSets - Apache SPARK
Resilient Distributed DataSets - Apache SPARKResilient Distributed DataSets - Apache SPARK
Resilient Distributed DataSets - Apache SPARK
 
Introduction to Yarn
Introduction to YarnIntroduction to Yarn
Introduction to Yarn
 
MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka
MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka
MapReduce Example | MapReduce Programming | Hadoop MapReduce Tutorial | Edureka
 
Hadoop and Big Data
Hadoop and Big DataHadoop and Big Data
Hadoop and Big Data
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
Hive+Tez: A performance deep dive
Hive+Tez: A performance deep diveHive+Tez: A performance deep dive
Hive+Tez: A performance deep dive
 
Hive: Loading Data
Hive: Loading DataHive: Loading Data
Hive: Loading Data
 
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
Deep Dive into Stateful Stream Processing in Structured Streaming with Tathag...
 
Top 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applicationsTop 5 mistakes when writing Spark applications
Top 5 mistakes when writing Spark applications
 
Streaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScaleStreaming Operational Data with MariaDB MaxScale
Streaming Operational Data with MariaDB MaxScale
 
Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...
Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...
Hadoop YARN | Hadoop YARN Architecture | Hadoop YARN Tutorial | Hadoop Tutori...
 
03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды
 
Hadoop Internals
Hadoop InternalsHadoop Internals
Hadoop Internals
 
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBaseHBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
HBaseCon 2015: Taming GC Pauses for Large Java Heap in HBase
 

Viewers also liked

Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache MahoutTechnopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveTechnopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeperTechnopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuTechnopark
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceTechnopark
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 

Viewers also liked (9)

Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 

Similar to Лекция 13. YARN

15 - Hadoop. YARN. MapReduce 2.0
15 - Hadoop. YARN. MapReduce 2.015 - Hadoop. YARN. MapReduce 2.0
15 - Hadoop. YARN. MapReduce 2.0Roman Brovko
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Alexey Zinoviev
 
Курс "Хранение и Обработка больших данны". Лекция 5 YARN
Курс "Хранение и Обработка больших данны". Лекция 5 YARNКурс "Хранение и Обработка больших данны". Лекция 5 YARN
Курс "Хранение и Обработка больших данны". Лекция 5 YARNPavel Mezentsev
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentationVlad Orlov
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийSveta Smirnova
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoFDmitry Buzdin
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...PavelKonotopov
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 

Similar to Лекция 13. YARN (10)

15 - Hadoop. YARN. MapReduce 2.0
15 - Hadoop. YARN. MapReduce 2.015 - Hadoop. YARN. MapReduce 2.0
15 - Hadoop. YARN. MapReduce 2.0
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Yarn
YarnYarn
Yarn
 
Курс "Хранение и Обработка больших данны". Лекция 5 YARN
Курс "Хранение и Обработка больших данны". Лекция 5 YARNКурс "Хранение и Обработка больших данны". Лекция 5 YARN
Курс "Хранение и Обработка больших данны". Лекция 5 YARN
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 
Java Platform Performance BoF
Java Platform Performance BoFJava Platform Performance BoF
Java Platform Performance BoF
 
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
Building the Enterprise infrastructure with PostgreSQL as the basis for stori...
 
Map reduce
Map reduceMap reduce
Map reduce
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 

More from Technopark

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7Technopark
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6Technopark
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5Technopark
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1Technopark
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2Technopark
 

More from Technopark (18)

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
 

Лекция 13. YARN

  • 1. Методы распределенной обработки больших объемов данных в Hadoop Москва 2014 Лекция 13: YARN
  • 2. План • Компоненты YARN • Детали про выполнение задач MapReduce на YARN – Job Submission – Job Initialization – Tasks Assignment – Tasks' Memory – Status Updates – Failure Recovery
  • 3. YARN • Yet Another Resource Negotiator (YARN) • Отвечает за – Cluster Resource Management – Scheduling • Различные приложения могут быть запущены на YARN – MapReduce как один из вариантов – http://wiki.apache.org/hadoop/PoweredByYarn • Также упоминается/называется как MapReduce2.0, NextGenMapReduce – Это не совсем правильные названия, т.к. YARN не привязан к MapReduce
  • 4. YARN vs. Old MapReduce • Перед YARN в Hadoop были демоны JobTracker и TaskTracker – JobTracker отвечает за управление ресурсами и мониторинг/управление тасками • Обработка failed tasks • Task Bookkeeping • Подход, основанный на JobTracker, имеет свои минусы – Scalability Bottleneck – 5,000+ nodes, 40 000 tasks – Гибкость управления cluster resource sharing and allocation • Slot based approach • Напр., 12 слотов на машину независимо, насколько от «размера» таска – Единственная парадигма MapReduce • В 2010 году в Yahoo! Начали разработку нового поколения MapReduce - YARN
  • 6. Компоненты MapReduce на YARN • Сlient – Отправляет и запускает MR-задачу • Resource Manager – Контролирует использование ресурсов по всему Hadoop-кластеру • Node Manager – Запускается на каждой ноде кластера – Создает execution container – Мониторит его использование • MapReduce Application Master – Координирует и управляет MR-задачи – Общается с Resource Manager про шедулинг тасков – Таски запускаются через NodeManager • HDFS – Общее место хранилища ресурсов и данных задач между компонентами YARN
  • 8. Выполнение MR-задачи на YARN • Клиент отправляет MR-задачу используя объект класса Job – Клиент запускается в своей собственной JVM • Код задачи взаимодействует с Resource Manager для получения мета-данных приложения (в частности, application id) • Код задачи перемещает все даннные, необходимые для задачи, в HDFS для того, чтобы они были доступны в последствии • Код задачи отправляет приложение на Resource Manager • Resource Manager выбирает Node Manager с доступными ресурсами и запрашивает контейнер для MRAppMaster • Node Manager выделяет контейнер для MRAppMaster – MRAppMaster будет заниматься выполнением и координацией MR- задачи • MRAppMaster берет необходимые данные для задачи из HDFS
  • 9. Выполнение MR-задачи на YARN • MRAppMaster получает информацию от Resource Manager о доступных ресурсах – Resource Manager выберет Node Manager с наибольшим кол-вом ресурсов • MRAppMaster говорит выбранному Node Manager запустить таски Map и Reduce таски • NodeManager создает контейнеры YarnChild, которые координируют и выполняют таски • YarnChild получает данные для задачи из HDFS которые нужны для выполнения тасков • YarnChild выполняет таски Map и Reduce
  • 10. Запуск MapReduce-задачи • Используется класс для конфигурации задачи – org.apache.hadoop.mapreduce.Job • Запуск задачи – job.waitForCompletion(true) • Активация протокола YARN – mapreduce.framework.name= yarn
  • 11. Запуск MapReduce-задачи, шаги • Запрашивается Application Id от Resource Manager • Job Client проверяет спецификации output задачи • Рассчитывается Input Splits • Job Resources копируются в HDFS – Jar files, configurations, input splits • Запуск задачи
  • 13. Инциализация задачи, шаги • Resource Manager получает запрос на запуск нового приложения • Resource Manager делегирует это своему внутреннему компоненту – Scheduler – Существует несколько типов шедулеров • Scheduler запрашивает контейнер для процесса Application Master – Application Master для MapReduce это MRAppMaster • MRAppMaster инициализирует свои внутренние объекты и выполняет задачу, общаясь с Resource Manager
  • 14. Инциализация MRAppMaster, шаги • Создает внутренние объекты для мониторинга процесса • Запрашивает Input Splits – Были созданы клиентов и лежат в HDFS • Создает таски – Map-таск на сплит – Кол-во Reduce-тасков указывается в mapreduce.job.reduces • Решает, как запускать таски – В случае небольшой задачи все тасик будут запущены в рамках одной MRAppMaster JVM – Такие задачи называются “uberized” или “uber” – Выполняет таски на Node Manager
  • 16. MRAppMaster и Uber Job • Если задача слишком маленькая, то MRAppMaster будет запускать таски map и reduce внутри одной JVM – Идея в том, что затраты на осуществление распределенности таких тасков будет выше, чем запуск их паралельно • Задача будет являться uber если встречаются все условия: – Меньше 10 мапперов • mapreduce.job.ubertask.maxmaps – Один редьюсер • mapreduce.job.ubertask.maxreduces – Размер входных данных меньше размера 1 HDFS-блока • mapreduce.job.ubertask.maxbytes • Запуск uber-задач можно отключить – mapreduce.job.ubertask.enable=false
  • 17. Task Assignment • Только для не-Uber задач • MRAppMaster определяет контейнер для тасков map и reduce от Resource Manager. Запрос включает: – Информацию о data locality (hosts & racks), которая рассчитывается в InputFormat и сохраняется в InputSplits – Требования по памяти для тасков • Scheduler в Resource Manager использует предоставленную информацию для того, чтобы решить, где размещать таски – В идеале таск размещается на той же ноде, где и лежат данные для обработки. – План Б – внутри той же стойки (rack)
  • 18. Fine-Grained Memory Model • В YARN администраторы и разработчики имеют большой контроль над управлением памятью – NodeManager • Обычно один инстанс на машину – Task Containers, которые запускают таски • Множество тасков может быть запущено на одном NodeManager – Scheduler – JVM Heap • Память для кода разработчиков – Virtual Memory • Предотвращает монопозизацию машины таском
  • 19. Memory Model: Node Manager • Node Manager создает контейнеры, которые запускают таски map и reduce – Сумма всех контейнеров не может превышать заданный лимит – Node Manager не будет создавать контейнер если недостаточно доступной памяти • Лимиты на размер выделенной памяти определяются для каждого Node Manager – yarn.nodemanager.resource.memory-mb в yarn- default.xml • По-умолчанию 8,192MB – Задается один раз при запуске
  • 20. Memory Model: Task Memory • Контролирует лимит физической памяти для каждой задачи – Лимит физической памяти, которую таски могут аллоцировать – Весь размер используемой физической памяти должен укладываться в конфигурируемое значение • Container Memory Usage = JVM Heap Size + JVM Perm Gen + Native Libraries + Memory used by spawned processes – Таск убивается, если он превышает размер разрешенной физической памяти • Определяется следующими параметрами: – mapreduce.map.memory.mb для map tasks – mapreduce.reduce.memory.mb для reduce tasks – Default memory = 1024
  • 21. Memory Model: JVM Heap • Помним – Container Memory Usage = JVM Heap Size + JVM Perm Gen + Native Libraries + Memory used by spawned processes • JVM Heap size может быть определен через: – mapreduce.reduce.java.opts – mapreduce.map.java.opts Пример: mapreduce.map.java.opts=-Xmx2G
  • 22. Memory Model: Virtual Memory • Из документации к top – "Virtual Memory includes all code, data and shared libraries plus pages that have been swapped out“ • Аллокации Virtual Memory ограничиваются Node Manager – Таск убивается, если превышает размер доступной Virtual Memory • Задается как множитель к лимиту физической памяти – По-умолчанию, это 2.1 от размера физической памяти контейнера • Напр., если размер контейнера задан в 1Гб физической памяти, тогда лимит виртуальной памяти будет 2.1Гб – yarn.nodemanager.vmem-pmem-ratio в yarn-site.xml – Задается один раз при запуске
  • 23. Memory Model: Пример • Пусть мы хотим задать heap size для map-таска 512Мб и reduce-таска 1Гб • Client’s Job Configuration – Heap Size: • mapreduce.map.java.opts=-Xmx512 • mapreduce.reduce.java.opts=-Xmx1G – Container Limit, требуется extra 512MB сверх Heap space • mapreduce.map.memory.mb=1024 • mapreduce.reduce.memory.mb=1536 • YARN NodeManager Configuration – yarn-site.xml – 10 Gigs наr NodeManager => 10 mappers или 6 reducers (или некоторая комбинация) • yarn.nodemanager.resource.memory-mb=10240 – Установить свойство оя Scheduler для выделения 512MB increments • yarn.scheduler.capacity.minimum-allocation-mb=512 – Virtual Memory limit = 2.1 заданной физической памяти • 2150.4MB для Map tasks • 3225.6MB для Reduce tasks
  • 24. Task Execution • MRAppMaster делает запрос к Node Manager на запуск контейнера – Containers и Node Manager(ы) уже были выбраны на предыдущем шаге • Для каждого таска Node Manager стартует контейнер – java-процесс YarnChild как основной класс • YarnChild запускается в отдельно выделенной JVM • YarnChild копирует локально файлы ресурсов – Configuration, jars и .тд. • YarnChild выполняет таски map или reduce
  • 26. Status Updates • Таск отправляет статус на MRAppMaster – Polling каждый 3 сек • MRAppMaster аккумулирует и агрегирует информацию для определения текущего статуса задачи – Определяет, что задача выполнилась • Клиент (Job object) запрашивает (poll) MRAppMaster обновленный статус – По-умолчанию, каждую секунду • mapreduce.client.progressmonitor.pollinterval • Resource Manager Web UI отображает все запущенные приложения YARN, где каждый ссылается на Web UI of Application Master – В нашем случае MRAppMaster Web UI
  • 29. Failures • Могут случиться в: – Tasks – Application Master (MRAppMaster) – Node Manager – Resource Manager
  • 30. Task Failures • Наиболее часто встречается и проще исправить • Task exceptions и JVM crashes передаются на MRAppMaster – Attempt (не таск!) помечается как “failed” • “Подвисшие” таск будут найдены и killed – Attempt помечается как “failed” – Контролируется через mapreduce.task.timeout • Таск будет считаться failed после 4х попыток (attempts) – mapreduce.map.maxattempts – mapreduce.reduce.maxattempts
  • 31. Application Master Failures • Приложение, выполняемое на Application Master, может быть перезапущено – По-умолчанию, оно не будет перезапущено и завершиться после одного failure – yarn.resourcemanager.am.max-retries • Resource Manager получает heartbeats от Application Master (MRAppMaster) и может его перезапустить в случае ошибки • Перезапущенный Application Master может восстановить последнее состояние тасков – Завершенные таски не будут запущены заново – yarn.app.mapreduce.am.job.recovery.enable=true
  • 32. Node Manager Failure • Failed Node Manager перестанет отправлять heartbeat-сообщения на Resource Manager • Resource Manager добавит в black list тот Node Manager, который не отправлял отчет более 10 мин – yarn.resourcemanager.nm.liveness- monitor.expiryinterval-ms • Таски на failed Node Manager восстанавливаются и отправляются на рабочий Node Manager
  • 33. Node Manager Blacklisting • MRAppMaster может добавить в black list Node Manager, если на этой ноде большое число failure • MRAppMaster попробует перезапустить таски на нормальных нодах • Black list не аффектит другие задачи • По-умолчанию должно произойти 3 failre на ноде чтобы попасть в blacklist – mapreduce.job.maxtaskfailures.per.tracker
  • 34. Resource Manager Failures • Наиболее серьезная проблема, может привести к downtime – Задачи и таски не смогут запускаться • Resource Manager был спроектирован для автоматического восстановления в таких случаях – На данный момент это в процессе разработки – Сохраняет состояния в постоянное хранилище – Ожидается реализация через ZooKeeper
  • 35. Job Scheduling • По-умолчанию, используется FIFO – Поддержка нескольких приоритетов: • VERY_LOW, LOW, NORMAL, HIGH и VERY_HIGH – Два пути для задания приоритета • mapreduce.job.priority property • job.setPriority(JobPriority.HIGH) • Два основных типа шедулера – CapacityScheduler • Общий, многоцелевой кластер • Гарантируется емкость ресурсов (capacity) – FairScheduler • Гарантирует честное распределение ресурсов между приложениями
  • 36. Powered by YARN • Apache Giraph – Итеративная система обработки графов – Facebook обрабатывает триллион ребер за ~4 мин • Spark – Платформа для быстрой аналитики данных • Apache HAMA – Фреймворк для массивных научных вычислений над матрицами, графами и сетями • Open MPI