SlideShare a Scribd company logo
Методы распределенной обработки
больших объемов данных в Hadoop
Москва 2014
Лекция 1: Введение в BigData и MapReduce
АЛЕКСЕЙ РОМАНЕНКО
Руководитель команды разработки поискового робота в проекте
Поиск@Mail.Ru. Участвовал в проектировании и реализации архитектуры
системы хранения и обработки данных на платформе Hadoop в проекте
Поиск@Mail.Ru.
Выпускник факультета Радиоэлектроники МАИ в 2001 г, кафедра
Вычислительные системы и сети.
v
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
МИХАИЛ ФИРУЛИК
Руководитель отдела анализа данных, департамент рекламных технологий,
компании Mail.Ru Group. Ранее занимался медийными рекламными
проектами в компании Яндекс, в том числе «Крипта» и «Поведенческий
ретаргетинг», а так же развитием автоматических стратегий управления
рекламными кампаниями в «Директ». До этого долгое время работал
ведущим разработчиком системы обработки данных проекта исследования
телевизионной аудитории «TV-Index» в компании TNS.
Выпускник Ленинградского Высшего Военного Училища Связи им. Ленсовета
(ныне Академии Связи), кафедра Математическое Обеспечение
Автоматизированных Систем Управления, 1995 г
v
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
НИКОЛАЙ АНОХИН
Программист-исследователь в отделе анализа данных Mail.ru. Работаю над
применением алгоритмов машинного обучения к задачам оптимизации
рекламного трафика. До Mail.ru занимался Data Mining в компаниях
Technicolor и AdMoment.
Окончил МФТИ по специальности «Прикладная Физика и Математика» в 2010
году и Университет Лиона по специальности «Data Mining & Knowledge
Management» в 2012.
v
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Чему посвящен данный курс?
• Вычисления на больших объемах данных (“Big
Data”)
• Основной фокус на приложениях и дизайне
алгоритмов
• MapReduce… и другие технологии
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Расписание занятий
Дата Время Лекция
13 сентября, суббота 15:00 — 18:00 Вводная лекция про BigData, введение про
MapReduce
19 сентября, пятница 18:00 — 21:00 Hadoop, основы
26 сентября, пятница 18:00 — 21:00 Распределенная файловая система HDFS
3 октября, пятница 18:00 — 21:00 MapReduce в Hadoop, введение
10 октября, пятница 18:00 — 21:00 MapReduce в Hadoop, продолжение I
17 октября, пятница 18:00 — 21:00 MapReduce в Hadoop, продолжение II
24 октября, пятница 18:00 — 21:00 Введение в Hive и Pig
31 октября, пятница 18:00 — 21:00 NoSQL базы данных: BigTable, Hbase и Cassandra
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Расписание занятий, продолжение
Дата Время Лекция
7 ноября, пятница 18:00 — 21:00 Обработка текстов на естественных языках в
Hadoop
14 ноября, пятница 18:00 — 21:00 Machine learning в Hadoop: Mahout
21 ноября, пятница 18:00 — 21:00 Обработка данных realtime: Storm, Spark, Impal
28 ноября, пятница 18:00 — 21:00 Вычислительная модель Pregel
5 декабря, пятница 18:00 — 21:00 Hadoop 2.0
12 декабря, пятница 18:00 — 21:00 Hadoop: примеры использования в реальных
проектах
19 декабря, пятница 18:00 — 21:00 Итоговое занятие
16 января, пятница 18:00 — 21:00 Пересдача
Big Data
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Data Explosion
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
>10 PB данных, 75B DB
запросов в день (6/2012)
Обрабатывает 20 PB в день (2008)
Скачивает 20B веб-страниц в день (2012)
>100 PB польз. данных +
500 TB/день (8/2012)
S3: 449B объектов, макс 290k rps (7/2011)
1T объектов (6/2012)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Wayback Machine: 240B веб-страниц в архиве, 5
PB (1/2013)
LHC: ~15 PB в год
LSST: 6-10 PB в год
(~2015)
150 PB на 50k+ серверов
работает 15k apps (6/2011)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Много данных – это сколько?
640K должно
хватить каждому.
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Необходимые знания
• Программирование на Java и/или Python
– Этот курс не учит программировать
– Фокус на “thinking at scale” и разработка/дизайн
алгоритмов
– Самостоятельная установка Hadoop
(рекомендуется)
• Уметь отлаживать свой код
• Опыт работы в Linux (желательно)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Необходимые знания
• Основные знания по:
– Теория вероятностей и статистики
– Дискретная математика
– Архитектура компьютера
• Не обязателен опыт в:
– MapReduce
– Параллельном и распределенном
программировании
• Любознательность
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Как же стать гуру Hadoop?
• Посещать лекции, делать ДЗ
• Читать книги
– Tom White, “Hadoop: The Definitive Guide”
• Есть издание на русском языке
– Jimmy Lin and Chris Dyer, “Data-Intensive Text
Processing with MapReduce”
• RTFM
• RTFC(!)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Этот курс не для вас, если…
• Если вам не очень то интересен данный
раздел
• Если у вас нет время, чтобы в этом
разобраться
• Если вы чувствуете себя некомфортно с
непредсказуемостью, которая всегда есть в
bleeding-edge software
Иначе, это должно быть интересно!
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Оценка результатов
• Финальная оценка состоит из:
– Домашних заданий
– Финального проекта
• Вряд ли это подойдет в качестве отговорок:
– “Я слишком занят!”
– “Это требует слишком много времени, чем у
меня есть!”
– “Это труднее, чем я думал!”
– “Я отформатировал диск с домашней работой!”
– Ну и т.д.
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Использование Hadoop
• Hadoop на вашем компьютере
• Hadoop в виртуальной машине на вашем
компьютере
• Hadoop в нашей лаборатории
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
“Hadoop Дзен”
• Это передовая технология (т.е. незрелая!)
– Долгий путь с 2007, но до сих пор мы в начале пути…
– Баги, недокументированные “фичи”, неожиданное
поведение, потеря данных(!)
• Нельзя разочаровываться
– Эти WTF! моменты
• Быть терпеливым
– Мы неизбежно столкнемся со странными “ситуациями”
на протяжении курса
• Быть гибким
– Мы должны быть креативными в поиске workarounds
• Быть конструктивным
– Не паниковать!
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
“Hadoop Дзен”
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Интерлюдия: Облачные вычисления
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
“Облака” – это верх технологий?
• До облаков было…
– Грид-вычисления
• https://ru.wikipedia.org/wiki/Грид
– Суперкомпьютеры Connection machine
• https://ru.wikipedia.org/wiki/Connection_Machine
– Векторные суперкомпьютеры
– …
• «Облачные вычисления» означает много различных
вещей:
– Big data
– Ребрендинг Web 2.0
– Utility computing
– Everything as a service
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Ребрендинг Web 2.0
• Интерактивные интернет Rich-приложения
– Облако - это сервера, на которых они работают
– AJAX есть де-факто стандарт (хорошо это или
плохо…)
– Примеры: Facebook, YouTube, Gmail, Mail.Ru…
• “Сеть – это большой компьютер”: дайте два!
– Пользовательские данные хранятся “в облаках”
– Расцвет эпохи нетбуков, смартфонов, планшетов
и т.д..
– Браузер – это ОС
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Utility computing
• Что?
– Вычислительные ресурсы как сервис (“сколько
использовал, столько и оплати”)
– Возможность динамического предоставления
виртуальных машин
• Зачем?
– Цена: бюджет и оперативные расходы
– Масштабируемость: “бесконечное” кол-во ресурсов
– Эластичность: расширение on demand
• Это имеет смысл?
– Преимущества для пользователей облаков
– Бизнес для облачных провайдеров
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Технология: Виртуализация
Hardware
Operating System
App App App
Traditional
Stack
Hardware
OS
App App App
Hypervisor
OS OS
Virtualized Stack
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Everything as a Service
• Utility computing = Infrastructure as a Service
(IaaS)
– Зачем покупать сервера когда их можно
арендовать?
– Пример: Amazon’s EC2, Rackspace
• Platform as a Service (PaaS)
– Дай мне удобное API и позаботься об эксплуатации,
апргрейде, расширении, …
– Пример: Google App Engine
• Software as a Service (SaaS)
– Just run it for me!
– Example: Gmail, Salesforce
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Зачем все это нужно?
• Готовые для решения Big Data задачи
– Социальные сети, user-generated контент = Big Data
– Пример: предложение друзей в Facebook,
размещение рекламы Google
– Business intelligence: собрать все в data warehouse и
запустить аналитику для понимания выводов
• Utility computing предоставляет:
– Возможность предоставления Hadoop-кластеров по
запросу в облаке
– Меньший порог входа для решения Big Data
проблем
– Продуктовость и демократизация возможностей
работы с Big Data
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Работаем с Big Data
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Divide and Conquer
“Work”
w1 w2 w3
r1 r2 r3
“Result”
worker worker worker
Partition
Combine
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Вопросы параллелизма
• Как назначать части work по воркерам?
• А что есть у нас больше частей work чем
воркеров?
• А что если воркерам надо обмениваться
промежуточными результатами?
• Как мы объединяем промежуточные
результаты?
• Как мы узнаем, что все воркеры отработали?
• А что если воркер умрет?
Какая общая проблема объединяет эти вопросы?
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Общая проблема
• Проблемы параллелизма возникают из-за:
– Взаимодействия между воркерами (напр., обмен
состояниями)
– Доступ к общим ресурсам (напр., данные)
• Т.о. нам нужен механизм синхронизации
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Управление множеством воркеров
• Трудно потому что:
– Мы не знаем порядок, в котором воркеры запускаются
– Мы не знаем, когда воркеры прерывают друг друга
– Мы не знаем, когда воркерам надо обмениваться
промежуточным результатом
– Мы не знаем порядок, в котором воркеры имеют доступ к
общим данным
• Поэтому, нам нужны:
– Семафоры (lock, unlock)
– Conditional variables (wait, notify, broadcast)
– Barriers
• Все равно много проблем:
– Deadlock, livelock, race conditions...
– Dining philosophers, sleeping barbers, cigarette smokers...
• Мораль сей басни: будь осторожен!
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Текущие средства
• Программные модели
– Shared memory (pthreads)
– Message passing (MPI)
• Design Patterns
– Master-slaves
– Producer-consumer flows
– Shared work queues
Message Passing
P1 P2 P3 P4 P5
Shared Memory
P1 P2 P3 P4 P5
Memory
master
slaves
producer consumer
producer consumer
work queue
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Момент истины
• Concurrency сложная вещь
• Concurrency еще более сложная вещь…
– в рамках работы в нескольких датацентрах
– при наличии отказов
– с точки зрения множества интерактивных сервисов
• И мы еще промолчим про отладку!
• Реальность:
– Множество одноразовых и узкозаточенных решений
– Написание своих специальных библиотек, затем их
использование
– Бремя программиста все это поддерживать
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Датацентр - это большой компьютер!
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Так в чем же основной вопрос?
• Это все о правильном уровне абстракции
– Переместится поверх архитектуры фон Неймана
– Нам нужны программные модели получше!
• Скрыть детали системного уровня от
разработчиков
– Нет больше race conditions, lock contention и т.д..
• Отделение что от сейчас
– Разработчик определяет те вычисления, которые
надо произвести
– Сам фреймоворк (в “runtime”) обрабатывает процесс
запуска и выполнения вычислений
Датацентр – это компьютер!
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
“Big Ideas”
• Масштабирование “горизонтальное”, не
“вертикальное”
– Ограничения SMP и больших shared-memory машин
• Перенос процесса вычислений к данным
– Кластер имеет ограниченную пропускную
способность
• Последовательная обработка данных, избегать
произвольного доступа
– Seeks дороги, пропускная способность диска вполне
достаточная
• Полная масштабируемость
– От мифического человеко-час к понятному машино-
час
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
MapReduce
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Типичные задачи Big Data
• Пройтись по большому числу записей
• Извлечь что-то интересное из каждой из
записи
• Смешать и отсортировать промежуточные
результаты
• Объединить промежуточные результаты
• Сформировать выходной результат
Ключевая идея: предоставить функциональные
абстракции для этих двух операций
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Примеры задач для MapReduce
• В Google:
– Построение индекса в Google Search
– Кластеризация статей для Google News
– Статистический машинный перевод
• В Поиск@Mail.Ru:
– Парсинг скаченных web-страниц
– Поиск дубликатов документов
– Расчет ранков веб-страниц
• В Facebook:
– Задачи Data Mining
– Оптимизация показа рекламы
– Определение спама
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
g g g g g
f f f f fMap
Fold
Корни из функционального
программирования
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
MapReduce
• Программист определяет две функции:
map (k1, v1) → [<k2, v2>]
reduce (k2, [v2]) → [<k3, v3>]
– Все значения с одинаковым ключом
отправляются на один и тот же reducer
• Всем остальным управляет сам фреймворк…
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
mapmap map map
Shuffle and Sort: aggregate values by keys
reduce reduce reduce
k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6
ba 1 2 c c3 6 a c5 2 b c7 8
a 1 5 b 2 7 c 2 3 6 8
r1 s1 r2 s2 r3 s3
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
MapReduce
• Программист определяет две функции :
map (k, v) → <k’, v’>*
reduce (k’, v’) → <k’, v’>*
– Все значения с одинаковым ключом
отправляются на один и тот же reducer
• Всем остальным управляет сам фреймворк…
А что такое “всем остальным”?
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
MapReduce “Runtime”
• Управление запуском
– Присваивает воркерам map или reduce таски
• Управление “data distribution”
– Перемещает код к данным
• Управление синхронизацией
– Собирает, сортирует и объединяет
промежуточные данные
• Управление ошибками и отказами
– Определяет отказ воркера и перезапускает таск
• Все работает поверх распределенной FS
(попозже об этом)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
MapReduce
• Программист определяет две функции:
map (k, v) → <k’, v’>*
reduce (k’, v’) → <k’, v’>*
– Все значения с одинаковым ключом отправляются на один и
тот же reducer
• Всем остальным управляет сам фреймворк…
• Не совсем…обычно, программист также определяет:
partition (k’, number of partitions) → partition for k’
– Часто просто хеш от key, напр., hash(k’) mod n
– Разделяет множество ключей для параллельных операций
reduce
combine (k’, v’) → <k’, v’>*
– Мини-reducers которые выполняются в после завершения
фазы map
– Используется в качестве оптимизации для снижения сетевого
трафика на reduce
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
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
r1 s1 r2 s2 r3 s3
c 2 3 6 8
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Еще пара деталей…
• Граница между фазами map и reduce
– Но можно начать копировать промежуточные
данные заранее
• Ключи приходят на каждый reducer в
отсортированном виде
– Но нет общей сортировки между редьюсерами
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
“Hello World”: Word Count
Map(String docid, String text):
for each word w in text:
Emit(w, 1);
Reduce(String term, Iterator<Int> values):
int sum = 0;
for each v in values:
sum += v;
Emit(term, value);
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
MapReduce можно понимать как…
• Программная модель
• Среда (фреймворк) выполнения (aka
“runtime”)
• Спецификация реализации
Использование обычно понятно из контекста!
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
split 0
split 1
split 2
split 3
split 4
worker
worker
worker
worker
worker
Master
User
Program
output
file 0
output
file 1
(1) submit
(2) schedule map (2) schedule reduce
(3) read
(4) local write
(5) remote read
(6) write
Input
files
Map
phase
Intermediate files
(on local disk)
Reduce
phase
Output
files
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Как же воркеры получают данные?
Compute Nodes
NAS
SAN
Какая тут проблема?
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Distributed File System
• Не надо копировать данные к воркерам… надо
отправлять воркеры к данным!
– Сохраняем данные на локальных дисках нод
кластера
– Запускаем воркеры на нодах, где данные локальны
• Зачем?
– Недостаточно RAM чтобы уместить все данные в
памяти
– Доступ к диску медленный, но скорость чтения с
диска приемлемая
• Ответ: распределенная файловая система
– GFS (Google File System) для Google’s MapReduce
– HDFS (Hadoop Distributed File System) для Hadoop
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
GFS: Предположения
• Обычное «железо» вместо «экзотики»
– Масштабируем “горизонтально”, а не “вертикально”
• Высокая частота отказа компонентов
– Недорогие компоненты обычного железа постоянно фейлятся
• “Умеренное” кол-во огромных файлов
– Мульти-гигабайтные файлы – обычная ситуация
• Файлы являются write-once, в основном дописываются
или перезаписываются полностью
– Возможно, многопоточно
• Последовательное чтение большого объема данных
вместо произвольного доступа
– Высокая пропускная способность (throughput) вместо
небольшой задержки (latency)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
GFS: Концепция дизайна
• Файлы хранятся в виде чанков (блоков)
– Фиксированный размер (64MB)
• Надежность через репликацию
– Каждый чанк реплицируется на 3 сервера
• Один мастер-процесс координирует доступ, хранит мета-
информацию
– Простое централизованное управление
• Данные не кешируются
– Небольшая польза для больших наборов данных, потоковое
чтение
• Простое API
– Push some of the issues onto the client (e.g., data layout)
HDFS = GFS клон (те же основные идеи)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
От GFS к HDFS
• Различия терминологии:
– GFS master = Hadoop namenode
– GFS chunkservers = Hadoop datanodes
• Отличия:
– Разная consistency model для file appends
– Реализация
– Производительность
В большинстве случаев будем использовать
терминологию Hadoop
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
(file name, block id)
(block id, block location)
instructions to datanode
datanode state
(block id, byte range)
block data
HDFS namenode
HDFS datanode
Linux file system
…
HDFS datanode
Linux file system
…
File namespace
/foo/bar
block 3df2
Application
HDFS Client
HDFS Architecture
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Обязанности Namenode
• Управление пространством имен файловой
системы:
– Хранить структуру файлов/директорий, метаданные,
маппинг file-to-bloc, права доступа и т.д.
• Координирование файловых операций:
– Направлять клиентов на датаноды для чтения и
записи
– Данные не проходят через namenode
• Поддерживать общее состояние системы:
– Периодические обращения к датанодам
– Дорепликация блоков и перебалансировка
– Сборка мусора
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Теперь соберем все вместе…
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
(Не совсем… Позже поговорим про YARN)
ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
Вопросы?

