63
09 MapReduce Инструменты и практические примеры О.В. Сухорослов [email protected] 20.04.2012 О.В. Сухорослов 09 MapReduce 20.04.2012 1 / 63

О.В.Сухорослов "MapReduce: инструменты и практические примеры"

  • Upload
    yandex

  • View
    2.934

  • Download
    4

Embed Size (px)

DESCRIPTION

О.В.Сухорослов "MapReduce: инструменты и практические примеры", 20.04.2012, место показа: МФТИ, Школа анализа данных (ШАД)

Citation preview

Page 1: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

09 MapReduceИнструменты и практические примеры

О.В. Сухорослов

[email protected]

20.04.2012

О.В. Сухорослов () 09 MapReduce 20.04.2012 1 / 63

Page 2: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Объявления

Конкурс параллельного программирования Accelerate 2012 1

16 апреля - 16 маяРезультаты участия могут быть зачтены как дополнительныебаллы по курсу

Плановый downtime учебного кластера25.04.2012, 19:00-20:00 MSK

1http://software.intel.com/ru-ru/articles/contest-accelerate-2012-main/О.В. Сухорослов () 09 MapReduce 20.04.2012 2 / 63

Page 3: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

План лекции

Инструменты для работы с Hadoop MapReduceЗадачи на графах и MapReduceОграничения MapReduce, другие модели

О.В. Сухорослов () 09 MapReduce 20.04.2012 3 / 63

Page 4: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Инструменты для работы с Hadoop MapReduce

О.В. Сухорослов () 09 MapReduce 20.04.2012 4 / 63

Page 5: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Apache Pig

http://pig.apache.org/

О.В. Сухорослов () 09 MapReduce 20.04.2012 5 / 63

Page 6: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Apache Pig

Платформа для анализа больших объемов данных

Высокоуровневый язык Pig Latin для описания процедур анализаи обработки данных

Среда выполнения программ на Pig LatinЛокальное выполнение внутри одной JVMКомпилятор из PigLatin в MapReduce-задания, выполняемые наHadoop

О.В. Сухорослов () 09 MapReduce 20.04.2012 6 / 63

Page 7: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Цели

Процедуры обработки данных на практикесостоят из нескольких стадийподразумевают несколько входов и выходовсочетают стандартные (filter, join ...) и специально реализованныеоперации

MapReduce1 вход, 2 фиксированных шага, 1 выходмного ручного кодирования (соединение MR-стадий руками,ухищрения для нескольких входов/выходов, реализация типовыхопераций)семантика скрыта внутри map/reduce функцийдлительный цикл разработки программы (реализация,компиляция, упаковка, запуск)

Требуется высокоуровневая модель программирования поверхMapReduce с быстрым циклом разработки

О.В. Сухорослов () 09 MapReduce 20.04.2012 7 / 63

Page 8: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Pig Latin

Процедурный стиль программированияПоследовательность действий

Встроенные операторыSQL-подобные примитивы

FILTER, GROUP, JOIN, COGROUP, UNION ...Аналог map

FOREACH ... GENERATEЧтение и запись данных

LOAD, STORE

Расширение с помощью пользовательских функцийJava, Python, JavaScript

О.В. Сухорослов () 09 MapReduce 20.04.2012 8 / 63

Page 9: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Модель данных

Выражения Pig Latin оперируют с мешками (bag)Мешок является коллекцией кортежейКортеж (tuple) - упорядоченное множество полей (field)У поля есть имя и типВнутри поля хранятся данные

О.В. Сухорослов () 09 MapReduce 20.04.2012 9 / 63

Page 10: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count

1 data = LOAD ’data ’ AS (line:chararray );2

3 words = FOREACH data GENERATE4 FLATTEN( TOKENIZE( LOWER(line) ));5 grouped = GROUP words BY $0;6 counts = FOREACH grouped GENERATE group , COUNT(words );7 ordered = ORDER counts BY $1 DESC;8

