Нижегородский государственный университет им. Н.И.Лобачевского Национальный исследовательский университет Факультет вычислительной математики и кибернетики Парадигма 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 СПАСИБО ЗА ВНИМАНИЕ