More Related Content

PDF
Лекция 2. Основы Hadoop
PPTX
Understanding and tuning WiredTiger, the new high performance database engine...
PDF
Tools for Metaspace
PDF
Лекция 3. Распределённая файловая система HDFS
PDF
Hadoop
PDF
Cephfs架构解读和测试分析
PPTX
Hadoop - Hệ thống tính toán và xử lý dữ liệu lớn
PDF
02 - Hadoop. Архитектура HDFS
Лекция 2. Основы Hadoop
Understanding and tuning WiredTiger, the new high performance database engine...
Tools for Metaspace
Лекция 3. Распределённая файловая система HDFS
Hadoop
Cephfs架构解读和测试分析
Hadoop - Hệ thống tính toán và xử lý dữ liệu lớn
02 - Hadoop. Архитектура HDFS

What's hot (20)

PDF
Redis 2017
PDF
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
PPTX
Design cube in Apache Kylin
PDF
Giải pháp xử lý big data trên apache spark
PDF
SeaweedFS introduction
PPTX
개발자도 알아야 하는 DBMS튜닝
PDF
Hadoop trong triển khai Big Data
PDF
Phân tích tự động các website để phát hiện lỗ hổng tiêm nhiễm, 9đ
DOC
Map reduce hdfs
PPTX
DDD 그게 뭔데 (개념 찍먹편)
PPTX
Cephfs jewel mds performance benchmark
PPTX
MongoDB Schema Design: Four Real-World Examples
PPTX
グループのメンバーをすべて取得する
PDF
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
PDF
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
PPTX
Kafka at half the price with JBOD setup
PDF
Introduction to Big Data
PPTX
Streaming platform Kafka in SK planet
PPTX
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
PPTX
Revisiting CephFS MDS and mClock QoS Scheduler
Redis 2017
Bài 2 Cài đặt Windows Server 2008 - Giáo trình FPT
Design cube in Apache Kylin
Giải pháp xử lý big data trên apache spark
SeaweedFS introduction
개발자도 알아야 하는 DBMS튜닝
Hadoop trong triển khai Big Data
Phân tích tự động các website để phát hiện lỗ hổng tiêm nhiễm, 9đ
Map reduce hdfs
DDD 그게 뭔데 (개념 찍먹편)
Cephfs jewel mds performance benchmark
MongoDB Schema Design: Four Real-World Examples
グループのメンバーをすべて取得する
게임을 위한 최적의 AWS DB 서비스 선정 퀘스트 깨기::최유정::AWS Summit Seoul 2018
[OpenStack Days Korea 2016] Track3 - VDI on OpenStack with LeoStream Connecti...
Kafka at half the price with JBOD setup
Introduction to Big Data
Streaming platform Kafka in SK planet
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Revisiting CephFS MDS and mClock QoS Scheduler
Ad

