SlideShare a Scribd company logo
09 MapReduce
                  Инструменты и практические примеры


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

                         oleg.sukhoroslov@gmail.com


                                 20.04.2012




О.В. Сухорослов           ()      09 MapReduce         20.04.2012   1 / 63
Объявления
       Конкурс параллельного программирования Accelerate 2012                    1

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

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




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

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




    О.В. Сухорослов   ()   09 MapReduce        20.04.2012   3 / 63
Инструменты для работы с Hadoop MapReduce




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




                      http://pig.apache.org/



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

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

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

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




    О.В. Сухорослов      ()   09 MapReduce               20.04.2012   6 / 63
Цели
   Процедуры обработки данных на практике
        состоят из нескольких стадий
        подразумевают несколько входов и выходов
        сочетают стандартные (filter, join ...) и специально реализованные
        операции

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

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

   О.В. Сухорослов       ()    09 MapReduce                 20.04.2012   7 / 63
Pig Latin
    Процедурный стиль программирования
         Последовательность действий

    Встроенные операторы
         SQL-подобные примитивы
               FILTER, GROUP, JOIN, COGROUP, UNION ...
         Аналог map
               FOREACH ... GENERATE
         Чтение и запись данных
               LOAD, STORE

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




    О.В. Сухорослов        ()       09 MapReduce         20.04.2012   8 / 63
Модель данных

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




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

1   data       = LOAD ’ data ’ AS ( line : chararray );
2
3   words   = FOREACH data GENERATE
4                          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
Word Count (1)
1   $ pig -x local
2   grunt > data = LOAD ’ saltan . txt ’ AS ( line : chararray );
3   grunt > DUMP data ;


