SlideShare a Scribd company logo
1 of 18
Download to read offline
Map-Reduce
в
Hadoop
split 0
split 1
split 2
split 3
split 4
worker
worker
worker
worker
worker
output
file 0
output
file 1
Input
files
Map
phase
Intermediate files
(on local disk)
Reduce
phase
Output
files
Схема Map-Reduce
split 0
split 1
split 2
split 3
split 4
worker
worker
worker
Input
files
Map
phase
Входные данные
• Входные данные должны быть
разделяемыми (splitable):
 файл .gz не делется
 Обычно split=block в hdfs
• Данные в каждом split должны быть
независимыми
• Один worker обрабатывает один split
(число worker = число split)
• Worker обычно запускается там, где
лежит его split
Передача данных между Map и Reduce
• Промежуточные данные пишутся
на локальный диск
• Для каждого редьюсера маппер
создает свой файл с данными
• Дынные – это пара (Key, Value)
• Данные с одним Key попадают на
один Reducer
• Редьюсеры начинают работать
после завершения всех мапперов
worker
worker
worker
worker
worker
Map
phase
Intermediate files
(on local disk)
Reduce
phase
Результат Map-Reduce задачи
• Каждый редьюсер пишет в один
файл
• Число редьюсеров задает
пользователь
• Данные сохраняются в hdfs
• Данные вида Key -> Value
• Формат данных определяется
пользователем
worker
worker
output
file 0
output
file 1
Reduce
phase
Output
files
split 0
split 1
split 2
split 3
split 4
worker
worker
worker
output
file 0
output
file 1
Input
files
Map
phase
Output
files
output
file 2
Map-Reduce без Reduce
split 0
split 1
split 2
split 3
split 4
worker
worker
worker
worker
worker
Master
User
Program
output
file 0
output
file 1
Input
files
Map
phase
Intermediate files
(on local disk)
Reduce
phase
Output
files
MapReduce в Hadoop
• Управление запуском задач
• Управление “data distribution”
• Управление синхронизацией этапов
MapReduce
• Обработка ошибок и отказов
• Все работает поверх HDFS
datanode daemon
Linux file system
…
tasktracker
slave node
datanode daemon
Linux file system
…
tasktracker
slave node
datanode daemon
Linux file system
…
tasktracker
slave node
namenode
namenode daemon
job submission node
jobtracker
JobTracker
• Управляет запуском тасков и определяет, на
каком TaskTracker будет запущен worker
• Управляет процессом работы MapReduce
задач (jobs)
• Мониторит прогресс выполнения задач
• Перезапускает зафейленные или
медленные таски
TaskTracker
• Отвечает за работу всех worker на одном
сервере
• Получает от JobTracker информацию о том,
какой worker на каких данных нужно запустить
• Посылает в JobTracker статистику о прогрессе
выполнения задачи (counters)
• Сообщает в JobTracker об удачном завершении
или падении worker
Система слотов
• Для каждого TaskTracker определяется
число слотов (slots)
• Таск запускается на одном слоте
• M мапперов + R редьюсеров = N слотов
• Для каждого слота определяется кол-во
потребляемой ОЗУ
mapmap map map
k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6
ba 1 2 c c3 6 a c5 2 b c7 8
mapmap map map
k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6
ba 1 2 c c3 6 a c5 2 b c7 8
Shuffle and Sort: aggregate values by keys
reduce reduce reduce
a 1 5 b 2 7
6 9 19
c 2 3 6 8
a b c
combinecombine combine combine
ba 1 2 c 9 a c5 2 b c7 8
partition partition partition partition
mapmap map map
k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6
ba 1 2 c c3 6 a c5 2 b c7 8
Shuffle and Sort: aggregate values by keys
reduce reduce reduce
a 1 5 b 2 7 c 2 9 8
6 9 19a b c
Основные функции
Программист определяет:
– map (k1, v1) → list(k2, v2)
– reduce (k2, list(v2*) )→ list(k3, v3)
Опциональные функции
partition (k2, v2, |reducers|) → № of reducer
– распределяет ключи по редьюсерам
– Часто просто хеш от key: hash(k2) mod n
Опциональные функции
combine (k2, v2) → list(k2, v2’)
– Мини-reducers которые выполняются после
завершения фазы map
– Используется в качестве оптимизации для
снижения сетевого трафика на reduce
– (!) Не должен менять тип ключа и значения

More Related Content

What's hot

netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
Kernel TLV
 
How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)
Gavin Guo
 

