SlideShare a Scribd company logo
Методы распределенной обработки
больших объемов данных в Hadoop
Москва 2014
Лекция 6: MapReduce в Hadoop, графы
План
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Представление графов и связанные задачи
• Параллельный breadth-first search
• PageRank
• Не только PageRank: другие алгоритмы
• Оптимизация алгоритмов на графах
Граф как структура данных
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• G = (V,E), где
– V представляет собой множество вершин (nodes)
– E представляет собой множество ребер (edges/links)
– Ребра и вершины могут содержать дополнительную
информацию
• Различные типы графов
– Направленные и ненаправленные
– С циклами и без
• Графы есть практически везде
– Структура компьютеров и серверов Интернет
– Сайты/страницы и ссылки в Web
– Социальные сети
– Структура дорог/жд/метро и т.д.
Задачи и проблемы на графах
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Поиск кратчайшего пути
– Роутинг траффика
– Навигация маршрута
• Поиск Minimum Spanning Tree
– Телекоммуникационные компании
• Поиск максимального потока (Max Flow)
– Структура компьютеров и серверов Интернет
• Bipartite matching
– Соискатели и работодатели
• Поиск “особенных” вершин и/или групп вершин графа
– Коммьюнити пользователей
• PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Графы и MapReduce
• Большой класс алгоритмов на графах
включает
– Выполнение вычислений на каждой ноде
– Обход графа
• Ключевые вопросы
– Как представить граф на MapReduce?
– Как обходить граф на MapReduce?
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Представление графов
• G = (V, E)
– Матрица смежности
– Списки смежности
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Матрица смежности
• Граф представляется как матрица M размером n x n
– n = |V|
– Mij = 1 означает наличие ребра между i и j
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
1 2 3 4
1 0 1 0 1
2 1 0 1 1
3 1 0 0 0
4 1 0 1 0
1
2
3
4
Матрица смежности
• Плюсы
– Удобство математических вычислений
– Перемещение по строкам и колонкам соот-ет
переходу по входящим и исходящим ссылкам
• Минусы
– Матрица разреженная, множество лишних
нулей
– Расходуется много лишнего места
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Списки смежности
• Берем матрицу смежности и убираем все
нули
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
1 2 3 4
1 0 1 0 1
2 1 0 1 1
3 1 0 0 0
4 1 0 1 0
1: 2, 4
2: 1, 3, 4
3: 1
4: 1, 3
Списки смежности
• Плюсы
– Намного более компактная реализация
– Легко найти все исходящие ссылки для ноды
• Минусы
– Намного более сложнее подсчитать входящие
ссылки
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Поиск кратчайшего пути
• Задача
– Найти кратчайший путь от исходной вершины
до заданной (или несколько заданных)
• Также, кратчайший может означать с наименьшим
общем весом всех ребер
– Single-Source Shortest Path
• Алгоритм Дейкстры
• MapReduce: параллельный поиск в ширину
(Breadth-First Search)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Алгоритм Дейкстры (пример)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
0
∞
∞
∞
∞
10
5
2 3
2
1
9
7
4 6
Алгоритм Дейкстры (пример)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
0
10
5
∞
∞
10
5
2 3
2
1
9
7
4 6
Алгоритм Дейкстры (пример)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
0
8
5
14
7
10
5
2 3
2
1
9
7
4 6
Алгоритм Дейкстры (пример)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
0
8
5
13
7
10
5
2 3
2
1
9
7
4 6
Алгоритм Дейкстры (пример)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
0
8
5
9
7
1
10
5
2 3
2
1
9
7
4 6
Алгоритм Дейкстры (пример)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
0
8
5
9
7
10
5
2 3
2
1
9
7
4 6
Алгоритм Дейкстры
ЛЕКЦИЯ 5: MAPREDUCE В HADOOP, АЛГОРИТМЫ
Dijkstra(G,w, s)
d[s] ← 0
for all vertex v ∈ V do
d[v] ← ∞
Q ← {V }
while Q = ∅ do
u ←ExtractMin(Q)
for all vertex v ∈ u.AdjacencyList do
if d[v] > d[u] + w(u, v) then
d[v] ← d[u] + w(u, v)
Поиск кратчайшего пути
• Рассмотрим простой случай, когда вес всех ребер одинаков
• Решение проблемы можно решить по индукции
• Интуитивно:
– Определим: в вершину b можно попасть из вершины a только
если b есть в списке вершин a
DISTANCETO(s) = 0
– Для всех вершин p, достижимых из s
DISTANCETO(p) = 1
– Для всех вершин n, достижимых из других множеств M
DISTANCETO(n) = 1 + min(DISTANCETO(m), m ∈ M)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
s
m3
m2
m1
n
…
…
…
d1
d2
d3
Параллельный BFS
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
n0
n3
n2
n1 n7
n6
n5
n4
n9
n8
BFS: алгоритм
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Представление данных:
– Key: вершина n
– Value: d (расстояние от начала), adjacency list (вершины, доступные
из n)
– Инициализация: для всех вершин, кроме начальной, d = ∞
• Mapper:
– ∀m ∈ adjacency list: emit (m, d + 1)
• Sort/Shuffle
– Сгруппировать расстояния по достижимым вершинам
• Reducer:
– Выбрать путь с минимальным расстоянием для каждой достижимой
вершины
– Дополнительные проверки для отслеживания актуального пути
BFS: итерации
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Каждая итерация задачи MapReduce смещает
границу продвижения по графу (frontier) на
один “hop”
– Последующие операции включают все больше и
больше посещенных вершин, т.к. граница (frontier)
расширяется
– Множество итераций требуется для обхода всего
графа
• Сохранение структуры графа
– Проблема: что делать со списком смежных вершин
(adjacency list)?
– Решение: Mapper также пишет (n, adjacency list)
BFS: псевдокод
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
class Mapper
method Map(nid n, node N)
d ← N.Distance
Emit(nid n,N) // Pass along graph structure
for all nodeid m ∈ N.AdjacencyList do
Emit(nid m, d + 1) // Emit distances to reachable nodes
class Reducer
method Reduce(nid m, [d1, d2, . . .])
dmin←∞
M ← ∅
for all d ∈ counts [d1, d2, . . .] do
if IsNode(d) then
M ← d // Recover graph structure
else if d < dmin then Look for shorter distance
dmin ← d
M.Distance← dmin // Update shortest distance
Emit(nid m, node M)
BFS: критерий завершения
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Как много итераций нужно для завершения
параллельного BFS?
• Когда первый раз посетили искомую вершину, значит
найден самый короткий путь
• Ответ на вопрос
– Равно диаметру графа (наиболее удаленные друг от друга
вершины)
• Правило шести рукопожатий?
• Практическая реализация
– Внешняя программа-драйвер для проверки оставшихся
вершин с дистанцией ∞
– Можно использовать счетчики из Hadoop MapReduce
BFS vs Дейкстра
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Алгоритм Дейкстры более эффективен
– На каждом шаге используются вершины только из
пути с минимальным весом
– Нужна дополнительная структура данных (priority
queue)
• MapReduce обходит все пути графа параллельно
– Много лишней работы (brute-force подход)
– Полезная часть выполняется только на текущей
границе обхода
• Можно ли использовать MapReduce более
эффективно?
BFS: Weighted Edges
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Добавим положительный вес каждому ребру
– Почему вес ребра не может быть
отрицательным?
• Простая доработка: добавим вес w для
каждого ребра в список смежных вершин
– В mapper, emit (m, d + wp) вместо (m, d + 1) для
каждой вершины m
• И все?
BFS Weighted: критерий завершения
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Как много итераций нужно для завершения
параллельного BFS (взвешенный граф)?
• Когда первый раз посетили искомую
вершину, значит найден самый короткий
путь
• И это неверно!
BFS Weighted: сложности
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
s
p
q
r
search frontier
10
n1
n2
n3
n4
n5
n6 n7
n8
n9
1
1
1
1
1
1
1
1
BFS Weighted: критерий завершения
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Как много итераций нужно для завершения
параллельного BFS (взвешенный граф)?
• В худшем случае: N – 1
• В реальном мире ~= диаметру графа
• Практическая реализация
– Итерации завершаются, когда минимальный
путь у каждой вершины больше не меняется
– Для этого можно также использовать счетчики в
MapReduce
Графы и MapReduce
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Большое кол-во алгоритмов на графах включает в себя:
– Выполнение вычислений, зависимых от фич ребер и вершины,
на каждой вершине
– Вычисления, основанные на обходе графа
• Основной рецепт:
– Представлять графы в виде списка смежности
– Производить локальные вычисления на маппере
– Передавать промежуточные вычисления по исходящих
ребрам, где ключом будет целевая вершина
– Выполнять агрегацию на редьюсере по данных из входящих
вершин
– Повторять итерации до выполнения критерия сходимости,
который контролируется внешним драйвером
– Передавать структуру графа между итерациями
PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Случайное блуждание по Web
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Модель блуждающего веб-серфера
– Пользователь начинает серфинг на случайной веб-странице
– Пользователь произвольно кликает по ссылкам, тем самым
перемещаясь от страницы к странице
• PageRank
– Характеризует кол-во времени, которое пользователь провел
на данной странице
– Математически – это распределение вероятностей посещения
страниц
• PageRank определяет понятие важности страницы
– Соответствует человеческой интуиции?
– Одна из тысячи фич, которая используется в веб-поиске
PageRank, определение
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Дана страница x, на которую указывают ссылки t1…tn, где
– C(t) степень out-degree для t
– α вероятность случайного перемещения (random jump)
– N общее число вершин в графе
X
t1
t2
tn
…
Вычисление PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Свойства PageRank’а
– Может быть рассчитан итеративно
– Локальный эффект на каждой итерации
• Набросок алгоритма
– Начать с некоторыми заданными значения PRi
– Каждая страница распределяет PRi “кредит” всем
страниц, на которые с нее есть ссылки
– Каждая страница добавляет весь полученный
“кредит” от страниц, которые на нее ссылаются, для
подсчета PRi+1
– Продолжить итерации пока значения не сойдутся
Упрощения для PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Для начала рассмотрим простой случай
– Нет фактора случайного перехода (random jump)
– Нет “подвисших” вершин
• Затем, добавим сложностей
– Зачем нужен случайный переход?
– Откуда появляются “подвисшие” вершины?
Пример расчета PageRank (1)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
n1 (0.2)
n4 (0.2)
n3 (0.2)
n5 (0.2)
n2 (0.2)
0.1
0.1
0.2 0.2
0.1
0.1
0.066 0.066
0.066
n1 (0.066)
n4 (0.3)
n3 (0.166)
n5 (0.3)
n2 (0.166)Iteration 1
Пример расчета PageRank (2)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
n1 (0.066)
n4 (0.3)
n3 (0.166)
n5 (0.3)
n2 (0.166)
0.033
0.033
0.3 0.166
0.083
0.083
0.1 0.1
0.1
n1 (0.1)
n4 (0.2)
n3 (0.183)
n5 (0.383)
n2 (0.133)Iteration 2
PageRank на MapReduce
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
n5 [n1, n2, n3]n1 [n2, n4] n2 [n3, n5] n3 [n4] n4 [n5]
n2 n4 n3 n5 n1 n2 n3n4 n5
n2 n4n3 n5n1 n2 n3 n4 n5
n5 [n1, n2, n3]n1 [n2, n4] n2 [n3, n5] n3 [n4] n4 [n5]
Map
Reduce
PageRank: псевдокод
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
class Mapper
method Map(nid n, node N)
p ← N.PageRank/|N.AdjacencyList|
Emit(nid n,N) // Pass along graph structure
for all nodeid m ∈ N.AdjacencyList do
Emit(nid m, p) // Pass PageRank mass to neighbors
class Reducer
method Reduce(nid m, [p1, p2, . . .])
M ← ∅
for all p ∈ counts [p1, p2, . . .] do
if IsNode(p) then
M ← p // Recover graph structure
else
s ← s + p // Sum incoming PageRank contributions
M.PageRank← s
Emit(nid m, node M)
Полный PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Две дополнительные сложности
– Как правильно обрабатывать “подвешенные” вершины?
– Как правильно определить фактор случайного перехода (random
jump)?
• Решение :
– Второй проход для перераспределения “оставшегося” PageRank и
учитывания фактор случайного перехода
– p – значение PageRank полученное “до”, p' – обновленное значение
PageRank
– N - число вершин графа
– m – “оставшийся” PageRank
• Дополнительная оптимизация: сделать за один проход!
Сходимость PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Альтернативные критерии сходимости
– Продолжать итерации пока значения PageRank не
перестанут изменяться
– Продолжать итерации пока отношение PageRank не
перестанут изменяться
– Фиксированное число итераций
• Сходимость для Web-графа?
– Это так такой простой вопрос
• Аккуратней со ссылочным спамом:
– Ссылочные фермы
– Ловушки для краулеров (Spider traps)
– …
Кроме PageRank…
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Вариации PageRank
– Взвешенные ребра
– Персонализированный PageRank
• Вариации на тему “graph random walks”
– Hubs и authorities (HITS)
– SALSA
Приложение PageRank
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Статическая приоритезация для веб-
ранжирования
• Определение “особенных вершин” в сети
• Рекомендация ссылок
• Дополнительная фича в решении какой-либо
задачи machine learning
Другие классы проблем на графах
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Поиск паттерна для подграфа
• Расчет простой статистки для графа
– Распределение степени ребер по вершинам
• Расчет более сложной статистки
– Коэффициенты кластеризации
– Подсчет треугольников
Основные проблемы для алгоритмов
на графах
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Большие разреженные графы
• Топология графов
MapReduce для графов – ложка дегтя
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Многословность Java
• Время запуска таска в Hadoop
• Медленные или зависшие таски
• Бесполезность фазы shuffle для графов
• Проверки на каждой итерации
• Итеративные алгоритмы на MapReduce
неэффективны!
In-Mapper Combining
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Использование комбайнеров
– Выполнять локальную агрегацию на стороне map output
– Минус: промежуточные данные все равно обрабатываются
• Лучше: in-mapper combining
– Сохранять состояние между множеством вызовов map, агргегировать
сообщения в буфер, писать содержимое буфера в конце
– Минус: требуется управление памятью
setup
map
cleanup
buffer
Emit all key-value pairs at once
Улучшение партиционирования
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• По-умолчанию: hash partitioning
– Произвольно присвоить вершину к партиции
• Наблюдение: много графов имеют локальную
структуру
– Напр., коммьюнити в соц.сетях
– Лучшее партиционирование дает больше возможностей
для локальной агрегации
• К сожалению, партиционирование довольно сложно!
– Порой, это проблема курицы и яйца
– Но иногда простые эвристики помогают
– Для веб-графа: использовать партиционирование на
основе домена от URL
Schimmy Design Pattern
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Основная реализация содержит два набора данных:
– Messages (актуальные вычисления)
– Graph structure (структура обрабатываемого графа)
• Schimmy: разделить два набора данных, выполнять
shuffle только для messages
– Основная идея: выполнять merge join для graph structure
и messages
S T
обе части сортированы по join key
S1 T1 S2 T2 S3 T3
обе части консистентно партиционированы и сортированы по join key
Используем Schimmy
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
S1 T1
• Schimmy = на редьюсерах выполняется параллельный
merge join между graph structure и messages
– Консистентное партиционирование между входным и
промежуточными данными (intermediate data)
– Mappers пишут только messages (актуальные вычисления)
– Reducers читают graph structure напрямую из HDFS
S2 T2 S3 T3
ReducerReducerReducer
intermediate data
(messages)
intermediate data
(messages)
intermediate data
(messages)
from HDFS
(graph structure)
from HDFS
(graph structure)
from HDFS
(graph structure)
Эксперимент
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
• Cluster setup:
– 10 workers, each 2 cores (3.2 GHz Xeon), 4GB RAM, 367 GB disk
– Hadoop 0.20.0 on RHELS 5.3
• Dataset:
– Первый сегмент английского текста их коллекции ClueWeb09
– 50.2m web pages (1.53 TB uncompressed, 247 GB compressed)
– Extracted webgraph: 1.4 Млрд ссылок, 7.0 GB
– Dataset сортирован в порядке краулинга
• Setup:
– Измерялось время выполнения по каждой итерации (5
итераций)
– 100 партиций
Результаты
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
“Best Practices”
Результаты
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
+18%
1.4b
674m
Результаты
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
+18%
-15%
1.4b
674m
Результаты
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
+18%
-15%
-60%
1.4b
674m
86m
Результаты
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
+18%
-15%
-60%
-69%
1.4b
674m
86m
Ресурсы
Data-Intensive Text Processing with MapReduce
Jimmy Lin and Chris Dyer (Authors) (April, 2010)
Chapter5: Graph Algorithms
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
Вопросы?
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ

