Сводка
- MapReduce — это платформа параллельной обработки для приложений с большими данными в больших кластерах. Hadoop — это реализация MapReduce с открытым кодом.
- В программах MapReduce обычно есть этап отображения и этап свертки. MapReduce также использует базовую распределенную файловую систему. В Hadoop это HDFS.
- На этапе отображения входные данные делятся на фрагменты и обрабатываются независимо задачами map. Выходные данные задач map сортируются и перетасовываются в секции, которые копируются в задачи reduce. Задачи reduce обрабатывают секции и создают окончательный результат.
- Данные в MapReduce всегда форматируются в виде набора пар "ключ-значение". Ключи в MapReduce используются для перетасовывания данных между этапами отображения и свертки.
- В качестве примеров программ MapReduce, обсуждаемых в этом модуле, можно назвать WordCount, Sort и обнаружение края Sobel.
- Кластер MapReduce состоит из JobTracker (главный узел) и TaskTracker (подчиненные узлы).
- JobTracker назначают задачи для TaskTracker с помощью стратегии извлечения. JobTracker отслеживают TaskTracker и их ход выполнения задач с помощью пакетов пульса.
- Hadoop поддерживает несколько планировщиков заданий, включая FIFO, Fair, Capacity и другие.
- Планировщик FIFO используется по умолчанию и выполняет задания в том порядке, в котором они поступают в кластер. Он не учитывает приоритет или размер задания, а небольшое задание, которое может выполниться за несколько минут, должно ожидать завершения долго выполняющегося задания, стоящего в очереди впереди.
- Fair Scheduler допускает совместное использование ресурсов кластера несколькими заданиями, что позволяет всем заданиям получать равные доли слотов кластера с течением времени.
- Capacity Scheduler — это более сложная версия Fair Scheduler, создающая несколько очередей заданий и планирующая задания на основе приоритета.
- Задачи map в Hadoop выполняются на узлах, находящихся ближе всего к фрагменту, который необходимо обработать. Задачи reduce, между тем, обрабатываются на любом узле по умолчанию без учета расположения.
- Избыточность данных в Hadoop обеспечивается с помощью HDFS посредством репликации блоков.
- Устойчивость задач в Hadoop обеспечивается с помощью спекулятивного выполнения, при котором JobTracker непрерывно отслеживает ход выполнения задач, а медленные или остановившиеся задачи выполняются повторно на другом узле в качестве спекулятивных.
- Hadoop 2.0 предлагает новый диспетчер ресурсов под названием YARN, который содержит несколько улучшений по сравнению с MapReduce 1.0.