What's hot (20)

Galera cluster for MySQL - Introduction Slides
Galera cluster for MySQL - Introduction SlidesGalera cluster for MySQL - Introduction Slides
Galera cluster for MySQL - Introduction Slides
 
New Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using TracingNew Ways to Find Latency in Linux Using Tracing
New Ways to Find Latency in Linux Using Tracing
 
Kernel Recipes 2017 - EBPF and XDP - Eric Leblond
Kernel Recipes 2017 - EBPF and XDP - Eric LeblondKernel Recipes 2017 - EBPF and XDP - Eric Leblond
Kernel Recipes 2017 - EBPF and XDP - Eric Leblond
 
Performance Tuning EC2 Instances
Performance Tuning EC2 InstancesPerformance Tuning EC2 Instances
Performance Tuning EC2 Instances
 
Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Physical Memory Management.pdf
Physical Memory Management.pdfPhysical Memory Management.pdf
Physical Memory Management.pdf
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems Performance
 
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV ClusterMethod of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
Method of NUMA-Aware Resource Management for Kubernetes 5G NFV Cluster
 
Linux Preempt-RT Internals
Linux Preempt-RT InternalsLinux Preempt-RT Internals
Linux Preempt-RT Internals
 
netfilter and iptables
netfilter and iptablesnetfilter and iptables
netfilter and iptables
 
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all startedKernel Recipes 2019 - ftrace: Where modifying a running kernel all started
Kernel Recipes 2019 - ftrace: Where modifying a running kernel all started
 
Kernel Recipes 2017: Using Linux perf at Netflix
Kernel Recipes 2017: Using Linux perf at NetflixKernel Recipes 2017: Using Linux perf at Netflix
Kernel Recipes 2017: Using Linux perf at Netflix
 
LCA14: LCA14-306: CPUidle & CPUfreq integration with scheduler
LCA14: LCA14-306: CPUidle & CPUfreq integration with schedulerLCA14: LCA14-306: CPUidle & CPUfreq integration with scheduler
LCA14: LCA14-306: CPUidle & CPUfreq integration with scheduler
 
MySQL GTID 시작하기
MySQL GTID 시작하기MySQL GTID 시작하기
MySQL GTID 시작하기
 
How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)How to use KASAN to debug memory corruption in OpenStack environment- (2)
How to use KASAN to debug memory corruption in OpenStack environment- (2)
 
Function Level Analysis of Linux NVMe Driver
Function Level Analysis of Linux NVMe DriverFunction Level Analysis of Linux NVMe Driver
Function Level Analysis of Linux NVMe Driver
 
DMA Survival Guide
DMA Survival GuideDMA Survival Guide
DMA Survival Guide
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
Redis and it's data types
Redis and it's data typesRedis and it's data types
Redis and it's data types
 
How to configure a hive high availability connection with zeppelin
How to configure a hive high availability connection with zeppelinHow to configure a hive high availability connection with zeppelin
How to configure a hive high availability connection with zeppelin
 

Similar to 05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce

Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
rit2011
 
алексей романенко
алексей романенкоалексей романенко
алексей романенко
kuchinskaya
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON
 

Similar to 05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce (20)

Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Hadoops MapReduce framework explanations
Hadoops MapReduce framework explanationsHadoops MapReduce framework explanations
Hadoops MapReduce framework explanations
 
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
 
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
 
SECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до Z
SECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до ZSECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до Z
SECON'2016. Кочков Антон, Рютин Борис, Radare2 - от A до Z
 
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон КорзуновПравильная организация клиент-карточного взаимодействия — Антон Корзунов
Правильная организация клиент-карточного взаимодействия — Антон Корзунов
 
алексей романенко
алексей романенкоалексей романенко
алексей романенко
 
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
SDN & DEVOPS ?= ❤: Практики использования SDN / Александр Шалимов (ЦПИКС, МГУ)
 
JSQuest d:)
JSQuest   d:)JSQuest   d:)
JSQuest d:)
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce
 
TMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: GenodeTMPA-2013 Sartakov: Genode
TMPA-2013 Sartakov: Genode
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1#PostgreSQLRussia в банке Тинькофф, доклад №1
#PostgreSQLRussia в банке Тинькофф, доклад №1
 
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИССуперсилы Chrome DevTools — Роман Сальников, 2ГИС
Суперсилы Chrome DevTools — Роман Сальников, 2ГИС
 
directx
directxdirectx
directx
 