More Related Content

What's hot

Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)
Andrew Panfilov
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce
Roman Brovko
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
Vasil Remeniuk
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
Vlad Orlov
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
Technopark
 
06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming
Roman Brovko
 
алексей романенко
алексей романенкоалексей романенко
алексей романенкоkuchinskaya
 
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkDF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
MoscowDataFest
 
Uniting Data JavaOne2013
Uniting Data JavaOne2013Uniting Data JavaOne2013
Uniting Data JavaOne2013
Dmitri Shiryaev
 
О.В.Сухорослов "MapReduce: приемы и стратегии реализации"
О.В.Сухорослов "MapReduce: приемы и стратегии реализации"О.В.Сухорослов "MapReduce: приемы и стратегии реализации"
О.В.Сухорослов "MapReduce: приемы и стратегии реализации"
Yandex
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
Roman Brovko
 
Apache spark
Apache sparkApache spark
Apache spark
Anton Anokhin
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахПавел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Yandex
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark
Roman Brovko
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
Roman Brovko
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
Anastasia Lubennikova
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Alexey Paznikov
 
О.В. Сухорослов "Разбор ДЗ №3,4"
О.В. Сухорослов "Разбор ДЗ №3,4"О.В. Сухорослов "Разбор ДЗ №3,4"
О.В. Сухорослов "Разбор ДЗ №3,4"
Yandex
 
