value: “index.html” - Нижегородский государственный университет

advertisement
Нижегородский государственный университет им. Н.И.Лобачевского
Национальный исследовательский университет
Факультет вычислительной математики и кибернетики
Парадигма MapReduce,
ее реализации и
применение
Выполнили: студенты группы 85М1
Носов Е.П.
Коршунова А.Л.
Володина О. А.
Содержание
1. Введение
2. MapReduce
3. Реализации
4. Apache Hadoop
5. Применение
6. Примеры алгоритмов
7. Источники информации
Введение
На сегодняшний день одной из наиболее актуальных
проблем является проблема обработки больших
объемов данных.
 FaceBook хранит на своих серверах более 15 млрд.
картинок
 Нью-Йоркская
фондовая
биржа
генерирует около 1 Тб новых данных
 Большой адронный коллайдер:
экспериментальных данных в день
ежедневно
около
40
Тб
Решение?
Одним из подходов к решению проблемы обработки
больших
объемов
MapReduce,
данных
разработанная
является
компанией
парадигма
Google
для
сканирования и анализа огромного количества webстраниц, а также для выполнения различных задач в
рамках компании.
MapReduce
Данные
Результат
MapReduce
* http://www.osp.ru/os/2009/02/7322603/
Пример: WordCount
map(String name, String document):
// Входные данные: name - название документа
// document - содержимое документа
for each word w in document:
EmitIntermediate(w, "1");
reduce(String word, Iterator partialCounts):
// Входные данные: word - слово
// partialCounts - список группированных
// промежуточных результатов.
int result = 0;
for each v in partialCounts:
result += parseInt(v);
Emit(AsString(result));
Пример: WordCount
Некоторые реализации
 Google MapReduce - закрытая реализация на С++
 Apache Hadoop – бесплатная, с открытым исходным
кодом на Java
 Phoenix, Phoenix++ – реализация на С/С++ с
использованием разделяемой памяти
 Qizmt – реализация MapReduce с открытым исходным
кодом от MySpace, написанная на C#
 Greenplum – коммерческая, с поддержкой Python, Perl,
SQL и др.
…
Apache Hadoop
Платформа для построения приложений,
обрабатывать огромные объемы данных.
Преимущества платформы:
 Масштабируемость
 Экономичность
 Эффективность
 Надежность
 Кроссплатформенность
способных
Hadoop Distributed File System
В основе Hadoop лежит распределенная файловая
система HDFS, которая обладает рядом
особенностей:
 Хранение больших объемов данных
 Устойчивость к сбоям благодаря хранению
нескольких копий файла
Предоставление быстрого и масштабируемого
доступа к информации
 Простая модель работы с данными: один раз
записали — много раз прочли
 Следование принципу: переместить вычисления
проще, чем переместить данные
Кластер Hadoop
Клиенты
MapReduce
JobTracker
HDFS
NameNode
SecondaryNameNode
DataNode
DataNode
DataNode
TaskTracker
TaskTracker
TaskTracker
DataNode
DataNode
DataNode
TaskTracker
TaskTracker
TaskTracker
Главные
узлы
Подчиненные
узлы
Обработка данных
* http://architects.dzone.com/articles/how-hadoop-mapreduce-works
Обработка данных
 Чтение из HDFS и разделение данных на части –
«сплиты»
 Предварительная обработка сплитов с помощью mapфункции на выбранных узлах и сохранение результатов в
памяти
 Свертка локальных промежуточных пар <key, value>
 Сортировка и группировка по ключу
 Разделение и передача данных выбранным узлам для
повторной свертки
 Слияние данных, полученных от разных узлов для
свертки
 Свертка
 Запись результатов в HDFS
Применение MapReduce
Все задачи, решаемые с помощью парадигмы MapReduce,
можно разделить на три категории:
 Выделение слов из текста, индексирование и поиск по
тексту
 Создание структур данных (например, графов)
 Data mining и машинное обучение
Применение MapReduce
 Масштабный статистический анализ и моделирование
 Анализ и индексация данных
 Построение масштабируемых алгоритмов машинного
обучения
 Сбор данных DNS по всему миру для обнаружения сетей