linux and freebsd monitoring
linux and freebsd monitoringlinux and freebsd monitoring
linux and freebsd monitoring
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkDF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/LinuxSECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
SECON'2017, Клементьев Михаил, Обнаружение руткитов в GNU/Linux
 

More from Roman Brovko

Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
Roman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
Roman Brovko
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
Roman Brovko
 

More from Roman Brovko (20)

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
 

05 - Hadoop. Парадигма MapReduce и фреймворк MapReduce

  • 2. split 0 split 1 split 2 split 3 split 4 worker worker worker worker worker output file 0 output file 1 Input files Map phase Intermediate files (on local disk) Reduce phase Output files Схема Map-Reduce
  • 3. split 0 split 1 split 2 split 3 split 4 worker worker worker Input files Map phase Входные данные • Входные данные должны быть разделяемыми (splitable):  файл .gz не делется  Обычно split=block в hdfs • Данные в каждом split должны быть независимыми • Один worker обрабатывает один split (число worker = число split) • Worker обычно запускается там, где лежит его split
  • 4. Передача данных между Map и Reduce • Промежуточные данные пишутся на локальный диск • Для каждого редьюсера маппер создает свой файл с данными • Дынные – это пара (Key, Value) • Данные с одним Key попадают на один Reducer • Редьюсеры начинают работать после завершения всех мапперов worker worker worker worker worker Map phase Intermediate files (on local disk) Reduce phase
  • 5. Результат Map-Reduce задачи • Каждый редьюсер пишет в один файл • Число редьюсеров задает пользователь • Данные сохраняются в hdfs • Данные вида Key -> Value • Формат данных определяется пользователем worker worker output file 0 output file 1 Reduce phase Output files
  • 6. split 0 split 1 split 2 split 3 split 4 worker worker worker output file 0 output file 1 Input files Map phase Output files output file 2 Map-Reduce без Reduce
  • 7. split 0 split 1 split 2 split 3 split 4 worker worker worker worker worker Master User Program output file 0 output file 1 Input files Map phase Intermediate files (on local disk) Reduce phase Output files
  • 8. MapReduce в Hadoop • Управление запуском задач • Управление “data distribution” • Управление синхронизацией этапов MapReduce • Обработка ошибок и отказов • Все работает поверх HDFS
  • 9. datanode daemon Linux file system … tasktracker slave node datanode daemon Linux file system … tasktracker slave node datanode daemon Linux file system … tasktracker slave node namenode namenode daemon job submission node jobtracker
  • 10. JobTracker • Управляет запуском тасков и определяет, на каком TaskTracker будет запущен worker • Управляет процессом работы MapReduce задач (jobs) • Мониторит прогресс выполнения задач • Перезапускает зафейленные или медленные таски
  • 11. TaskTracker • Отвечает за работу всех worker на одном сервере • Получает от JobTracker информацию о том, какой worker на каких данных нужно запустить • Посылает в JobTracker статистику о прогрессе выполнения задачи (counters) • Сообщает в JobTracker об удачном завершении или падении worker
  • 12. Система слотов • Для каждого TaskTracker определяется число слотов (slots) • Таск запускается на одном слоте • M мапперов + R редьюсеров = N слотов • Для каждого слота определяется кол-во потребляемой ОЗУ
  • 13. mapmap map map k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6 ba 1 2 c c3 6 a c5 2 b c7 8
  • 14. mapmap map map k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6 ba 1 2 c c3 6 a c5 2 b c7 8 Shuffle and Sort: aggregate values by keys reduce reduce reduce a 1 5 b 2 7 6 9 19 c 2 3 6 8 a b c
  • 15. combinecombine combine combine ba 1 2 c 9 a c5 2 b c7 8 partition partition partition partition mapmap map map k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6 ba 1 2 c c3 6 a c5 2 b c7 8 Shuffle and Sort: aggregate values by keys reduce reduce reduce a 1 5 b 2 7 c 2 9 8 6 9 19a b c
  • 16. Основные функции Программист определяет: – map (k1, v1) → list(k2, v2) – reduce (k2, list(v2*) )→ list(k3, v3)
  • 17. Опциональные функции partition (k2, v2, |reducers|) → № of reducer – распределяет ключи по редьюсерам – Часто просто хеш от key: hash(k2) mod n
  • 18. Опциональные функции combine (k2, v2) → list(k2, v2’) – Мини-reducers которые выполняются после завершения фазы map – Используется в качестве оптимизации для снижения сетевого трафика на reduce – (!) Не должен менять тип ключа и значения