Hacking PostgreSQL. Разделяемая память и блокировки.
Hacking PostgreSQL. Разделяемая память и блокировки.Hacking PostgreSQL. Разделяемая память и блокировки.
Hacking PostgreSQL. Разделяемая память и блокировки.
Anastasia Lubennikova
 

What's hot (20)

Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)
 
08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce
 
Опыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событияхОпыт использования Spark, Основано на реальных событиях
Опыт использования Spark, Основано на реальных событиях
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
 
Лекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduceЛекция 1. Введение в Big Data и MapReduce
Лекция 1. Введение в Big Data и MapReduce
 
06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming06 - Hadoop. Java API и Hadoop Streaming
06 - Hadoop. Java API и Hadoop Streaming
 
алексей романенко
алексей романенкоалексей романенко
алексей романенко
 
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkDF1 - BD - Baranov - Mining Large Datasets with Apache Spark
DF1 - BD - Baranov - Mining Large Datasets with Apache Spark
 
Uniting Data JavaOne2013
Uniting Data JavaOne2013Uniting Data JavaOne2013
Uniting Data JavaOne2013
 
О.В.Сухорослов "MapReduce: приемы и стратегии реализации"
О.В.Сухорослов "MapReduce: приемы и стратегии реализации"О.В.Сухорослов "MapReduce: приемы и стратегии реализации"
О.В.Сухорослов "MapReduce: приемы и стратегии реализации"
 