Viewers also liked (10)

PDF
Лекция 10. Apache Mahout
PDF
Лекция 7. Введение в Pig и Hive
PDF
Лекция 9. ZooKeeper
PDF
Лекция 5. MapReduce в Hadoop (алгоритмы)
PDF
Лекция 4. MapReduce в Hadoop (введение)
PDF
Лекция 6. MapReduce в Hadoop (графы)
PDF
Лекция 12. Spark
PDF
Лекция 13. YARN
PDF
Лекция 14. Hadoop в Поиске Mail.Ru
PDF
Лекция 11. Вычислительная модель Pregel
Лекция 10. Apache Mahout
Лекция 7. Введение в Pig и Hive
Лекция 9. ZooKeeper
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 4. MapReduce в Hadoop (введение)
Лекция 6. MapReduce в Hadoop (графы)
Лекция 12. Spark
Лекция 13. YARN
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 11. Вычислительная модель Pregel
Ad

Similar to Лекция 1. Введение в Big Data и MapReduce (20)

PDF
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
PPTX
Big Data и ArcGIS
PPT
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
PDF
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
PDF
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
PPTX
Слоны в облаках
PPT
Hadoop in Wikimart. Part 1. Business
PDF
Инфраструктура под аналитику и большие данные
PPTX
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
PDF
Data journalist
PDF
Платформа Apache Hadoop
PDF
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
PPTX
Ms SharePoint workspace for Project Management
PDF
Говорим о СУБД языком HR
PPT
Top big data architecture patterns by Igor Chub
PPTX
зао «эвентос»
PPTX
Hadoop on OpenStack
PPSX
OSPconf. Big Data Forum 2015
PPTX
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
PDF
HappyDev'15 Keynote: Когда все данные станут большими...
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Big Data и ArcGIS
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
Инфраструктура Big data - от источников до быстрых витрин - версия для МИСиС
Слоны в облаках
Hadoop in Wikimart. Part 1. Business
Инфраструктура под аналитику и большие данные
Среды и инструменты для управления проектами. IKRA. Digital-продюсер'14/1, СПб
Data journalist
Платформа Apache Hadoop
Поддержка NoSQL и платформ MongoDB, Hive и Teradata в продуктах Embarcadero
Ms SharePoint workspace for Project Management
Говорим о СУБД языком HR
Top big data architecture patterns by Igor Chub
зао «эвентос»
Hadoop on OpenStack
OSPconf. Big Data Forum 2015
2015-12-05 Алексей Зиновьев - Когда все данные станут большими...
HappyDev'15 Keynote: Когда все данные станут большими...