9 STORE ordered INTO ’counts ’;

О.В. Сухорослов () 09 MapReduce 20.04.2012 10 / 63

Page 11: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (1)

1 $ pig -x local2 grunt > data = LOAD ’saltan.txt ’ AS (line:chararray );3 grunt > DUMP data;

("Кабы я была царица,-)(Говорит одна девица,-)(То на весь крещеный мир)(Приготовила б я пир".)(- "Кабы я была царица,-)(Говорит ее сестрица,-)(То на весь бы мир одна)(Наткала я полотна".)(- "Кабы я была царица,-)(Третья молвила сестрица,-)(Я б для батюшки-царя)(Родила богатыря".)

О.В. Сухорослов () 09 MapReduce 20.04.2012 11 / 63

Page 12: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (2)

1 grunt > words = FOREACH data GENERATE2 FLATTEN( TOKENIZE( LOWER(line) ));3 grunt > DUMP words;

(кабы)(я)(была)(царица)(-)(говорит)(одна)(девица)(-)(то)...

О.В. Сухорослов () 09 MapReduce 20.04.2012 12 / 63

Page 13: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (2*)

1 grunt > words = FOREACH data GENERATE2 TOKENIZE( LOWER(line) );3 grunt > DUMP words;

({(кабы),(я),(была),(царица),(-)})({(говорит),(одна),(девица),(-)})({(то),(на),(весь),(крещеный),(мир)})({(приготовила),(б),(я),(пир),(.)})({(-),(кабы),(я),(была),(царица),(-)})({(говорит),(ее),(сестрица),(-)})({(то),(на),(весь),(бы),(мир),(одна)})({(наткала),(я),(полотна),(.)})({(-),(кабы),(я),(была),(царица),(-)})({(третья),(молвила),(сестрица),(-)})({(я),(б),(для),(батюшки-царя)})({(родила),(богатыря),(.)})

О.В. Сухорослов () 09 MapReduce 20.04.2012 13 / 63

Page 14: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (3)

1 grunt > grouped = GROUP words BY $0;2 grunt > DUMP grouped;

(-,{(-),(-),(-),(-),(-),(-),(-),(-)})(.,{(.),(.),(.)})(б,{(б),(б)})(я,{(я),(я),(я),(я),(я),(я)})(бы,{(бы)})(ее,{(ее)})(на,{(на),(на)})(то,{(то),(то)})(для,{(для)})(мир,{(мир),(мир)})...

О.В. Сухорослов () 09 MapReduce 20.04.2012 14 / 63

Page 15: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (4)

1 grunt > DESCRIBE grouped;2 grouped: {group: chararray ,words:3 {( bag_of_tokenTuples ::token: chararray )}}4 grunt > counts = FOREACH grouped GENERATE group , COUNT(words);5 grunt > DUMP counts;

(-,8)(.,3)(б,2)(я,6)(бы,1)(ее,1)(на,2)(то,2)(для,1)(мир,2)...

О.В. Сухорослов () 09 MapReduce 20.04.2012 15 / 63

Page 16: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (5)

1 grunt > ordered = ORDER counts BY $1 DESC;2 grunt > DUMP ordered;

(-,8)(я,6)(.,3)(кабы,3)(царица,3)(была,3)(одна,2)(б,2)(на,2)(то,2)(мир,2)...

О.В. Сухорослов () 09 MapReduce 20.04.2012 16 / 63

Page 17: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Word Count (6)

1 grunt > STORE ordered INTO ’counts ’;2 grunt > quit3 $ ls counts4 part -r -00000 _SUCCESS5 $ cat counts/part -r -00000

- 8я 6. 3кабы 3царица 3была 3одна 2б 2на 2то 2мир 2... О.В. Сухорослов () 09 MapReduce 20.04.2012 17 / 63

Page 18: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Запуск на кластере