13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark13 - Hadoop. Парадигма Spark
13 - Hadoop. Парадигма Spark
 
Apache spark
Apache sparkApache spark
Apache spark
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахПавел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark
 
09 - Hadoop. Pig
09 - Hadoop. Pig09 - Hadoop. Pig
09 - Hadoop. Pig
 
Hacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кодаHacking PostgreSQL. Обзор исходного кода
Hacking PostgreSQL. Обзор исходного кода
 
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыЛекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обмены
 
О.В. Сухорослов "Разбор ДЗ №3,4"
О.В. Сухорослов "Разбор ДЗ №3,4"О.В. Сухорослов "Разбор ДЗ №3,4"
О.В. Сухорослов "Разбор ДЗ №3,4"
 
Hacking PostgreSQL. Разделяемая память и блокировки.
Hacking PostgreSQL. Разделяемая память и блокировки.Hacking PostgreSQL. Разделяемая память и блокировки.
Hacking PostgreSQL. Разделяемая память и блокировки.
 

Viewers also liked

Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
 

Viewers also liked (6)

Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 

Similar to Лекция 6. MapReduce в Hadoop (графы)

А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...it-people
 
Big data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphsBig data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphs
Alexey Zinoviev
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
MATLAB
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шагиAnton Gorokhov
 
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...rit2011
 
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
Alexey Voropaev
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
mikhaelsmirnov
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
Fwdays
 