("Кабы я была царица,-)
(Говорит одна девица,-)
(То на весь крещеный мир)
(Приготовила б я пир".)
(- "Кабы я была царица,-)
(Говорит ее сестрица,-)
(То на весь бы мир одна)
(Наткала я полотна".)
(- "Кабы я была царица,-)
(Третья молвила сестрица,-)
(Я б для батюшки-царя)
(Родила богатыря".)
      О.В. Сухорослов     ()   09 MapReduce               20.04.2012   11 / 63
Word Count (2)

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



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

      О.В. Сухорослов    ()   09 MapReduce              20.04.2012   12 / 63
Word Count (2*)
1   grunt > words = FOREACH data GENERATE
2                   TOKENIZE ( LOWER ( line ) );
3   grunt > DUMP words ;


({(кабы),(я),(была),(царица),(-)})
({(говорит),(одна),(девица),(-)})
({(то),(на),(весь),(крещеный),(мир)})
({(приготовила),(б),(я),(пир),(.)})
({(-),(кабы),(я),(была),(царица),(-)})
({(говорит),(ее),(сестрица),(-)})
({(то),(на),(весь),(бы),(мир),(одна)})
({(наткала),(я),(полотна),(.)})
({(-),(кабы),(я),(была),(царица),(-)})
({(третья),(молвила),(сестрица),(-)})
({(я),(б),(для),(батюшки-царя)})
({(родила),(богатыря),(.)})
      О.В. Сухорослов    ()   09 MapReduce         20.04.2012   13 / 63
Word Count (3)

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



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


      О.В. Сухорослов   ()   09 MapReduce   20.04.2012   14 / 63
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
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
Word Count (6)
1   grunt > STORE ordered INTO ’ counts ’;
2   grunt > quit
3   $ ls counts
4   part -r -00000 _SUCCESS
5   $ cat counts / part -r -00000


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

                                wiki-count.pig
1   data    = LOAD ’ $input ’ AS ( title : chararray ,
2                                  content : chararray );
3   words   = FOREACH data GENERATE
4                            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 / articles
2         - param output = wiki - count - en
3         wiki - count . pig




      О.В. Сухорослов      ()     09 MapReduce           20.04.2012   18 / 63
Сколько MapReduce-заданий было запущено?




    О.В. Сухорослов   ()   09 MapReduce    20.04.2012   19 / 63
Компиляция и выполнение Pig-скрипта на Hadoop




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

1   // map
2   map_result = FOREACH input GENERATE FLATTEN ( Map ( input_record ));
3
4   // shuffle
5   key_groups = GROUP map_result BY $0 ;
6
7   // reduce
8   output = FOREACH key_groups GENERATE group , Reduce ( map_result );




      О.В. Сухорослов     ()   09 MapReduce              20.04.2012   21 / 63
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                         Feature
job1        83       12        counts,data,grouped,words     GROUP_BY,COMBINER
job2        6        1         ordered                       SAMPLER
job3        6        1         ordered                       ORDER_BY

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

1   grunt > EXPLAIN - script wiki - count . pig
2                   - param input =/ data / wiki / en / articles
3                   - param output = wiki - count - en

        О.В. Сухорослов         ()   09 MapReduce                  20.04.2012   22 / 63
Количество REDUCE-задач?
     Автоматический режим
           Эвристика на основе объема входных данных (1Gb per reducer)

1   # reducers = MIN ( pig . exec . reducers . max ,
2        tota l_input_b ytes / 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
Пример использования PARALLEL

1   data    = LOAD ’ $input ’ AS ( title : chararray ,
2                                  content : chararray );
3   words   = FOREACH data GENERATE
4                            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
Пример 2

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




   О.В. Сухорослов    ()   09 MapReduce           20.04.2012   25 / 63
Схема реализации




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   26 / 63
Реализация
 1   visits = LOAD ’/ data / visits ’ AS ( user : int ,
 2                                         url : chararray ,
 3                                         time : long );
 4   gVisits = GROUP visits BY url ;
 5   visitCounts = FOREACH gVisits GENERATE
 6                                       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 GENERATE
14                                       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
Компиляция в MapReduce




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

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

       Поддерживаемые языки реализации UDF
             Java
                    Наболее широкие возможности и максимальная эффективность
             Python
                    Нет поддержки load/store
             JavaScript
                    Experimental




  2
      http://pig.apache.org/docs/r0.9.2/udf.html
        О.В. Сухорослов            ()   09 MapReduce             20.04.2012   29 / 63
Более сложные примеры

       Pig Tutorial3

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




  3
      http://pig.apache.org/docs/r0.9.2/start.html#tutorial
        О.В. Сухорослов         ()     09 MapReduce           20.04.2012   30 / 63
Запуск Pig на учебном кластере

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

     Интерактивная оболочка Grunt
1   $ pig -- help       // Help
2   $ pig -x local      // Local mode
3   $ pig               // MapReduce mode ( - x mapreduce )



     Скрипт-файл
1   $ pig -x local myscript . pig
2   $ pig myscript . pig
3
4   // Will replace ’ $pname ’ with ’ pvalue ’ in script
5   $ pig - param pname = pvalue myscript . pig




      О.В. Сухорослов       ()   09 MapReduce            20.04.2012   31 / 63
Pig и домашние задания

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

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




    О.В. Сухорослов   ()   09 MapReduce             20.04.2012   32 / 63
Другие инструменты

      Hive4 , HiveQL
      Cascading5 , PyCascading6
      Cascalog7
      Crunch8
      Oozie9
      Azkaban10
      DataFu11
      Apache Mahout12
  4
    http://hive.apache.org/
  5
    http://www.cascading.org/
  6
    https://github.com/twitter/pycascading
  7
    https://github.com/nathanmarz/cascalog
  8
    https://github.com/cloudera/crunch
  9
    http://rvs.github.com/oozie/index.html
 10
    http://sna-projects.com/azkaban/
 11
    http://sna-projects.com/datafu/
 12
    http://mahout.apache.org/
      О.В. Сухорослов       ()     09 MapReduce   20.04.2012   33 / 63
Apache Mahout
       Масштабируемые реализации алгоритмов машинного обучения
             Для Hadoop MapReduce и не только

       Алгоритмы13
             Classification
             Clustering
             Pattern Mining
             Recommenders / Collaborative Filtering
             ...




 13
      https://cwiki.apache.org/confluence/display/MAHOUT/Algorithms
        О.В. Сухорослов        ()    09 MapReduce                20.04.2012   34 / 63
Задачи на графах и MapReduce




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   35 / 63
Классы задач

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




    О.В. Сухорослов   ()   09 MapReduce       20.04.2012   36 / 63
Большие графы
   Ссылочный граф Web
        Миллиарды вершин

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

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




   О.В. Сухорослов      ()   09 MapReduce   20.04.2012   37 / 63
Представления графа




   Матрица смежности
   Список смежных вершин
         Эффективнее для разреженных графов




    О.В. Сухорослов     ()   09 MapReduce     20.04.2012   38 / 63
Поиск кратчайших путей из заданной вершины
(single-source shortest path problem)

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




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




   О.В. Сухорослов   ()   09 MapReduce   20.04.2012   40 / 63
Параллельный алгоритм?




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   41 / 63
Параллельный алгоритм
   Применение поиска в ширину для определения кратчайших путей
         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
Итерация




   Структура графа передается между map и reduce
        Результат итерации используется в качестве входа следующей
        итерации
   О.В. Сухорослов      ()    09 MapReduce               20.04.2012   43 / 63
Остановка
   Продолжаем итерации до тех пор, пока не останется вершин с
   d =∞
         Делаем проверку в Reduce и записываем в счетчик

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




    О.В. Сухорослов      ()   09 MapReduce                 20.04.2012   44 / 63
Ребра с произвольными весами

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

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




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




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

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

    О.В. Сухорослов   ()   09 MapReduce              20.04.2012   46 / 63
Сравнение с последовательным алгоритмом
   Алгоритм Дейкстры
         эффективнее в плане общего количества операций
         использует глобальную структуру данных в памяти
         плохо распараллеливается

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




    О.В. Сухорослов      ()   09 MapReduce                 20.04.2012   47 / 63
MapReduce-алгоритмы на графах

   Структура графа представлена с помощью списков смежных
   вершин
   Помимо этого с каждой вершиной и ребром может быть связаны
   некоторые данные
   Map
         вычисления над каждой вершиной в отдельности, с
         использованием локальных данных и исходящих ребер
         результаты вычислений оформляются в виде пар
         (соседняя_вершина, значение)
   Reduce:
         аггрегация всех промежуточных значений, поступивших для
         заданной вершины
   Структура графа передается между map и reduce
   Обычно итерационный процесс
         Основная программа осуществляет запуск MR-итераций и
         проверяет условие остановки
    О.В. Сухорослов      ()   09 MapReduce              20.04.2012   48 / 63
PageRank

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




   О.В. Сухорослов    ()   09 MapReduce            20.04.2012   49 / 63
Модель случайного блуждания по Web-графу

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

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




    О.В. Сухорослов      ()    09 MapReduce               20.04.2012   50 / 63
Вычисление PageRank

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




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




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




   О.В. Сухорослов   ()   09 MapReduce   20.04.2012   52 / 63
Упрощающие предположения

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




   О.В. Сухорослов    ()   09 MapReduce              20.04.2012   53 / 63
Итерация на MapReduce




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   54 / 63
Итерация на MapReduce




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   55 / 63
Вершины без исходящих ребер
   Проблема
         Нарушается постоянство суммарного значения PageRank
   Решение
         Равномерное распределение “пропавшей” массы PageRank между
         всеми вершинами графа
   Реализация на MapReduce
         Подсчет “пропавшего” PageRank
               Счетчик
               Промежуточные значения со специальным ключом
               Запись промежуточной суммы каждой map-задачи в сторонний
               файл
         Распределение “пропавшего” PageRank между всеми вершинами
               Дополнительное MapReduce-задание
               Внутри map вычисляем окончательное значение PageRank с
               учетом дополнительной массы m и фактора α:




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

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




    О.В. Сухорослов   ()   09 MapReduce     20.04.2012   57 / 63
Оптимизация MapReduce-алгоритмов на графах14

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

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

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




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




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   59 / 63
Ограничения MapReduce и альтернативные модели




    О.В. Сухорослов   ()   09 MapReduce   20.04.2012   60 / 63
Ограничения MapReduce
   Глобальная синхронизация только между map и reduce
        Задачи, требующие наличия общего глобального состояния во
        время вычислений

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

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




   О.В. Сухорослов      ()   09 MapReduce              20.04.2012   61 / 63
Предлагаемые расширения и надстройки

   Map-Reduce-Merge
   SQL engine on top of MapReduce
         Tenzing (Google, 2011)

   Parallel Collections
         FlumeJava (Google, 2010)

   Iterative
         HaLoop
         Twister

   Hadoop Online
         Online aggregation
         Stream processing

   Spark
         Iterative algorithms
         Interactive data mining
    О.В. Сухорослов           ()   09 MapReduce   20.04.2012   62 / 63
Другие модели и архитектуры
   Dataflow
         Dryad/DryadLINQ (Microsoft), Nephele/PACT, SCOPE

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

   Graph Processing
         Pregel (Google, 2009), Giraph, Golden Orb
         GraphLab

   Partitioned In-memory Table
         Piccolo

   Incremental Processing
         Percolator (Google, 2010)

   Interactive Analysis, ad hoc queries
         Dremel (Google, 2010)
    О.В. Сухорослов        ()    09 MapReduce                  20.04.2012   63 / 63

More Related Content

What's hot

О.В.Сухорослов "Многопотчное программирование. Часть 2"
О.В.Сухорослов "Многопотчное программирование. Часть 2"О.В.Сухорослов "Многопотчное программирование. Часть 2"
О.В.Сухорослов "Многопотчное программирование. Часть 2"
Yandex
 
О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"
Yandex
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
Глеб Тарасов
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce
Roman Brovko
 
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
Yandex
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
Alexey Paznikov
 
Hive vs Pig
Hive vs PigHive vs Pig
Hive vs Pig
Anatoliy Nikulin
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Yandex
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Alexey Paznikov
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
Alexey Paznikov
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
Alexey Paznikov
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelMikhail Kurnosov
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”
Platonov Sergey
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Mikhail Kurnosov
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Platonov Sergey
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Alexey Paznikov
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Mikhail Kurnosov
 

What's hot (20)

О.В.Сухорослов "Многопотчное программирование. Часть 2"
О.В.Сухорослов "Многопотчное программирование. Часть 2"О.В.Сухорослов "Многопотчное программирование. Часть 2"
О.В.Сухорослов "Многопотчное программирование. Часть 2"
 
О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"О.В.Сухорослов "Параллельное программирование"
О.В.Сухорослов "Параллельное программирование"
 
msumobi2. Лекция 1
msumobi2. Лекция 1msumobi2. Лекция 1
msumobi2. Лекция 1
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce07 - Hadoop. Решение задач с помощью MapReduce
07 - Hadoop. Решение задач с помощью MapReduce
 
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
О.В.Сухорослов "Распределенное программирование. Разбор ДЗ №2"
 
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
ПВТ - весна 2015 - Лекция 2. POSIX Threads. Основные понятия многопоточного п...
 
Hive vs Pig
Hive vs PigHive vs Pig
Hive vs Pig
 
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
Евгений Крутько — Опыт внедрения технологий параллельных вычислений для повыш...
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Лекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPIЛекция 4. Производные типы данных в стандарте MPI
Лекция 4. Производные типы данных в стандарте MPI
 
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray ChapelЛекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
Лекция 12 (часть 1): Языки программирования семейства PGAS: Cray Chapel
 
Синтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблицСинтез функциональных программ при помощи метода дедуктивных таблиц
Синтез функциональных программ при помощи метода дедуктивных таблиц
 
Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”Михаил Матросов, “С++ без new и delete”
Михаил Матросов, “С++ без new и delete”
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
Григорий Демченко, “Асинхронность и сопрограммы: обработка данных“
 
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
Лекция 3. Виртуальные топологии в MPI. Параллельные алгоритмы в стандарте MPI...
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)Семинар 2. Многопоточное программирование на OpenMP (часть 2)
Семинар 2. Многопоточное программирование на OpenMP (часть 2)
 

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

Hadoop implementation in Wikimart
Hadoop implementation in WikimartHadoop implementation in Wikimart
Hadoop implementation in WikimartRoman Zykov
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 Mapscript
Slach
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
PVasili
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
Roman Brovko
 
Apache Spark — Егор Пахомов
Apache Spark — Егор ПахомовApache Spark — Егор Пахомов
Apache Spark — Егор Пахомов
Yandex
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
Pavel Vlasov
 
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.DrupalCampDN
 
Парсер: что? зачем? как?
Парсер: что? зачем? как?Парсер: что? зачем? как?
Парсер: что? зачем? как?
STEP Computer Academy (Zaporozhye)
 
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...Ontico
 
Expert Fridays Spark Job
Expert Fridays Spark JobExpert Fridays Spark Job
Expert Fridays Spark Job
Provectus
 
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
Andrey Gershun
 
Apache spark
Apache sparkApache spark
Apache spark
Anton Anokhin
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
Vasil Remeniuk
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Yandex
 
Суперсилы Chrome developer tools
Суперсилы Chrome developer toolsСуперсилы Chrome developer tools
Суперсилы Chrome developer tools
2ГИС Технологии
 
Александр Соловьев "Как modnaKasta трансформировалась"
Александр Соловьев "Как modnaKasta трансформировалась"Александр Соловьев "Как modnaKasta трансформировалась"
Александр Соловьев "Как modnaKasta трансформировалась"
Fwdays
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
Roman Brovko
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
SmartTools
 
DUBLEX PCA FOR LOANS & DEFAULTS of FINTURK DATASET with R SoftWare
DUBLEX PCA FOR LOANS  & DEFAULTS of FINTURK DATASET with R SoftWareDUBLEX PCA FOR LOANS  & DEFAULTS of FINTURK DATASET with R SoftWare
DUBLEX PCA FOR LOANS & DEFAULTS of FINTURK DATASET with R SoftWare
Fatma ÇINAR
 

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

Hadoop implementation in Wikimart
Hadoop implementation in WikimartHadoop implementation in Wikimart
Hadoop implementation in Wikimart
 
Php Conf2007 Mapscript
Php Conf2007 MapscriptPhp Conf2007 Mapscript
Php Conf2007 Mapscript
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс Сервер
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
Apache Spark — Егор Пахомов
Apache Spark — Егор ПахомовApache Spark — Егор Пахомов
Apache Spark — Егор Пахомов
 
Yserver
YserverYserver
Yserver
 
Present saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasovPresent saint-per3-by-pavel-vlasov
Present saint-per3-by-pavel-vlasov
 
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
 
Парсер: что? зачем? как?
Парсер: что? зачем? как?Парсер: что? зачем? как?
Парсер: что? зачем? как?
 
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
12 вариантов использования Redis — в Tarantool (Александр Календарев, Констан...
 
Expert Fridays Spark Job
Expert Fridays Spark JobExpert Fridays Spark Job
Expert Fridays Spark Job
 
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
AlaSQL - SQL библиотека на JavaScript (выступление на PiterJS)
 
Apache spark
Apache sparkApache spark
Apache spark
 
DSLs in Lisp and Clojure
DSLs in Lisp and ClojureDSLs in Lisp and Clojure
DSLs in Lisp and Clojure
 
Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"Михаил Давыдов "Масштабируемые JavaScript-приложения"
Михаил Давыдов "Масштабируемые JavaScript-приложения"
 
Суперсилы Chrome developer tools
Суперсилы Chrome developer toolsСуперсилы Chrome developer tools
Суперсилы Chrome developer tools
 
Александр Соловьев "Как modnaKasta трансформировалась"
Александр Соловьев "Как modnaKasta трансформировалась"Александр Соловьев "Как modnaKasta трансформировалась"
Александр Соловьев "Как modnaKasta трансформировалась"
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
 
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScriptСтажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
 
DUBLEX PCA FOR LOANS & DEFAULTS of FINTURK DATASET with R SoftWare
DUBLEX PCA FOR LOANS  & DEFAULTS of FINTURK DATASET with R SoftWareDUBLEX PCA FOR LOANS  & DEFAULTS of FINTURK DATASET with R SoftWare
DUBLEX PCA FOR LOANS & DEFAULTS of FINTURK DATASET with R SoftWare
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
Yandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Yandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Yandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

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

  • 1. 09 MapReduce Инструменты и практические примеры О.В. Сухорослов oleg.sukhoroslov@gmail.com 20.04.2012 О.В. Сухорослов () 09 MapReduce 20.04.2012 1 / 63
  • 2. Объявления Конкурс параллельного программирования Accelerate 2012 1 16 апреля - 16 мая Результаты участия могут быть зачтены как дополнительные баллы по курсу Плановый downtime учебного кластера 25.04.2012, 19:00-20:00 MSK 1 http://software.intel.com/ru-ru/articles/contest-accelerate-2012-main/ О.В. Сухорослов () 09 MapReduce 20.04.2012 2 / 63
  • 3. План лекции Инструменты для работы с Hadoop MapReduce Задачи на графах и MapReduce Ограничения MapReduce, другие модели О.В. Сухорослов () 09 MapReduce 20.04.2012 3 / 63
  • 4. Инструменты для работы с Hadoop MapReduce О.В. Сухорослов () 09 MapReduce 20.04.2012 4 / 63
  • 5. Apache Pig http://pig.apache.org/ О.В. Сухорослов () 09 MapReduce 20.04.2012 5 / 63
  • 6. Apache Pig Платформа для анализа больших объемов данных Высокоуровневый язык Pig Latin для описания процедур анализа и обработки данных Среда выполнения программ на Pig Latin Локальное выполнение внутри одной JVM Компилятор из PigLatin в MapReduce-задания, выполняемые на Hadoop О.В. Сухорослов () 09 MapReduce 20.04.2012 6 / 63
  • 7. Цели Процедуры обработки данных на практике состоят из нескольких стадий подразумевают несколько входов и выходов сочетают стандартные (filter, join ...) и специально реализованные операции MapReduce 1 вход, 2 фиксированных шага, 1 выход много ручного кодирования (соединение MR-стадий руками, ухищрения для нескольких входов/выходов, реализация типовых операций) семантика скрыта внутри map/reduce функций длительный цикл разработки программы (реализация, компиляция, упаковка, запуск) Требуется высокоуровневая модель программирования поверх MapReduce с быстрым циклом разработки О.В. Сухорослов () 09 MapReduce 20.04.2012 7 / 63
  • 8. Pig Latin Процедурный стиль программирования Последовательность действий Встроенные операторы SQL-подобные примитивы FILTER, GROUP, JOIN, COGROUP, UNION ... Аналог map FOREACH ... GENERATE Чтение и запись данных LOAD, STORE Расширение с помощью пользовательских функций Java, Python, JavaScript О.В. Сухорослов () 09 MapReduce 20.04.2012 8 / 63
  • 9. Модель данных Выражения Pig Latin оперируют с мешками (bag) Мешок является коллекцией кортежей Кортеж (tuple) - упорядоченное множество полей (field) У поля есть имя и тип Внутри поля хранятся данные О.В. Сухорослов () 09 MapReduce 20.04.2012 9 / 63
  • 10. Word Count 1 data = LOAD ’ data ’ AS ( line : chararray ); 2 3 words = FOREACH data GENERATE 4 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
  • 11. Word Count (1) 1 $ pig -x local 2 grunt > data = LOAD ’ saltan . txt ’ AS ( line : chararray ); 3 grunt > DUMP data ; ("Кабы я была царица,-) (Говорит одна девица,-) (То на весь крещеный мир) (Приготовила б я пир".) (- "Кабы я была царица,-) (Говорит ее сестрица,-) (То на весь бы мир одна) (Наткала я полотна".) (- "Кабы я была царица,-) (Третья молвила сестрица,-) (Я б для батюшки-царя) (Родила богатыря".) О.В. Сухорослов () 09 MapReduce 20.04.2012 11 / 63
  • 12. Word Count (2) 1 grunt > words = FOREACH data GENERATE 2 FLATTEN ( TOKENIZE ( LOWER ( line ) )); 3 grunt > DUMP words ; (кабы) (я) (была) (царица) (-) (говорит) (одна) (девица) (-) (то) ... О.В. Сухорослов () 09 MapReduce 20.04.2012 12 / 63
  • 13. Word Count (2*) 1 grunt > words = FOREACH data GENERATE 2 TOKENIZE ( LOWER ( line ) ); 3 grunt > DUMP words ; ({(кабы),(я),(была),(царица),(-)}) ({(говорит),(одна),(девица),(-)}) ({(то),(на),(весь),(крещеный),(мир)}) ({(приготовила),(б),(я),(пир),(.)}) ({(-),(кабы),(я),(была),(царица),(-)}) ({(говорит),(ее),(сестрица),(-)}) ({(то),(на),(весь),(бы),(мир),(одна)}) ({(наткала),(я),(полотна),(.)}) ({(-),(кабы),(я),(была),(царица),(-)}) ({(третья),(молвила),(сестрица),(-)}) ({(я),(б),(для),(батюшки-царя)}) ({(родила),(богатыря),(.)}) О.В. Сухорослов () 09 MapReduce 20.04.2012 13 / 63
  • 14. Word Count (3) 1 grunt > grouped = GROUP words BY $0 ; 2 grunt > DUMP grouped ; (-,{(-),(-),(-),(-),(-),(-),(-),(-)}) (.,{(.),(.),(.)}) (б,{(б),(б)}) (я,{(я),(я),(я),(я),(я),(я)}) (бы,{(бы)}) (ее,{(ее)}) (на,{(на),(на)}) (то,{(то),(то)}) (для,{(для)}) (мир,{(мир),(мир)}) ... О.В. Сухорослов () 09 MapReduce 20.04.2012 14 / 63
  • 15. 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
  • 16. 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
  • 17. Word Count (6) 1 grunt > STORE ordered INTO ’ counts ’; 2 grunt > quit 3 $ ls counts 4 part -r -00000 _SUCCESS 5 $ cat counts / part -r -00000 - 8 я 6 . 3 кабы 3 царица 3 была 3 одна 2 б 2 на 2 то 2 мир 2 ... О.В. Сухорослов () 09 MapReduce 20.04.2012 17 / 63
  • 18. Запуск на кластере wiki-count.pig 1 data = LOAD ’ $input ’ AS ( title : chararray , 2 content : chararray ); 3 words = FOREACH data GENERATE 4 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 / articles 2 - param output = wiki - count - en 3 wiki - count . pig О.В. Сухорослов () 09 MapReduce 20.04.2012 18 / 63
  • 19. Сколько MapReduce-заданий было запущено? О.В. Сухорослов () 09 MapReduce 20.04.2012 19 / 63
  • 20. Компиляция и выполнение Pig-скрипта на Hadoop О.В. Сухорослов () 09 MapReduce 20.04.2012 20 / 63
  • 21. MapReduce 1 // map 2 map_result = FOREACH input GENERATE FLATTEN ( Map ( input_record )); 3 4 // shuffle 5 key_groups = GROUP map_result BY $0 ; 6 7 // reduce 8 output = FOREACH key_groups GENERATE group , Reduce ( map_result ); О.В. Сухорослов () 09 MapReduce 20.04.2012 21 / 63
  • 22. 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 Feature job1 83 12 counts,data,grouped,words GROUP_BY,COMBINER job2 6 1 ordered SAMPLER job3 6 1 ordered ORDER_BY Job DAG: job1 -> job2, job2 -> job3, job3 1 grunt > EXPLAIN - script wiki - count . pig 2 - param input =/ data / wiki / en / articles 3 - param output = wiki - count - en О.В. Сухорослов () 09 MapReduce 20.04.2012 22 / 63
  • 23. Количество REDUCE-задач? Автоматический режим Эвристика на основе объема входных данных (1Gb per reducer) 1 # reducers = MIN ( pig . exec . reducers . max , 2 tota l_input_b ytes / 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
  • 24. Пример использования PARALLEL 1 data = LOAD ’ $input ’ AS ( title : chararray , 2 content : chararray ); 3 words = FOREACH data GENERATE 4 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
  • 25. Пример 2 Найти Top10 наиболее посещаемых сайтов в каждой категории О.В. Сухорослов () 09 MapReduce 20.04.2012 25 / 63
  • 26. Схема реализации О.В. Сухорослов () 09 MapReduce 20.04.2012 26 / 63
  • 27. Реализация 1 visits = LOAD ’/ data / visits ’ AS ( user : int , 2 url : chararray , 3 time : long ); 4 gVisits = GROUP visits BY url ; 5 visitCounts = FOREACH gVisits GENERATE 6 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 GENERATE 14 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
  • 28. Компиляция в MapReduce О.В. Сухорослов () 09 MapReduce 20.04.2012 28 / 63
  • 29. User Defined Functions2 Позволяют реализовать произвольную логику обработки данных, а также поддержку чтения/записи различных форматов Поддерживаемые языки реализации UDF Java Наболее широкие возможности и максимальная эффективность Python Нет поддержки load/store JavaScript Experimental 2 http://pig.apache.org/docs/r0.9.2/udf.html О.В. Сухорослов () 09 MapReduce 20.04.2012 29 / 63
  • 30. Более сложные примеры Pig Tutorial3 Анализ логов поисковой системы Определение популярных поисковых запросов по часам дня Сравнение популярности поисковых запросов за два временных периода 3 http://pig.apache.org/docs/r0.9.2/start.html#tutorial О.В. Сухорослов () 09 MapReduce 20.04.2012 30 / 63
  • 31. Запуск Pig на учебном кластере Установлен Pig 0.9.2 Интерактивная оболочка Grunt 1 $ pig -- help // Help 2 $ pig -x local // Local mode 3 $ pig // MapReduce mode ( - x mapreduce ) Скрипт-файл 1 $ pig -x local myscript . pig 2 $ pig myscript . pig 3 4 // Will replace ’ $pname ’ with ’ pvalue ’ in script 5 $ pig - param pname = pvalue myscript . pig О.В. Сухорослов () 09 MapReduce 20.04.2012 31 / 63
  • 32. Pig и домашние задания Pig нельзя использовать при решении ДЗ №3 Pig можно будет использовать при решении ДЗ №4 О.В. Сухорослов () 09 MapReduce 20.04.2012 32 / 63
  • 33. Другие инструменты Hive4 , HiveQL Cascading5 , PyCascading6 Cascalog7 Crunch8 Oozie9 Azkaban10 DataFu11 Apache Mahout12 4 http://hive.apache.org/ 5 http://www.cascading.org/ 6 https://github.com/twitter/pycascading 7 https://github.com/nathanmarz/cascalog 8 https://github.com/cloudera/crunch 9 http://rvs.github.com/oozie/index.html 10 http://sna-projects.com/azkaban/ 11 http://sna-projects.com/datafu/ 12 http://mahout.apache.org/ О.В. Сухорослов () 09 MapReduce 20.04.2012 33 / 63
  • 34. Apache Mahout Масштабируемые реализации алгоритмов машинного обучения Для Hadoop MapReduce и не только Алгоритмы13 Classification Clustering Pattern Mining Recommenders / Collaborative Filtering ... 13 https://cwiki.apache.org/confluence/display/MAHOUT/Algorithms О.В. Сухорослов () 09 MapReduce 20.04.2012 34 / 63
  • 35. Задачи на графах и MapReduce О.В. Сухорослов () 09 MapReduce 20.04.2012 35 / 63
  • 36. Классы задач Поиск и планирование путей Выделение компонент Нахождение минимального остовного дерева Паросочетания в двудольном графе Максимальный поток в сети Поиск “особых” вершин О.В. Сухорослов () 09 MapReduce 20.04.2012 36 / 63
  • 37. Большие графы Ссылочный граф Web Миллиарды вершин Социальные сети Сотни миллионов вершин Часто разреженные Число ребер порядка числа вершин О.В. Сухорослов () 09 MapReduce 20.04.2012 37 / 63
  • 38. Представления графа Матрица смежности Список смежных вершин Эффективнее для разреженных графов О.В. Сухорослов () 09 MapReduce 20.04.2012 38 / 63
  • 39. Поиск кратчайших путей из заданной вершины (single-source shortest path problem) Последовательный алгоритм О.В. Сухорослов () 09 MapReduce 20.04.2012 39 / 63
  • 40. Пример О.В. Сухорослов () 09 MapReduce 20.04.2012 40 / 63
  • 41. Параллельный алгоритм? О.В. Сухорослов () 09 MapReduce 20.04.2012 41 / 63
  • 42. Параллельный алгоритм Применение поиска в ширину для определения кратчайших путей 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
  • 43. Итерация Структура графа передается между map и reduce Результат итерации используется в качестве входа следующей итерации О.В. Сухорослов () 09 MapReduce 20.04.2012 43 / 63
  • 44. Остановка Продолжаем итерации до тех пор, пока не останется вершин с d =∞ Делаем проверку в Reduce и записываем в счетчик Сколько итераций потребуется? О.В. Сухорослов () 09 MapReduce 20.04.2012 44 / 63
  • 45. Ребра с произвольными весами В списках смежных вершин требуется дополнительно хранить веса ребер w В Map вместо d + 1 возвращается d + w Условие остановки итераций? О.В. Сухорослов () 09 MapReduce 20.04.2012 45 / 63
  • 46. Остановка Остановить итерации следует тогда, когда расстояния перестанут изменяться Что если в графе есть ребра с отрицательным весом? О.В. Сухорослов () 09 MapReduce 20.04.2012 46 / 63
  • 47. Сравнение с последовательным алгоритмом Алгоритм Дейкстры эффективнее в плане общего количества операций использует глобальную структуру данных в памяти плохо распараллеливается Алгоритм на MapReduce выполняет бОльшее количество операций хорошо распараллеливается хорошо масштабируется (для разреженных графов) О.В. Сухорослов () 09 MapReduce 20.04.2012 47 / 63
  • 48. MapReduce-алгоритмы на графах Структура графа представлена с помощью списков смежных вершин Помимо этого с каждой вершиной и ребром может быть связаны некоторые данные Map вычисления над каждой вершиной в отдельности, с использованием локальных данных и исходящих ребер результаты вычислений оформляются в виде пар (соседняя_вершина, значение) Reduce: аггрегация всех промежуточных значений, поступивших для заданной вершины Структура графа передается между map и reduce Обычно итерационный процесс Основная программа осуществляет запуск MR-итераций и проверяет условие остановки О.В. Сухорослов () 09 MapReduce 20.04.2012 48 / 63
  • 49. PageRank Определение рейтинга страницы через количество ведущих на нее ссылок и рейтинги ссылающихся страниц (Брин, 1998) О.В. Сухорослов () 09 MapReduce 20.04.2012 49 / 63
  • 50. Модель случайного блуждания по Web-графу Стартуем на случайной странице С вероятностью α (около 0,15) переходим на случайную страницу С вероятностью (1 − α) переходим по одной из ссылок на странице PageRank предельная вероятность оказаться на заданной странице распределение вероятности по всем страницам О.В. Сухорослов () 09 MapReduce 20.04.2012 50 / 63
  • 51. Вычисление PageRank Рекурсивная формула Итеративный алгоритм Вычисляем новые значения PR по формуле, используя значения с предыдущей итерации Достаточно быстро сходится Для графа с 322M ребер потребовалось 52 итерации О.В. Сухорослов () 09 MapReduce 20.04.2012 51 / 63
  • 52. Пример О.В. Сухорослов () 09 MapReduce 20.04.2012 52 / 63
  • 53. Упрощающие предположения α = 0 - исключим случайные телепортации В графе отсутствуют вершины без исходящих ребер О.В. Сухорослов () 09 MapReduce 20.04.2012 53 / 63
  • 54. Итерация на MapReduce О.В. Сухорослов () 09 MapReduce 20.04.2012 54 / 63
  • 55. Итерация на MapReduce О.В. Сухорослов () 09 MapReduce 20.04.2012 55 / 63
  • 56. Вершины без исходящих ребер Проблема Нарушается постоянство суммарного значения PageRank Решение Равномерное распределение “пропавшей” массы PageRank между всеми вершинами графа Реализация на MapReduce Подсчет “пропавшего” PageRank Счетчик Промежуточные значения со специальным ключом Запись промежуточной суммы каждой map-задачи в сторонний файл Распределение “пропавшего” PageRank между всеми вершинами Дополнительное MapReduce-задание Внутри map вычисляем окончательное значение PageRank с учетом дополнительной массы m и фактора α: О.В. Сухорослов () 09 MapReduce 20.04.2012 56 / 63
  • 57. Остановка Значения PR стабилизировались Фиксированное число итераций Ранжирование страниц стабилизировалось О.В. Сухорослов () 09 MapReduce 20.04.2012 57 / 63
  • 58. Оптимизация MapReduce-алгоритмов на графах14 Использование in-mapper combining Повышение эффективности локальной аггрегации путем предварительного разбиения графа на компоненты с сильной внутренней связностью Сортировка пользователей социальной сети по местоположению Сортировка страниц по доменным именам Отказ от передачи по сети (shuffle) структуры графа Передаем только “сообщения” между вершинами графа Reducer загружает соотв. часть графа из файла в HDFS 14 http://www.umiacs.umd.edu/ jimmylin/publications/Lin_Schatz_MLG2010.pdf О.В. Сухорослов () 09 MapReduce 20.04.2012 58 / 63
  • 59. Другой подход? О.В. Сухорослов () 09 MapReduce 20.04.2012 59 / 63
  • 60. Ограничения MapReduce и альтернативные модели О.В. Сухорослов () 09 MapReduce 20.04.2012 60 / 63
  • 61. Ограничения MapReduce Глобальная синхронизация только между map и reduce Задачи, требующие наличия общего глобального состояния во время вычислений Синхронизация между заданиями через чтение/запись в ФС Итеративные алгоритмы Batch-обработка больших порций данных Online-обработка данных в потоковом режиме Инкрементальное добавление небольших порций Real-time запросы О.В. Сухорослов () 09 MapReduce 20.04.2012 61 / 63
  • 62. Предлагаемые расширения и надстройки Map-Reduce-Merge SQL engine on top of MapReduce Tenzing (Google, 2011) Parallel Collections FlumeJava (Google, 2010) Iterative HaLoop Twister Hadoop Online Online aggregation Stream processing Spark Iterative algorithms Interactive data mining О.В. Сухорослов () 09 MapReduce 20.04.2012 62 / 63
  • 63. Другие модели и архитектуры Dataflow Dryad/DryadLINQ (Microsoft), Nephele/PACT, SCOPE Real-Time / Stream Processing S4 (Yahoo!), Cloudscale (C++, MPI), Storm (Twitter) Graph Processing Pregel (Google, 2009), Giraph, Golden Orb GraphLab Partitioned In-memory Table Piccolo Incremental Processing Percolator (Google, 2010) Interactive Analysis, ad hoc queries Dremel (Google, 2010) О.В. Сухорослов () 09 MapReduce 20.04.2012 63 / 63