wiki-count.pig1 data = LOAD ’$input ’ AS (title: chararray ,2 content: chararray );3 words = FOREACH data GENERATE4 FLATTEN( TOKENIZE( LOWER(content) ));5 grouped = GROUP words BY $0;6 counts = FOREACH grouped GENERATE group , COUNT(words );7 ordered = ORDER counts BY $1 DESC;8 STORE ordered INTO ’$output ’;

1 $ pig -param input=/data/wiki/en/articles2 -param output=wiki -count -en3 wiki -count.pig

О.В. Сухорослов () 09 MapReduce 20.04.2012 18 / 63

Page 19: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Сколько MapReduce-заданий было запущено?

О.В. Сухорослов () 09 MapReduce 20.04.2012 19 / 63

Page 20: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Компиляция и выполнение Pig-скрипта на Hadoop

О.В. Сухорослов () 09 MapReduce 20.04.2012 20 / 63

Page 21: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

MapReduce

1 // map2 map_result = FOREACH input GENERATE FLATTEN(Map(input_record ));3

4 // shuffle5 key_groups = GROUP map_result BY $0;6

7 // reduce8 output = FOREACH key_groups GENERATE group , Reduce(map_result );

О.В. Сухорослов () 09 MapReduce 20.04.2012 21 / 63

Page 22: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

MapReduce-задания для WordCount

... Choosing to move algebraic foreach to combiner

... MR plan size before optimization: 3

... MR plan size after optimization: 3

JobId Maps Reduces Alias Featurejob1 83 12 counts,data,grouped,words GROUP_BY,COMBINERjob2 6 1 ordered SAMPLERjob3 6 1 ordered ORDER_BY

Job DAG:job1 -> job2,job2 -> job3,job3

1 grunt > EXPLAIN -script wiki -count.pig2 -param input=/data/wiki/en/articles3 -param output=wiki -count -en

О.В. Сухорослов () 09 MapReduce 20.04.2012 22 / 63

Page 23: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Количество REDUCE-задач?

Автоматический режимЭвристика на основе объема входных данных (1Gb per reducer)

1 #reducers = MIN (pig.exec.reducers.max ,2 total_input_bytes / pig.exec.reducers.bytes.per.reducer)

Ручной режимКоманда “set default parallel N”Ключевое слово PARALLEL

Применяется с операторами GROUP, COGROUP, CROSS,DISTINCT, JOIN, ORDER BY

О.В. Сухорослов () 09 MapReduce 20.04.2012 23 / 63

Page 24: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Пример использования PARALLEL

1 data = LOAD ’$input ’ AS (title: chararray ,2 content: chararray );3 words = FOREACH data GENERATE4 FLATTEN( TOKENIZE( LOWER(content) ));5 grouped = GROUP words BY $0 PARALLEL 70;6 counts = FOREACH grouped GENERATE group , COUNT(words );7 ordered = ORDER counts BY $1 DESC PARALLEL 5;8 STORE ordered INTO ’$output ’;

О.В. Сухорослов () 09 MapReduce 20.04.2012 24 / 63

Page 25: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Пример 2

Найти Top10 наиболее посещаемых сайтов в каждой категории

О.В. Сухорослов () 09 MapReduce 20.04.2012 25 / 63

Page 26: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Схема реализации

О.В. Сухорослов () 09 MapReduce 20.04.2012 26 / 63

Page 27: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Реализация

1 visits = LOAD ’/data/visits ’ AS (user:int ,2 url:chararray ,3 time:long);4 gVisits = GROUP visits BY url;5 visitCounts = FOREACH gVisits GENERATE6 group AS url ,7 COUNT(visits) AS count;8

9 urlInfo = LOAD ’/data/urlinfo ’ AS (url:chararray ,10 category:int ,11 pRank:float);12 visitCounts = JOIN visitCounts BY url , urlInfo BY url;13 visitCounts = FOREACH visitCounts GENERATE14 visitCounts ::url ,15 category , count , pRank;16