How to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life longHow to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life long
Timur Shemsedinov
 
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
it-people
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
Омские ИТ-субботники
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Alexey Zinoviev
 
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEКак сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEАртём Кудзев
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...it-people
 
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest
 
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
2ГИС Технологии
 
Apache Hadoop
Apache HadoopApache Hadoop
Apache Hadoop
Ivan Blinkov
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)Andrew Panfilov
 

Similar to Лекция 6. MapReduce в Hadoop (графы) (20)

А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
А. Зиновьев "Big data algorithms and data structures for large scale graphs",...
 
Big data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphsBig data algorithms and data structures for large scale graphs
Big data algorithms and data structures for large scale graphs
 
Map reduce
Map reduceMap reduce
Map reduce
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шаги
 
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
Hadoop streaming простой путь к масштабированию приложений обработки данных. ...
 
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...
 
DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.DBD lection 4. Big Data, NoSQL. In Russian.
DBD lection 4. Big Data, NoSQL. In Russian.
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
How to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life longHow to get knowledge and improve it all your professional life long
How to get knowledge and improve it all your professional life long
 
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
 
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
2014-01-04 02 Алексей Зиновьев. Выбор NoSQL базы данных
 
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
 
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEКак сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
 
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
DUMP-2013 Наука и жизнь - Использование Hadoop в машинном обучении - Созыкин ...
 
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
 
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
 
Apache Hadoop
Apache HadoopApache Hadoop
Apache Hadoop
 
Hadoop > cascading -> cascalog (very short)
Hadoop  > cascading -> cascalog (very short)Hadoop  > cascading -> cascalog (very short)
Hadoop > cascading -> cascalog (very short)
 

More from Technopark

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

More from Technopark (18)

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