More from Technopark (18)

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

Лекция 1. Введение в Big Data и MapReduce

  • 1. Методы распределенной обработки больших объемов данных в Hadoop Москва 2014 Лекция 1: Введение в BigData и MapReduce
  • 2. АЛЕКСЕЙ РОМАНЕНКО Руководитель команды разработки поискового робота в проекте Поиск@Mail.Ru. Участвовал в проектировании и реализации архитектуры системы хранения и обработки данных на платформе Hadoop в проекте Поиск@Mail.Ru. Выпускник факультета Радиоэлектроники МАИ в 2001 г, кафедра Вычислительные системы и сети. v ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 3. МИХАИЛ ФИРУЛИК Руководитель отдела анализа данных, департамент рекламных технологий, компании Mail.Ru Group. Ранее занимался медийными рекламными проектами в компании Яндекс, в том числе «Крипта» и «Поведенческий ретаргетинг», а так же развитием автоматических стратегий управления рекламными кампаниями в «Директ». До этого долгое время работал ведущим разработчиком системы обработки данных проекта исследования телевизионной аудитории «TV-Index» в компании TNS. Выпускник Ленинградского Высшего Военного Училища Связи им. Ленсовета (ныне Академии Связи), кафедра Математическое Обеспечение Автоматизированных Систем Управления, 1995 г v ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 4. НИКОЛАЙ АНОХИН Программист-исследователь в отделе анализа данных Mail.ru. Работаю над применением алгоритмов машинного обучения к задачам оптимизации рекламного трафика. До Mail.ru занимался Data Mining в компаниях Technicolor и AdMoment. Окончил МФТИ по специальности «Прикладная Физика и Математика» в 2010 году и Университет Лиона по специальности «Data Mining & Knowledge Management» в 2012. v ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 5. Чему посвящен данный курс? • Вычисления на больших объемах данных (“Big Data”) • Основной фокус на приложениях и дизайне алгоритмов • MapReduce… и другие технологии ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 6. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Расписание занятий Дата Время Лекция 13 сентября, суббота 15:00 — 18:00 Вводная лекция про BigData, введение про MapReduce 19 сентября, пятница 18:00 — 21:00 Hadoop, основы 26 сентября, пятница 18:00 — 21:00 Распределенная файловая система HDFS 3 октября, пятница 18:00 — 21:00 MapReduce в Hadoop, введение 10 октября, пятница 18:00 — 21:00 MapReduce в Hadoop, продолжение I 17 октября, пятница 18:00 — 21:00 MapReduce в Hadoop, продолжение II 24 октября, пятница 18:00 — 21:00 Введение в Hive и Pig 31 октября, пятница 18:00 — 21:00 NoSQL базы данных: BigTable, Hbase и Cassandra
  • 7. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Расписание занятий, продолжение Дата Время Лекция 7 ноября, пятница 18:00 — 21:00 Обработка текстов на естественных языках в Hadoop 14 ноября, пятница 18:00 — 21:00 Machine learning в Hadoop: Mahout 21 ноября, пятница 18:00 — 21:00 Обработка данных realtime: Storm, Spark, Impal 28 ноября, пятница 18:00 — 21:00 Вычислительная модель Pregel 5 декабря, пятница 18:00 — 21:00 Hadoop 2.0 12 декабря, пятница 18:00 — 21:00 Hadoop: примеры использования в реальных проектах 19 декабря, пятница 18:00 — 21:00 Итоговое занятие 16 января, пятница 18:00 — 21:00 Пересдача
  • 8. Big Data ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 9. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Data Explosion
  • 10. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE >10 PB данных, 75B DB запросов в день (6/2012) Обрабатывает 20 PB в день (2008) Скачивает 20B веб-страниц в день (2012) >100 PB польз. данных + 500 TB/день (8/2012) S3: 449B объектов, макс 290k rps (7/2011) 1T объектов (6/2012)
  • 11. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Wayback Machine: 240B веб-страниц в архиве, 5 PB (1/2013) LHC: ~15 PB в год LSST: 6-10 PB в год (~2015) 150 PB на 50k+ серверов работает 15k apps (6/2011)
  • 12. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Много данных – это сколько? 640K должно хватить каждому.
  • 13. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Необходимые знания • Программирование на Java и/или Python – Этот курс не учит программировать – Фокус на “thinking at scale” и разработка/дизайн алгоритмов – Самостоятельная установка Hadoop (рекомендуется) • Уметь отлаживать свой код • Опыт работы в Linux (желательно)
  • 14. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Необходимые знания • Основные знания по: – Теория вероятностей и статистики – Дискретная математика – Архитектура компьютера • Не обязателен опыт в: – MapReduce – Параллельном и распределенном программировании • Любознательность
  • 15. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Как же стать гуру Hadoop? • Посещать лекции, делать ДЗ • Читать книги – Tom White, “Hadoop: The Definitive Guide” • Есть издание на русском языке – Jimmy Lin and Chris Dyer, “Data-Intensive Text Processing with MapReduce” • RTFM • RTFC(!)
  • 16. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Этот курс не для вас, если… • Если вам не очень то интересен данный раздел • Если у вас нет время, чтобы в этом разобраться • Если вы чувствуете себя некомфортно с непредсказуемостью, которая всегда есть в bleeding-edge software Иначе, это должно быть интересно!
  • 17. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Оценка результатов • Финальная оценка состоит из: – Домашних заданий – Финального проекта • Вряд ли это подойдет в качестве отговорок: – “Я слишком занят!” – “Это требует слишком много времени, чем у меня есть!” – “Это труднее, чем я думал!” – “Я отформатировал диск с домашней работой!” – Ну и т.д.
  • 18. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Использование Hadoop • Hadoop на вашем компьютере • Hadoop в виртуальной машине на вашем компьютере • Hadoop в нашей лаборатории
  • 19. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE “Hadoop Дзен” • Это передовая технология (т.е. незрелая!) – Долгий путь с 2007, но до сих пор мы в начале пути… – Баги, недокументированные “фичи”, неожиданное поведение, потеря данных(!) • Нельзя разочаровываться – Эти WTF! моменты • Быть терпеливым – Мы неизбежно столкнемся со странными “ситуациями” на протяжении курса • Быть гибким – Мы должны быть креативными в поиске workarounds • Быть конструктивным – Не паниковать!
  • 20. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE “Hadoop Дзен”
  • 21. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Интерлюдия: Облачные вычисления
  • 22. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE “Облака” – это верх технологий? • До облаков было… – Грид-вычисления • https://ru.wikipedia.org/wiki/Грид – Суперкомпьютеры Connection machine • https://ru.wikipedia.org/wiki/Connection_Machine – Векторные суперкомпьютеры – … • «Облачные вычисления» означает много различных вещей: – Big data – Ребрендинг Web 2.0 – Utility computing – Everything as a service
  • 23. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Ребрендинг Web 2.0 • Интерактивные интернет Rich-приложения – Облако - это сервера, на которых они работают – AJAX есть де-факто стандарт (хорошо это или плохо…) – Примеры: Facebook, YouTube, Gmail, Mail.Ru… • “Сеть – это большой компьютер”: дайте два! – Пользовательские данные хранятся “в облаках” – Расцвет эпохи нетбуков, смартфонов, планшетов и т.д.. – Браузер – это ОС
  • 24. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Utility computing • Что? – Вычислительные ресурсы как сервис (“сколько использовал, столько и оплати”) – Возможность динамического предоставления виртуальных машин • Зачем? – Цена: бюджет и оперативные расходы – Масштабируемость: “бесконечное” кол-во ресурсов – Эластичность: расширение on demand • Это имеет смысл? – Преимущества для пользователей облаков – Бизнес для облачных провайдеров
  • 25. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Технология: Виртуализация Hardware Operating System App App App Traditional Stack Hardware OS App App App Hypervisor OS OS Virtualized Stack
  • 26. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Everything as a Service • Utility computing = Infrastructure as a Service (IaaS) – Зачем покупать сервера когда их можно арендовать? – Пример: Amazon’s EC2, Rackspace • Platform as a Service (PaaS) – Дай мне удобное API и позаботься об эксплуатации, апргрейде, расширении, … – Пример: Google App Engine • Software as a Service (SaaS) – Just run it for me! – Example: Gmail, Salesforce
  • 27. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Зачем все это нужно? • Готовые для решения Big Data задачи – Социальные сети, user-generated контент = Big Data – Пример: предложение друзей в Facebook, размещение рекламы Google – Business intelligence: собрать все в data warehouse и запустить аналитику для понимания выводов • Utility computing предоставляет: – Возможность предоставления Hadoop-кластеров по запросу в облаке – Меньший порог входа для решения Big Data проблем – Продуктовость и демократизация возможностей работы с Big Data
  • 28. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Работаем с Big Data
  • 29. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Divide and Conquer “Work” w1 w2 w3 r1 r2 r3 “Result” worker worker worker Partition Combine
  • 30. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Вопросы параллелизма • Как назначать части work по воркерам? • А что есть у нас больше частей work чем воркеров? • А что если воркерам надо обмениваться промежуточными результатами? • Как мы объединяем промежуточные результаты? • Как мы узнаем, что все воркеры отработали? • А что если воркер умрет? Какая общая проблема объединяет эти вопросы?
  • 31. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Общая проблема • Проблемы параллелизма возникают из-за: – Взаимодействия между воркерами (напр., обмен состояниями) – Доступ к общим ресурсам (напр., данные) • Т.о. нам нужен механизм синхронизации
  • 32. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 33. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Управление множеством воркеров • Трудно потому что: – Мы не знаем порядок, в котором воркеры запускаются – Мы не знаем, когда воркеры прерывают друг друга – Мы не знаем, когда воркерам надо обмениваться промежуточным результатом – Мы не знаем порядок, в котором воркеры имеют доступ к общим данным • Поэтому, нам нужны: – Семафоры (lock, unlock) – Conditional variables (wait, notify, broadcast) – Barriers • Все равно много проблем: – Deadlock, livelock, race conditions... – Dining philosophers, sleeping barbers, cigarette smokers... • Мораль сей басни: будь осторожен!
  • 34. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Текущие средства • Программные модели – Shared memory (pthreads) – Message passing (MPI) • Design Patterns – Master-slaves – Producer-consumer flows – Shared work queues Message Passing P1 P2 P3 P4 P5 Shared Memory P1 P2 P3 P4 P5 Memory master slaves producer consumer producer consumer work queue
  • 35. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Момент истины • Concurrency сложная вещь • Concurrency еще более сложная вещь… – в рамках работы в нескольких датацентрах – при наличии отказов – с точки зрения множества интерактивных сервисов • И мы еще промолчим про отладку! • Реальность: – Множество одноразовых и узкозаточенных решений – Написание своих специальных библиотек, затем их использование – Бремя программиста все это поддерживать
  • 36. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 37. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE
  • 38. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Датацентр - это большой компьютер!
  • 39. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Так в чем же основной вопрос? • Это все о правильном уровне абстракции – Переместится поверх архитектуры фон Неймана – Нам нужны программные модели получше! • Скрыть детали системного уровня от разработчиков – Нет больше race conditions, lock contention и т.д.. • Отделение что от сейчас – Разработчик определяет те вычисления, которые надо произвести – Сам фреймоворк (в “runtime”) обрабатывает процесс запуска и выполнения вычислений Датацентр – это компьютер!
  • 40. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE “Big Ideas” • Масштабирование “горизонтальное”, не “вертикальное” – Ограничения SMP и больших shared-memory машин • Перенос процесса вычислений к данным – Кластер имеет ограниченную пропускную способность • Последовательная обработка данных, избегать произвольного доступа – Seeks дороги, пропускная способность диска вполне достаточная • Полная масштабируемость – От мифического человеко-час к понятному машино- час
  • 41. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE MapReduce
  • 42. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Типичные задачи Big Data • Пройтись по большому числу записей • Извлечь что-то интересное из каждой из записи • Смешать и отсортировать промежуточные результаты • Объединить промежуточные результаты • Сформировать выходной результат Ключевая идея: предоставить функциональные абстракции для этих двух операций
  • 43. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Примеры задач для MapReduce • В Google: – Построение индекса в Google Search – Кластеризация статей для Google News – Статистический машинный перевод • В Поиск@Mail.Ru: – Парсинг скаченных web-страниц – Поиск дубликатов документов – Расчет ранков веб-страниц • В Facebook: – Задачи Data Mining – Оптимизация показа рекламы – Определение спама
  • 44. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE g g g g g f f f f fMap Fold Корни из функционального программирования
  • 45. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE MapReduce • Программист определяет две функции: map (k1, v1) → [<k2, v2>] reduce (k2, [v2]) → [<k3, v3>] – Все значения с одинаковым ключом отправляются на один и тот же reducer • Всем остальным управляет сам фреймворк…
  • 46. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE mapmap map map Shuffle and Sort: aggregate values by keys reduce reduce reduce k1 k2 k3 k4 k5 k6v1 v2 v3 v4 v5 v6 ba 1 2 c c3 6 a c5 2 b c7 8 a 1 5 b 2 7 c 2 3 6 8 r1 s1 r2 s2 r3 s3
  • 47. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE MapReduce • Программист определяет две функции : map (k, v) → <k’, v’>* reduce (k’, v’) → <k’, v’>* – Все значения с одинаковым ключом отправляются на один и тот же reducer • Всем остальным управляет сам фреймворк… А что такое “всем остальным”?
  • 48. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE MapReduce “Runtime” • Управление запуском – Присваивает воркерам map или reduce таски • Управление “data distribution” – Перемещает код к данным • Управление синхронизацией – Собирает, сортирует и объединяет промежуточные данные • Управление ошибками и отказами – Определяет отказ воркера и перезапускает таск • Все работает поверх распределенной FS (попозже об этом)
  • 49. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE MapReduce • Программист определяет две функции: map (k, v) → <k’, v’>* reduce (k’, v’) → <k’, v’>* – Все значения с одинаковым ключом отправляются на один и тот же reducer • Всем остальным управляет сам фреймворк… • Не совсем…обычно, программист также определяет: partition (k’, number of partitions) → partition for k’ – Часто просто хеш от key, напр., hash(k’) mod n – Разделяет множество ключей для параллельных операций reduce combine (k’, v’) → <k’, v’>* – Мини-reducers которые выполняются в после завершения фазы map – Используется в качестве оптимизации для снижения сетевого трафика на reduce
  • 50. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE 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 r1 s1 r2 s2 r3 s3 c 2 3 6 8
  • 51. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Еще пара деталей… • Граница между фазами map и reduce – Но можно начать копировать промежуточные данные заранее • Ключи приходят на каждый reducer в отсортированном виде – Но нет общей сортировки между редьюсерами
  • 52. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE “Hello World”: Word Count Map(String docid, String text): for each word w in text: Emit(w, 1); Reduce(String term, Iterator<Int> values): int sum = 0; for each v in values: sum += v; Emit(term, value);
  • 53. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE MapReduce можно понимать как… • Программная модель • Среда (фреймворк) выполнения (aka “runtime”) • Спецификация реализации Использование обычно понятно из контекста!
  • 54. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE split 0 split 1 split 2 split 3 split 4 worker worker worker worker worker Master User Program output file 0 output file 1 (1) submit (2) schedule map (2) schedule reduce (3) read (4) local write (5) remote read (6) write Input files Map phase Intermediate files (on local disk) Reduce phase Output files
  • 55. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Как же воркеры получают данные? Compute Nodes NAS SAN Какая тут проблема?
  • 56. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Distributed File System • Не надо копировать данные к воркерам… надо отправлять воркеры к данным! – Сохраняем данные на локальных дисках нод кластера – Запускаем воркеры на нодах, где данные локальны • Зачем? – Недостаточно RAM чтобы уместить все данные в памяти – Доступ к диску медленный, но скорость чтения с диска приемлемая • Ответ: распределенная файловая система – GFS (Google File System) для Google’s MapReduce – HDFS (Hadoop Distributed File System) для Hadoop
  • 57. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE GFS: Предположения • Обычное «железо» вместо «экзотики» – Масштабируем “горизонтально”, а не “вертикально” • Высокая частота отказа компонентов – Недорогие компоненты обычного железа постоянно фейлятся • “Умеренное” кол-во огромных файлов – Мульти-гигабайтные файлы – обычная ситуация • Файлы являются write-once, в основном дописываются или перезаписываются полностью – Возможно, многопоточно • Последовательное чтение большого объема данных вместо произвольного доступа – Высокая пропускная способность (throughput) вместо небольшой задержки (latency)
  • 58. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE GFS: Концепция дизайна • Файлы хранятся в виде чанков (блоков) – Фиксированный размер (64MB) • Надежность через репликацию – Каждый чанк реплицируется на 3 сервера • Один мастер-процесс координирует доступ, хранит мета- информацию – Простое централизованное управление • Данные не кешируются – Небольшая польза для больших наборов данных, потоковое чтение • Простое API – Push some of the issues onto the client (e.g., data layout) HDFS = GFS клон (те же основные идеи)
  • 59. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE От GFS к HDFS • Различия терминологии: – GFS master = Hadoop namenode – GFS chunkservers = Hadoop datanodes • Отличия: – Разная consistency model для file appends – Реализация – Производительность В большинстве случаев будем использовать терминологию Hadoop
  • 60. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE (file name, block id) (block id, block location) instructions to datanode datanode state (block id, byte range) block data HDFS namenode HDFS datanode Linux file system … HDFS datanode Linux file system … File namespace /foo/bar block 3df2 Application HDFS Client HDFS Architecture
  • 61. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Обязанности Namenode • Управление пространством имен файловой системы: – Хранить структуру файлов/директорий, метаданные, маппинг file-to-bloc, права доступа и т.д. • Координирование файловых операций: – Направлять клиентов на датаноды для чтения и записи – Данные не проходят через namenode • Поддерживать общее состояние системы: – Периодические обращения к датанодам – Дорепликация блоков и перебалансировка – Сборка мусора
  • 62. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Теперь соберем все вместе… 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 (Не совсем… Позже поговорим про YARN)
  • 63. ЛЕКЦИЯ 1: ВВЕДЕНИЕ В BIGDATA И MAPREDUCE Вопросы?