17 gCategories = GROUP visitCounts BY category;18 topUrls = FOREACH gCategories GENERATE TOP(10,3, visitCounts );19

20 STORE topUrls INTO ’/data/topurls ’;О.В. Сухорослов () 09 MapReduce 20.04.2012 27 / 63

Page 28: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Компиляция в MapReduce

О.В. Сухорослов () 09 MapReduce 20.04.2012 28 / 63

Page 29: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

User Defined Functions2

Позволяют реализовать произвольную логику обработки данных,а также поддержку чтения/записи различных форматов

Поддерживаемые языки реализации UDFJava

Наболее широкие возможности и максимальная эффективностьPython

Нет поддержки load/storeJavaScript

Experimental

2http://pig.apache.org/docs/r0.9.2/udf.htmlО.В. Сухорослов () 09 MapReduce 20.04.2012 29 / 63

Page 30: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Более сложные примеры

Pig Tutorial3

Анализ логов поисковой системыОпределение популярных поисковых запросов по часам дняСравнение популярности поисковых запросов за два временныхпериода

3http://pig.apache.org/docs/r0.9.2/start.html#tutorialО.В. Сухорослов () 09 MapReduce 20.04.2012 30 / 63

Page 31: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Запуск Pig на учебном кластере

Установлен Pig 0.9.2

Интерактивная оболочка Grunt1 $ pig --help // Help2 $ pig -x local // Local mode3 $ pig // MapReduce mode (-x mapreduce)

Скрипт-файл1 $ pig -x local myscript.pig2 $ pig myscript.pig3

4 // Will replace ’$pname ’ with ’pvalue ’ in script5 $ pig -param pname=pvalue myscript.pig

О.В. Сухорослов () 09 MapReduce 20.04.2012 31 / 63

Page 32: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Pig и домашние задания

Pig нельзя использовать при решении ДЗ №3

Pig можно будет использовать при решении ДЗ №4

О.В. Сухорослов () 09 MapReduce 20.04.2012 32 / 63

Page 33: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Другие инструменты

Hive4, HiveQLCascading5, PyCascading6

Cascalog7

Crunch8

Oozie9

Azkaban10

DataFu11

Apache Mahout12

4http://hive.apache.org/5http://www.cascading.org/6https://github.com/twitter/pycascading7https://github.com/nathanmarz/cascalog8https://github.com/cloudera/crunch9http://rvs.github.com/oozie/index.html

10http://sna-projects.com/azkaban/11http://sna-projects.com/datafu/12http://mahout.apache.org/

О.В. Сухорослов () 09 MapReduce 20.04.2012 33 / 63

Page 34: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Apache Mahout

Масштабируемые реализации алгоритмов машинного обученияДля Hadoop MapReduce и не только

Алгоритмы13

ClassificationClusteringPattern MiningRecommenders / Collaborative Filtering...

13https://cwiki.apache.org/confluence/display/MAHOUT/AlgorithmsО.В. Сухорослов () 09 MapReduce 20.04.2012 34 / 63

Page 35: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Задачи на графах и MapReduce

О.В. Сухорослов () 09 MapReduce 20.04.2012 35 / 63

Page 36: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Классы задач

Поиск и планирование путейВыделение компонентНахождение минимального остовного дереваПаросочетания в двудольном графеМаксимальный поток в сетиПоиск “особых” вершин

О.В. Сухорослов () 09 MapReduce 20.04.2012 36 / 63

Page 37: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Большие графы

Ссылочный граф WebМиллиарды вершин

Социальные сетиСотни миллионов вершин

Часто разреженныеЧисло ребер порядка числа вершин

О.В. Сухорослов () 09 MapReduce 20.04.2012 37 / 63

Page 38: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Представления графа

Матрица смежностиСписок смежных вершин

Эффективнее для разреженных графов

О.В. Сухорослов () 09 MapReduce 20.04.2012 38 / 63

Page 39: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Поиск кратчайших путей из заданной вершины(single-source shortest path problem)

Последовательный алгоритм