распределения контента и проблем с конфигурацией
 Построение карты всей сети Интернет
 Распределенный grep
 Сортировка
 Поиск web-страниц
…
Преимущества MapReduce
 Данная концепция может считаться универсальной, так
как существует большое количество задач, успешно
решаемых при помощи данной модели
 Отказоустойчивость, что позволяет вычислять задачи,
даже если некоторые вызовы завершились аварийно
 Масштабируемость
 Применение концепции MapReduce позволяет сделать
прозрачными
для
разработчиков
механизмы
параллелизации, распределения нагрузки, обеспечения
устойчивости к ошибкам
 От программиста не требуется знаний и опыта,
специфичного
для
разработки
многопоточных
и
распределенных приложений
Недостатки MapReduce
 Не
обладает
оптимальной
производительностью
(специализированные решения работают быстрее)
 Неэффективен в маленьких кластерах с небольшим
объемом данных (накладные расходы велики)
 Задержки в одном процессе Map или Reduce ведут к
задержке всей задачи
Алгоритмы MapReduce
 Простой пример:
A, B, C, D, E — выдуманные 30 миллионов пользователей
социальной сети. Допустим мы знаем что:
А дружит с B, D, E
B дружит с A, D, E
C дружит с B, E
Как нам найти у кого из них есть хотя бы два общих друга?
Алгоритмы MapReduce
Map (берем перебором каждую пару друзей для каждого
человека):
(B,D), A (A,E), B
(B,E), A (D,E), B
(D,E), A (A,D), B
(B,E), C
Reduce (отбирает все строки, в которых второй элемент имеет
несколько значений):
(A,D), (B)
(B,E), (A,C)
(A,E), (B)
(D,E), (A,B)
(B,D), (A)
Ответ: A и C имеют общих друзей B, E
A и B имеют общих друзей D, E
Алгоритмы MapReduce
 Алгоритм построения поискового образа документа
Поисковый образ – ключевые слова, выражающие
основное смысловое содержание документа.
«В каком городе родился Пушкин?» – «город»,
«родился», «Пушкин»
Map Строит вектор частот встречаемости основ слов
документа
Reduce Из построенного вектора основ рассчитывает вес
каждой основы слова, отбрасывает стоп-слова (предлоги,
союзы) и слова, частота которых в коллекции не входит в
заданные пределы. В качестве результата (образ
документа) строит вектор основ слов, имеющих
наибольший вес
Алгоритмы MapReduce
 Вычисление PageRank (ранг страницы; индекс
цитирования)
Этапы вычисления:
1. Поиск ссылок в документе (web-странице)
2. Итеративное вычисление PageRank
3. Сортировка документов по PageRank
Алгоритмы MapReduce
Этап 1: поиск ссылок в документе (web-странице)
Map
 Вход: index.html
 Выход (для каждой внешней ссылки):
key: “index.html”
value: “2.html”
Reduce
В документе находим
 Вход:
key: “index.html”
все внешние ссылки.
values: “2.html” , “3.html” ,… Map выдает в качестве
 Выход : key: “index.html”
ключа URL документа,
value: “1.0 2.html 3.html ...” а в качестве значения-
ссылку.
Алгоритмы MapReduce
Этап 1: разбор документов (web-страниц) по ссылкам
Map
 Вход: index.html
Reducer записывает для
 Выход (для каждой внешней ссылки): каждого документы все
key: “index.html” внешние ссылки в одну
value: “2.html” строку. На выходе : URL
документа
и
строка
Reduce
ссылок.
 Вход:
key: “index.html”
Также
добавляется
values: “2.html” , “3.html” ,… начальное значение PR
(одинаковое для всех
 Выход : key: “index.html”
страниц)
value: “1.0 2.html 3.html ...”
Алгоритмы MapReduce
Этап 2: итеративное вычисление PageRank
Map
 Вход:
key: index.html
values: <pagerank> 1.html 2.html...
 Выход: key: “1.html”
value: “index.html <pagerank> <number of outlinks>”
Reduce
На входе начальное
 Вход:
key: “1.html”
значение PR и
value: “index.html 0.5 23”
внешние ссылки
value: “2.html 2.4 2”
документа
 Выход : key: “1.html”
value: “<new pagerank> index.html 2.html...”
Алгоритмы MapReduce
Этап 2: итеративное вычисление PageRank
Map
 Вход:
key: index.html
values: <pagerank> 1.html 2.html...
 Выход: key: “1.html”
value: “index.html <pagerank> <number of outlinks>”
Reduce
Для каждой внешней
 Вход:
key: “1.html”
ссылки выводим URL
value: “index.html 0.5 23”
документа, его PR и
value: “2.html 2.4 2”
число
ссылок
в
документе
 Выход : key: “1.html”
value: “<new pagerank> index.html 2.html...”
Алгоритмы MapReduce
Этап 2: итеративное вычисление PageRank
Map
 Вход:
key: index.html
values: <pagerank> 1.html 2.html...
 Выход: key: “1.html”
value: “index.html <pagerank> <number of outlinks>”
Reducer
Reduce
получает Url документа,
 Вход:
key: “1.html”
value: “index.html 0.5 23” Url документов,
ссылающихся на него,
value: “2.html 2.4 2”
их PR и
 Выход : key: “1.html”
число внешних ссылок
value: “<new pagerank> index.html 2.html...”
Алгоритмы MapReduce
Этап 2: итеративное вычисление PageRank
Map
 Вход:
key: index.html
values: <pagerank> 1.html 2.html...
 Выход: key: “1.html”
value: “index.html <pagerank> <number of outlinks>”
Reduce
 Вход:
key: “1.html”
Вычисляем новый PR и
value: “index.html 0.5 23”
записываем в строку
value: “2.html 2.4 2”
все ссылки на страницу
 Выход : key: “1.html”
value: “<new pagerank> index.html 2.html...”
Алгоритмы MapReduce
Этап 3: сортировка документов по PageRank
 На входе: набор
Url документов,
PR и внешние
ссылки
Map
 Вход:
key: “index.html”
values: “<pagerank> <outlinks>”
 Выход: key: “<pagerank>”
value: “index.html”
 MapReduce сортирует все выходы по ключу, используя
распределенную сортировку слиянием
• Сортирует выходы каждого reduce и затем объединяет их в
один файл.
• Выход: key= PR, value = URL соответствующего документа.
Обо всем остальном позаботится MapReduce.
Алгоритмы MapReduce
PageRank документа u
PageRank документа v,
что ссылается на u
Коэффициент затухания
Число ссылок со страницы v
Источники
• Параллельный Reduce: математические основы и пример
реализации на Java
http://samolisov.blogspot.com/2010/04/reduce-java.html
• MapReduce в трех картинках
http://habrahabr.ru/blogs/net/123993/
• MapReduce.org BlogPost http://www.mapreduce.org/
• Hadoop MapReduce Tutorial
http://hadoop.apache.org/common/docs/current/mapred_
tutorial.html
• Параллельное программирование в Hadoop
http://asozykin.ru/courses/hadoop
Источники
• Introduction to MapReduce for .Net Developers
http://www.developerzen.com/2009/05/06/introductionto-mapreduce-for-net-developers/
• MapReduce Example Programs http://holumbus.fhwedel.de/trac/wiki/MapReduceExamples
• Известные области применения MapReduce
http://www.infology.ru/2008/11/07/681/
• MapReduce: решение реальных задач
http://habrahabr.ru/blogs/algorithm/74792/
• MapReduce или подсчеты за пределами возможностей
памяти и процессора
http://habrahabr.ru/blogs/algorithm/103467/
Источники
• Designing algorithms for Map Reduce
http://horicky.blogspot.com/2010/08/designingalgorithmis-for-map-reduce.html
• Hadoop
http://www.insight-it.ru/masshtabiruemost/hadoop/
• Understanding Hadoop Clusters and the Network
http://bradhedlund.com/2011/09/10/understandinghadoop-clusters-and-the-network/
• How Hadoop Map/Reduce works
http://architects.dzone.com/articles/how-hadoopmapreduce-works
СПАСИБО ЗА ВНИМАНИЕ
Download