Лекция 6. MapReduce в Hadoop (графы)

  • 1. Методы распределенной обработки больших объемов данных в Hadoop Москва 2014 Лекция 6: MapReduce в Hadoop, графы
  • 2. План ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Представление графов и связанные задачи • Параллельный breadth-first search • PageRank • Не только PageRank: другие алгоритмы • Оптимизация алгоритмов на графах
  • 3. Граф как структура данных ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • G = (V,E), где – V представляет собой множество вершин (nodes) – E представляет собой множество ребер (edges/links) – Ребра и вершины могут содержать дополнительную информацию • Различные типы графов – Направленные и ненаправленные – С циклами и без • Графы есть практически везде – Структура компьютеров и серверов Интернет – Сайты/страницы и ссылки в Web – Социальные сети – Структура дорог/жд/метро и т.д.
  • 4. Задачи и проблемы на графах ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Поиск кратчайшего пути – Роутинг траффика – Навигация маршрута • Поиск Minimum Spanning Tree – Телекоммуникационные компании • Поиск максимального потока (Max Flow) – Структура компьютеров и серверов Интернет • Bipartite matching – Соискатели и работодатели • Поиск “особенных” вершин и/или групп вершин графа – Коммьюнити пользователей • PageRank
  • 5. ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 6. Графы и MapReduce • Большой класс алгоритмов на графах включает – Выполнение вычислений на каждой ноде – Обход графа • Ключевые вопросы – Как представить граф на MapReduce? – Как обходить граф на MapReduce? ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 7. Представление графов • G = (V, E) – Матрица смежности – Списки смежности ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 8. Матрица смежности • Граф представляется как матрица M размером n x n – n = |V| – Mij = 1 означает наличие ребра между i и j ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 1 2 3 4 1 0 1 0 1 2 1 0 1 1 3 1 0 0 0 4 1 0 1 0 1 2 3 4
  • 9. Матрица смежности • Плюсы – Удобство математических вычислений – Перемещение по строкам и колонкам соот-ет переходу по входящим и исходящим ссылкам • Минусы – Матрица разреженная, множество лишних нулей – Расходуется много лишнего места ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 10. Списки смежности • Берем матрицу смежности и убираем все нули ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 1 2 3 4 1 0 1 0 1 2 1 0 1 1 3 1 0 0 0 4 1 0 1 0 1: 2, 4 2: 1, 3, 4 3: 1 4: 1, 3
  • 11. Списки смежности • Плюсы – Намного более компактная реализация – Легко найти все исходящие ссылки для ноды • Минусы – Намного более сложнее подсчитать входящие ссылки ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 12. Поиск кратчайшего пути • Задача – Найти кратчайший путь от исходной вершины до заданной (или несколько заданных) • Также, кратчайший может означать с наименьшим общем весом всех ребер – Single-Source Shortest Path • Алгоритм Дейкстры • MapReduce: параллельный поиск в ширину (Breadth-First Search) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 13. Алгоритм Дейкстры (пример) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 0 ∞ ∞ ∞ ∞ 10 5 2 3 2 1 9 7 4 6
  • 14. Алгоритм Дейкстры (пример) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 0 10 5 ∞ ∞ 10 5 2 3 2 1 9 7 4 6
  • 15. Алгоритм Дейкстры (пример) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 0 8 5 14 7 10 5 2 3 2 1 9 7 4 6
  • 16. Алгоритм Дейкстры (пример) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 0 8 5 13 7 10 5 2 3 2 1 9 7 4 6
  • 17. Алгоритм Дейкстры (пример) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 0 8 5 9 7 1 10 5 2 3 2 1 9 7 4 6
  • 18. Алгоритм Дейкстры (пример) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ 0 8 5 9 7 10 5 2 3 2 1 9 7 4 6
  • 19. Алгоритм Дейкстры ЛЕКЦИЯ 5: MAPREDUCE В HADOOP, АЛГОРИТМЫ Dijkstra(G,w, s) d[s] ← 0 for all vertex v ∈ V do d[v] ← ∞ Q ← {V } while Q = ∅ do u ←ExtractMin(Q) for all vertex v ∈ u.AdjacencyList do if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v)
  • 20. Поиск кратчайшего пути • Рассмотрим простой случай, когда вес всех ребер одинаков • Решение проблемы можно решить по индукции • Интуитивно: – Определим: в вершину b можно попасть из вершины a только если b есть в списке вершин a DISTANCETO(s) = 0 – Для всех вершин p, достижимых из s DISTANCETO(p) = 1 – Для всех вершин n, достижимых из других множеств M DISTANCETO(n) = 1 + min(DISTANCETO(m), m ∈ M) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ s m3 m2 m1 n … … … d1 d2 d3
  • 21. Параллельный BFS ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ n0 n3 n2 n1 n7 n6 n5 n4 n9 n8
  • 22. BFS: алгоритм ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Представление данных: – Key: вершина n – Value: d (расстояние от начала), adjacency list (вершины, доступные из n) – Инициализация: для всех вершин, кроме начальной, d = ∞ • Mapper: – ∀m ∈ adjacency list: emit (m, d + 1) • Sort/Shuffle – Сгруппировать расстояния по достижимым вершинам • Reducer: – Выбрать путь с минимальным расстоянием для каждой достижимой вершины – Дополнительные проверки для отслеживания актуального пути
  • 23. BFS: итерации ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Каждая итерация задачи MapReduce смещает границу продвижения по графу (frontier) на один “hop” – Последующие операции включают все больше и больше посещенных вершин, т.к. граница (frontier) расширяется – Множество итераций требуется для обхода всего графа • Сохранение структуры графа – Проблема: что делать со списком смежных вершин (adjacency list)? – Решение: Mapper также пишет (n, adjacency list)
  • 24. BFS: псевдокод ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ class Mapper method Map(nid n, node N) d ← N.Distance Emit(nid n,N) // Pass along graph structure for all nodeid m ∈ N.AdjacencyList do Emit(nid m, d + 1) // Emit distances to reachable nodes class Reducer method Reduce(nid m, [d1, d2, . . .]) dmin←∞ M ← ∅ for all d ∈ counts [d1, d2, . . .] do if IsNode(d) then M ← d // Recover graph structure else if d < dmin then Look for shorter distance dmin ← d M.Distance← dmin // Update shortest distance Emit(nid m, node M)
  • 25. BFS: критерий завершения ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Как много итераций нужно для завершения параллельного BFS? • Когда первый раз посетили искомую вершину, значит найден самый короткий путь • Ответ на вопрос – Равно диаметру графа (наиболее удаленные друг от друга вершины) • Правило шести рукопожатий? • Практическая реализация – Внешняя программа-драйвер для проверки оставшихся вершин с дистанцией ∞ – Можно использовать счетчики из Hadoop MapReduce
  • 26. BFS vs Дейкстра ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Алгоритм Дейкстры более эффективен – На каждом шаге используются вершины только из пути с минимальным весом – Нужна дополнительная структура данных (priority queue) • MapReduce обходит все пути графа параллельно – Много лишней работы (brute-force подход) – Полезная часть выполняется только на текущей границе обхода • Можно ли использовать MapReduce более эффективно?
  • 27. BFS: Weighted Edges ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Добавим положительный вес каждому ребру – Почему вес ребра не может быть отрицательным? • Простая доработка: добавим вес w для каждого ребра в список смежных вершин – В mapper, emit (m, d + wp) вместо (m, d + 1) для каждой вершины m • И все?
  • 28. BFS Weighted: критерий завершения ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Как много итераций нужно для завершения параллельного BFS (взвешенный граф)? • Когда первый раз посетили искомую вершину, значит найден самый короткий путь • И это неверно!
  • 29. BFS Weighted: сложности ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ s p q r search frontier 10 n1 n2 n3 n4 n5 n6 n7 n8 n9 1 1 1 1 1 1 1 1
  • 30. BFS Weighted: критерий завершения ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Как много итераций нужно для завершения параллельного BFS (взвешенный граф)? • В худшем случае: N – 1 • В реальном мире ~= диаметру графа • Практическая реализация – Итерации завершаются, когда минимальный путь у каждой вершины больше не меняется – Для этого можно также использовать счетчики в MapReduce
  • 31. Графы и MapReduce ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Большое кол-во алгоритмов на графах включает в себя: – Выполнение вычислений, зависимых от фич ребер и вершины, на каждой вершине – Вычисления, основанные на обходе графа • Основной рецепт: – Представлять графы в виде списка смежности – Производить локальные вычисления на маппере – Передавать промежуточные вычисления по исходящих ребрам, где ключом будет целевая вершина – Выполнять агрегацию на редьюсере по данных из входящих вершин – Повторять итерации до выполнения критерия сходимости, который контролируется внешним драйвером – Передавать структуру графа между итерациями
  • 32. PageRank ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
  • 33. Случайное блуждание по Web ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Модель блуждающего веб-серфера – Пользователь начинает серфинг на случайной веб-странице – Пользователь произвольно кликает по ссылкам, тем самым перемещаясь от страницы к странице • PageRank – Характеризует кол-во времени, которое пользователь провел на данной странице – Математически – это распределение вероятностей посещения страниц • PageRank определяет понятие важности страницы – Соответствует человеческой интуиции? – Одна из тысячи фич, которая используется в веб-поиске
  • 34. PageRank, определение ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ Дана страница x, на которую указывают ссылки t1…tn, где – C(t) степень out-degree для t – α вероятность случайного перемещения (random jump) – N общее число вершин в графе X t1 t2 tn …
  • 35. Вычисление PageRank ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Свойства PageRank’а – Может быть рассчитан итеративно – Локальный эффект на каждой итерации • Набросок алгоритма – Начать с некоторыми заданными значения PRi – Каждая страница распределяет PRi “кредит” всем страниц, на которые с нее есть ссылки – Каждая страница добавляет весь полученный “кредит” от страниц, которые на нее ссылаются, для подсчета PRi+1 – Продолжить итерации пока значения не сойдутся
  • 36. Упрощения для PageRank ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Для начала рассмотрим простой случай – Нет фактора случайного перехода (random jump) – Нет “подвисших” вершин • Затем, добавим сложностей – Зачем нужен случайный переход? – Откуда появляются “подвисшие” вершины?
  • 37. Пример расчета PageRank (1) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ n1 (0.2) n4 (0.2) n3 (0.2) n5 (0.2) n2 (0.2) 0.1 0.1 0.2 0.2 0.1 0.1 0.066 0.066 0.066 n1 (0.066) n4 (0.3) n3 (0.166) n5 (0.3) n2 (0.166)Iteration 1
  • 38. Пример расчета PageRank (2) ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ n1 (0.066) n4 (0.3) n3 (0.166) n5 (0.3) n2 (0.166) 0.033 0.033 0.3 0.166 0.083 0.083 0.1 0.1 0.1 n1 (0.1) n4 (0.2) n3 (0.183) n5 (0.383) n2 (0.133)Iteration 2
  • 39. PageRank на MapReduce ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ n5 [n1, n2, n3]n1 [n2, n4] n2 [n3, n5] n3 [n4] n4 [n5] n2 n4 n3 n5 n1 n2 n3n4 n5 n2 n4n3 n5n1 n2 n3 n4 n5 n5 [n1, n2, n3]n1 [n2, n4] n2 [n3, n5] n3 [n4] n4 [n5] Map Reduce
  • 40. PageRank: псевдокод ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ class Mapper method Map(nid n, node N) p ← N.PageRank/|N.AdjacencyList| Emit(nid n,N) // Pass along graph structure for all nodeid m ∈ N.AdjacencyList do Emit(nid m, p) // Pass PageRank mass to neighbors class Reducer method Reduce(nid m, [p1, p2, . . .]) M ← ∅ for all p ∈ counts [p1, p2, . . .] do if IsNode(p) then M ← p // Recover graph structure else s ← s + p // Sum incoming PageRank contributions M.PageRank← s Emit(nid m, node M)
  • 41. Полный PageRank ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Две дополнительные сложности – Как правильно обрабатывать “подвешенные” вершины? – Как правильно определить фактор случайного перехода (random jump)? • Решение : – Второй проход для перераспределения “оставшегося” PageRank и учитывания фактор случайного перехода – p – значение PageRank полученное “до”, p' – обновленное значение PageRank – N - число вершин графа – m – “оставшийся” PageRank • Дополнительная оптимизация: сделать за один проход!
  • 42. Сходимость PageRank ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Альтернативные критерии сходимости – Продолжать итерации пока значения PageRank не перестанут изменяться – Продолжать итерации пока отношение PageRank не перестанут изменяться – Фиксированное число итераций • Сходимость для Web-графа? – Это так такой простой вопрос • Аккуратней со ссылочным спамом: – Ссылочные фермы – Ловушки для краулеров (Spider traps) – …
  • 43. Кроме PageRank… ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Вариации PageRank – Взвешенные ребра – Персонализированный PageRank • Вариации на тему “graph random walks” – Hubs и authorities (HITS) – SALSA
  • 44. Приложение PageRank ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Статическая приоритезация для веб- ранжирования • Определение “особенных вершин” в сети • Рекомендация ссылок • Дополнительная фича в решении какой-либо задачи machine learning
  • 45. Другие классы проблем на графах ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Поиск паттерна для подграфа • Расчет простой статистки для графа – Распределение степени ребер по вершинам • Расчет более сложной статистки – Коэффициенты кластеризации – Подсчет треугольников
  • 46. Основные проблемы для алгоритмов на графах ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Большие разреженные графы • Топология графов
  • 47. MapReduce для графов – ложка дегтя ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Многословность Java • Время запуска таска в Hadoop • Медленные или зависшие таски • Бесполезность фазы shuffle для графов • Проверки на каждой итерации • Итеративные алгоритмы на MapReduce неэффективны!
  • 48. In-Mapper Combining ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Использование комбайнеров – Выполнять локальную агрегацию на стороне map output – Минус: промежуточные данные все равно обрабатываются • Лучше: in-mapper combining – Сохранять состояние между множеством вызовов map, агргегировать сообщения в буфер, писать содержимое буфера в конце – Минус: требуется управление памятью setup map cleanup buffer Emit all key-value pairs at once
  • 49. Улучшение партиционирования ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • По-умолчанию: hash partitioning – Произвольно присвоить вершину к партиции • Наблюдение: много графов имеют локальную структуру – Напр., коммьюнити в соц.сетях – Лучшее партиционирование дает больше возможностей для локальной агрегации • К сожалению, партиционирование довольно сложно! – Порой, это проблема курицы и яйца – Но иногда простые эвристики помогают – Для веб-графа: использовать партиционирование на основе домена от URL
  • 50. Schimmy Design Pattern ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Основная реализация содержит два набора данных: – Messages (актуальные вычисления) – Graph structure (структура обрабатываемого графа) • Schimmy: разделить два набора данных, выполнять shuffle только для messages – Основная идея: выполнять merge join для graph structure и messages S T обе части сортированы по join key S1 T1 S2 T2 S3 T3 обе части консистентно партиционированы и сортированы по join key
  • 51. Используем Schimmy ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ S1 T1 • Schimmy = на редьюсерах выполняется параллельный merge join между graph structure и messages – Консистентное партиционирование между входным и промежуточными данными (intermediate data) – Mappers пишут только messages (актуальные вычисления) – Reducers читают graph structure напрямую из HDFS S2 T2 S3 T3 ReducerReducerReducer intermediate data (messages) intermediate data (messages) intermediate data (messages) from HDFS (graph structure) from HDFS (graph structure) from HDFS (graph structure)
  • 52. Эксперимент ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ • Cluster setup: – 10 workers, each 2 cores (3.2 GHz Xeon), 4GB RAM, 367 GB disk – Hadoop 0.20.0 on RHELS 5.3 • Dataset: – Первый сегмент английского текста их коллекции ClueWeb09 – 50.2m web pages (1.53 TB uncompressed, 247 GB compressed) – Extracted webgraph: 1.4 Млрд ссылок, 7.0 GB – Dataset сортирован в порядке краулинга • Setup: – Измерялось время выполнения по каждой итерации (5 итераций) – 100 партиций
  • 53. Результаты ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ “Best Practices”
  • 54. Результаты ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ +18% 1.4b 674m
  • 55. Результаты ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ +18% -15% 1.4b 674m
  • 56. Результаты ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ +18% -15% -60% 1.4b 674m 86m
  • 57. Результаты ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ +18% -15% -60% -69% 1.4b 674m 86m
  • 58. Ресурсы Data-Intensive Text Processing with MapReduce Jimmy Lin and Chris Dyer (Authors) (April, 2010) Chapter5: Graph Algorithms ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