О.В. Сухорослов () 09 MapReduce 20.04.2012 39 / 63

Page 40: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Пример

О.В. Сухорослов () 09 MapReduce 20.04.2012 40 / 63

Page 41: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Параллельный алгоритм?

О.В. Сухорослов () 09 MapReduce 20.04.2012 41 / 63

Page 42: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Параллельный алгоритм

Применение поиска в ширину для определения кратчайших путейd(source) = 0Для всех вершин n, достижимых из source: d(n) = 1Для всех вершин n, достижимых из некоторого множества вершинS : d(n) = 1 + minm∈S d(m)

Параллельный поиск в ширинуКаждая итерация может быть представлена в видеMapReduce-задания

Рассмотрим сначала вариант графа с ребрами единичного веса

О.В. Сухорослов () 09 MapReduce 20.04.2012 42 / 63

Page 43: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Итерация

Структура графа передается между map и reduceРезультат итерации используется в качестве входа следующейитерации

О.В. Сухорослов () 09 MapReduce 20.04.2012 43 / 63

Page 44: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Остановка

Продолжаем итерации до тех пор, пока не останется вершин сd =∞

Делаем проверку в Reduce и записываем в счетчик

Сколько итераций потребуется?

О.В. Сухорослов () 09 MapReduce 20.04.2012 44 / 63

Page 45: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Ребра с произвольными весами

В списках смежных вершин требуется дополнительно хранить весаребер w

В Map вместо d + 1 возвращается d + w

Условие остановки итераций?

О.В. Сухорослов () 09 MapReduce 20.04.2012 45 / 63

Page 46: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Остановка

Остановить итерации следует тогда, когда расстояния перестанутизменяться

Что если в графе есть ребра с отрицательным весом?

О.В. Сухорослов () 09 MapReduce 20.04.2012 46 / 63

Page 47: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Сравнение с последовательным алгоритмом

Алгоритм Дейкстрыэффективнее в плане общего количества операцийиспользует глобальную структуру данных в памятиплохо распараллеливается

Алгоритм на MapReduceвыполняет бОльшее количество операцийхорошо распараллеливаетсяхорошо масштабируется (для разреженных графов)

О.В. Сухорослов () 09 MapReduce 20.04.2012 47 / 63

Page 48: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

MapReduce-алгоритмы на графах

Структура графа представлена с помощью списков смежныхвершинПомимо этого с каждой вершиной и ребром может быть связанынекоторые данные

Mapвычисления над каждой вершиной в отдельности, сиспользованием локальных данных и исходящих реберрезультаты вычислений оформляются в виде пар(соседняя_вершина, значение)

Reduce:аггрегация всех промежуточных значений, поступивших длязаданной вершины

Структура графа передается между map и reduce

Обычно итерационный процессОсновная программа осуществляет запуск MR-итераций ипроверяет условие остановки

О.В. Сухорослов () 09 MapReduce 20.04.2012 48 / 63

Page 49: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

PageRank

Определение рейтинга страницы через количество ведущих на неессылок и рейтинги ссылающихся страниц (Брин, 1998)

О.В. Сухорослов () 09 MapReduce 20.04.2012 49 / 63

Page 50: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Модель случайного блуждания по Web-графу

Стартуем на случайной страницеС вероятностью α (около 0,15) переходим на случайную страницуС вероятностью (1−α) переходим по одной из ссылок на странице

PageRankпредельная вероятность оказаться на заданной страницераспределение вероятности по всем страницам

О.В. Сухорослов () 09 MapReduce 20.04.2012 50 / 63

Page 51: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Вычисление PageRank

Рекурсивная формула

Итеративный алгоритмВычисляем новые значения PR по формуле, используя значения спредыдущей итерацииДостаточно быстро сходится

Для графа с 322M ребер потребовалось 52 итерации

О.В. Сухорослов () 09 MapReduce 20.04.2012 51 / 63

Page 52: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Пример

О.В. Сухорослов () 09 MapReduce 20.04.2012 52 / 63

Page 53: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Упрощающие предположения

α = 0 - исключим случайные телепортацииВ графе отсутствуют вершины без исходящих ребер

О.В. Сухорослов () 09 MapReduce 20.04.2012 53 / 63

Page 54: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Итерация на MapReduce

О.В. Сухорослов () 09 MapReduce 20.04.2012 54 / 63

Page 55: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Итерация на MapReduce

О.В. Сухорослов () 09 MapReduce 20.04.2012 55 / 63

Page 56: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Вершины без исходящих ребер

ПроблемаНарушается постоянство суммарного значения PageRank

РешениеРавномерное распределение “пропавшей” массы PageRank междувсеми вершинами графа

Реализация на MapReduceПодсчет “пропавшего” PageRank

СчетчикПромежуточные значения со специальным ключомЗапись промежуточной суммы каждой map-задачи в стороннийфайл

Распределение “пропавшего” PageRank между всеми вершинамиДополнительное MapReduce-заданиеВнутри map вычисляем окончательное значение PageRank сучетом дополнительной массы m и фактора α:

О.В. Сухорослов () 09 MapReduce 20.04.2012 56 / 63

Page 57: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Остановка

Значения PR стабилизировалисьФиксированное число итерацийРанжирование страниц стабилизировалось

О.В. Сухорослов () 09 MapReduce 20.04.2012 57 / 63

Page 58: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Оптимизация MapReduce-алгоритмов на графах14

Использование in-mapper combining

Повышение эффективности локальной аггрегации путемпредварительного разбиения графа на компоненты с сильнойвнутренней связностью

Сортировка пользователей социальной сети по местоположениюСортировка страниц по доменным именам

Отказ от передачи по сети (shuffle) структуры графаПередаем только “сообщения” между вершинами графаReducer загружает соотв. часть графа из файла в HDFS

14http://www.umiacs.umd.edu/ jimmylin/publications/Lin_Schatz_MLG2010.pdfО.В. Сухорослов () 09 MapReduce 20.04.2012 58 / 63

Page 59: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Другой подход?

О.В. Сухорослов () 09 MapReduce 20.04.2012 59 / 63

Page 60: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Ограничения MapReduce и альтернативные модели

О.В. Сухорослов () 09 MapReduce 20.04.2012 60 / 63

Page 61: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Ограничения MapReduce

Глобальная синхронизация только между map и reduceЗадачи, требующие наличия общего глобального состояния вовремя вычислений

Синхронизация между заданиями через чтение/запись в ФСИтеративные алгоритмы

Batch-обработка больших порций данныхOnline-обработка данных в потоковом режимеИнкрементальное добавление небольших порцийReal-time запросы

О.В. Сухорослов () 09 MapReduce 20.04.2012 61 / 63

Page 62: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Предлагаемые расширения и надстройки

Map-Reduce-Merge

SQL engine on top of MapReduceTenzing (Google, 2011)

Parallel CollectionsFlumeJava (Google, 2010)

IterativeHaLoopTwister

Hadoop OnlineOnline aggregationStream processing

SparkIterative algorithmsInteractive data mining

О.В. Сухорослов () 09 MapReduce 20.04.2012 62 / 63

Page 63: О.В.Сухорослов "MapReduce: инструменты и практические примеры"

Другие модели и архитектуры

DataflowDryad/DryadLINQ (Microsoft), Nephele/PACT, SCOPE

Real-Time / Stream ProcessingS4 (Yahoo!), Cloudscale (C++, MPI), Storm (Twitter)

Graph ProcessingPregel (Google, 2009), Giraph, Golden OrbGraphLab

Partitioned In-memory TablePiccolo

Incremental ProcessingPercolator (Google, 2010)

Interactive Analysis, ad hoc queriesDremel (Google, 2010)

О.В. Сухорослов () 09 MapReduce 20.04.2012 63 / 63