SlideShare a Scribd company logo
1 of 63
Download to read offline
Докладчик: Алексей Зиновьев
Big Data algorithms and data structures
for large-scale graphs
О себе
● аспирант ОмГУ, математик
● занимаюсь теорией графов,
прогнозированием пробок, исследованием
транспортных систем
● большой фанат различных Maps API
BigData & Graph Theory
Откуда BigData есть быти?
BigData прошлого:
● Астрономический
вычисления
● Данные
многолетних
наблюдений за
погодой
● Данные торговых
операций
● Морские маршруты
А теперь
● Web-граф (модель Интернета)
● Граф почтовых сообщений
● Социологические исследования
● Дорожные графы
● Транзакции на PayPal
● Граф друзей на Facebook
● Анализ текстов, публикаций
Чемпионы-тяжеловесы
Граф Число
вершин
Число
ребер
Объем
данных
на диске
Прирост в
день
Web-граф 1 трлн 8 трлн 100 PB 300 TB
Facebook
(граф
друзей)
1 млрд 140 млрд 1 PB 15 TB
Дорожный
граф
Европы
18 млн 42 млн 20 GB 50 MB
Дорожный
графЕкб
120 000 260 000 400 MB 100 KB
● найти ближайшую точку к данной на большом
множестве точек;
● расcтояние может быть любым, в том числе быть
длиной кратчайшего маршрута на графе.
Основные приложения
● сервисы рекомендаций, генетические исследования;
● распознавание образов;
● классификация текстов;
● рекомендательные и экспертные системы;
● динамическое размещение рекламы в Интернете.
Nearest Neighbor Search (NNS)
Эксперимент Милграма
● Hyper ANF - новый алгоритм, основанный на счетчиках
HyperLogLog и вычислении функции соседства
● HyperLogLog - статистический счетчик (6% отклонение,
5 - 7 bits)
● Диаметр Facebook - 10 hours, 1TB RAM
Facebook 4.74 712 M 69 G
Twitter 3.67 ---- 5G follows
MSN Messenger (1
month)
6.6 180 M 1.3 G arcs
● поиск кратчайшего расстояния между двумя точками
● кластеризация и поиск компонент
● поиск min/max остовного дерева
● задача коммивояжера
● потоковые задачи
● построение моделей динамических графов,
развивающихся схоже с некоторыми реальными
совокупностями объектов (человечество; все научные
статьи; преступления; почтовая переписка)
Основные задачи на графах
Node Centrality Problem
Зачем искать множество центральных точек?
● влияние таких точек больше остальных
● удаление важных вершин снижает надежность
системы
Основные приложения
● астрофизика
● биоинформатика
● социальные связи
● дорожные сети
● изучение топологии интернета и выявление спама
● системы рекомендаций
Вопросы хранения больших
графов
● матрица смежности
● матрица инцидентности
● список смежных вершин
● список ребер
● различные виды деревьев
● в виде стеков
и многие другие...
Все эти представления различаются по потребляемой
памяти и временной сложности выполнения
стандартных операций над графом.
Традиционные и не очень
структуры данных
● граф в RAM, данные на диске в свободном формате
● граф в RAM, данные в неграфовой СУБД
● граф в RAM, данные в графовой СУБД
● граф не загружается целиком в RAM, обработка идет
частями, данные на диске в произвольном формате
● неграфовое представление в RAM, данные на диске в
файле или в СУБД любого типа
Для некоторых агрегационных вычислений граф не
требуется представлять в памяти в виде графа и
определять корректные операции
Способы работы с графом
● Оптимальна для
сильносвязных сущностей
● Вершины, ребра, атрибуты
● Индексы на значения
атрибутов
● ACID
● REST API + Cypher
● Множество плагинов, включая
2d индекс
Neo4j: преимущества
● Нет полноценного
горизонтального
масштабирования
● Плохо приспособлен для
размещения на нескольких
машинах
● Лимиты и платность
● Много маркетинга и
неоправданного использования
Neo4j: недостатки
Системы для вычисления на
больших графах
Решение некоторых графовых задач при помощи
MapReduce возможно, но не является оптимальным
● сложность сведения графовой задачи к модели key-
value
● большинство графовых алгоритмов построено на
итерационной обработке, что в M/R требует multiple
chained jobs, что влечет полное сохранение и загрузку
состояния графа (эта операция будет доминировать
по времени)
Think like a vertex…
Ограничения парадигмы
MapReduce
Определим две базовых операции
● Fusion - собираем информацию от соседей
● Diffusion - распостраняем информацию от вершины
соседям
Храним состояние графа в памяти в течение всей
обработки, сохраняя только конечное состояние и
некоторые промежуточные точки прогресса.
Теперь вместо определения mapper и reducer,
достаточно определить Vertex, который имеет значение
и список ребер, а также способен посылать сообщения
на каждой итерации.
Bulk Synchronous Parallel
Pregel - система для вычислений
на больших графах
В основе Pregel лежит вершинный подход, а сама
система основана на модели Bulk Synchronous Parallel
Программы обработки графов в Pregel представлены в
виде последовательностей итераций, которые
называются супершагами.
При выполнении супершага для каждой вершины
графа запускается определенная пользователем
функция, и все функции выполняются параллельно.
Pregel - система для вычислений
на больших графах
Pregel - система для вычислений
на больших графах
Вершины обмениваются сообщениями, а также могут
изменять свое состояние и состояние смежных ребер,
согласно полученной информации.
Если вершина не получила сообщений, то она
становится неактивной. Если все вершины не активны,
то работа алгоритма останавливается.
Pregel обеспечивает масштабируемость, устойчива к
ошибкам и позволяет применять произвольные
алгоритмы.
С++ API
Giraph - открытая система для
вычислений на больших графах
В основе Giraph лежат статьи Google о построении
собственной системы Pregel.
В свое время использовался в Facebook для анализа
социального графа.
В данный момент в Giraph добавлено несколько фич,
которых нет в Pregel: master computation, sharded
aggregators, edge-oriented input, out-of-core computation
Giraph - открытая система для
вычислений на больших графах
В данный момент доступна версия 1.0
В основе лежит модель Master/Workers, где
● Master - распределяет куски данных между Workers
и синхронизирует супершаги
● Worker - загружает свой кусок графа и выполняет
все вычисления, рассылает сообщения
Нет точки отказа, т.к. при падении текущего Master, на
его место заступает другой. При падении Worker
вычисления начинаются с последней checkpoint с
меньшим количеством workers. Очередь из
“заместителей” Master хранится в ZooKeeper
Альтернативная история
Дорожные графы
Не всякий граф - дорожный...
Назовем граф дорожным, если он может быть описан
как граф с положительными весами, приписанными к
ребрам.
Также часть ребер в таком графе может быть более
важной, чем остальная (магистральные шоссе,
выделенные линии связи). Это свойство может
использоваться в различных алгоритмах на
“дорожных” графах, чтобы вычислять кратчайшие
расстояния быстрее, чем на обычных графах.
Кратчайшее расстояние на
графе Европы
Поиск кратчайшего расстояния на графе - одна из
важнейших задач оптимизации, причем классические
подходы в данной области не оправдывают себя на
больших графах.
A* - эвристический
алгоритм
Каким образом можно улучшить алгоритм Дейкстры и
не просматривать целиком весь граф в процессе
построения кратчайшего маршрута?
Алгоритм поиска по первому наилучшему совпадению
(best first) на графе, который находит маршрут с
наименьшей стоимостью между двумя вершинами
Порядок обхода вершин определяется эвристической
функцией «расстояние + стоимость» (обычно
обозначаемой как f(v)= g(v) + h(v))
Двунаправленный поиск
Алгоритм состоит:
● прямого поиска, аналогичного одиночному поиску;
● обратного поиска;
● операции определения принадлежности листа
другому дереву поиска.
Соединив пути получаем искомый путь. Если два
поиска осуществляются параллельно — это ещё больше
экономит время на получение искомого пути по
сравнению с однонаправленным поиском.
Требования к системе обработки
● Необходимо быстро (10 мс) находить кратчайшее
расстояние между двумя точками
● Линейность алгоритмов
● Этап предварительной обработки (препроцессинг)
● Не хранить все расстояния между вершинами (O(n^2)
по памяти)
● Ответ может быть точным с определенной
вероятностью
● Учет геоспецифики графа
● Использование сжатия и перекодировки для хранения
на диске
Двухфазовые алгоритмы
Все подобные алгоритмы работают в два этапа. Первый этап
включает в себя предварительную обработку графа без
использования информации о том, между какими
вершинами надо найти кратчайшее расстояние. Результаты
обработки сохраняются в базу данных.
Второй этап - выполнение запроса к базе данных. В момент
выполнения запроса известны узлы, между которыми
необходимо найти кратчайшее расстояние.
Основное предположение состоит в том, что дорожная сеть
слабо изменяется со временем и фазу обработки не нужно
выполнять слишком часто.
Алгоритмы для вычисления
кратчайшего расстояния
ALT: [Goldberg & Harrelson 05], [Delling & Wagner 07]
RE: [Gutman 05], [Goldberg et al. 07]
HH: [Sanders & Schultes 06]
CH: [Geisberger et al. 08]
TN: [Geisberger et al. 08]
HL: [Abraham et al. 11]
Dijkstra ALT RE HH CH TN HL
2 008 300 24 656 2444 462.0 94.0 1.8 0.3
A* with landmarks (ALT)
● Выбираем подмножество вершин (случайно, например)
● Вычисляем расстояния между ними
● Вычисление нижних границ (функции h(v)) для A*
расстояний между ними происходит за O(1)
Поиск может быть направлен с двух сторон.
Низкий уровень сканирования: для того чтобы найти путь
из 1000 вершин в графе с 3 млн, было просканировано
всего 10 тысяч вершин.
Reach (RE)
Формализуем интуицию автомобилиста:
● он не ищет объезд вдалеке
● он стремится попасть поскорее но основную скоростную
магистраль
● он стремится гнать по основной магистрали, не
обращая внимание на дороги меньшего класса
важности, двигаясь по направлению к цели
Contraction hierarchies (CH)
Это техника для поиска кратчайших путей в созданном на
предварительной стадии особом “контрактном” графе.
Дуга может быть пропущена, если есть альтернативные
пути.
Большую роль играет класс и важность дороги.
Для поиска в новом графе используется двунаправленный
алгоритм Дейкстры.
Transit nodes (TN)
Граф разбивается на подграфы так, что для каждого
подграфа, есть небольшой набор узлов R, таких, что все
кратчайшие пути между вершинами* из региона проходят
через узел из R.
Фаза препроцессинга:
● найти R для каждого региона
● найти для каждой вершины его transit node из R
● вычислить все пары кратчайших путей между
транзитными узлами из R
* больше определенной величины d
Затруднительные ситуации
Оптимизационные задачи на
больших графах
Однако, при решении оптимизационных задач на графах,
изменяющих структуру самого графа, фаза
препроцессинга длиною в несколько часов становится
бессмысленной.
Пример задачи: есть 1 млрд рублей на развитие
дорожной сети. Каким образом можно инвестировать его,
чтобы уменьшить среднее время, затрачиваемое на
ежедневные межрайонные корреспонденции граждан?
Еще пример: дорожная сеть подверглась воздействию
стихии, ожидается еще один удар. Где проложить новые
дороги, чтобы система была максимально устойчивой?
I/O Efficient Algorithms and Data
Structures
● Традиционный подход состоит в случайном чтении из
RAM
● Однако, стоит помнить, что уровней памяти много
● Чем дальше от CPU, тем больше и медленнее
● Данные перемещаются между уровнями большими
блоками
● Часто OS берет на себя предсказание и подгрузку
● Диск в 10^6 медленнее RAM
● Разбиение на небольшие блоки и выполнение
операций внутри каждого блока с объединением
результата уменьшает число I/O операций
Graphs and Memory Errors
Что может привести к ошибкам?
● космическое излучение
● битый кусок винчестера
● ошибка при передаче данных из RAM в кэш
Чем чревато?
● классические алгоритмы (слияние списков, например)
не готовы к ошибкам
● выходом из строя критического оборудования
● редкость ошибок - миф (эксперимент Google)
Разработка алгоритмов, устойчивых к ошибкам, ведется
уже 50 лет!
Итоги
● Для анализа большого графа
достаточно небольшого
вычислительного кластера
● Структуры данных и способ
хранения очень сильно зависят
от задачи и выбранного
алгоритма
● Невозможна хаотичная работа
с большими данными без
соответствующего
математического аппарата и
программного обеспечения

More Related Content

Similar to А. Зиновьев "Big data algorithms and data structures for large scale graphs", DUMP-2014

08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduceRoman Brovko
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шагиAnton Gorokhov
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Technopark
 
Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)Andrew Panfilov
 
Uniting Data JavaOne2013
Uniting Data JavaOne2013Uniting Data JavaOne2013
Uniting Data JavaOne2013Dmitri Shiryaev
 
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИСit-people
 
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEКак сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEАртём Кудзев
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данныхAlex Polorotov
 
паттерны проектирования источников данных
паттерны проектирования источников данныхпаттерны проектирования источников данных
паттерны проектирования источников данныхVitaliy Trenkenshu
 
Ekb 2013 artemkin(1)
Ekb 2013 artemkin(1)Ekb 2013 artemkin(1)
Ekb 2013 artemkin(1)Optima-PROMO
 
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахПавел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахYandex
 
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
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data MATLAB
 
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
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисленияMATLAB
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationAnton Gorokhov
 
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...2ГИС Технологии
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelTechnopark
 

Similar to А. Зиновьев "Big data algorithms and data structures for large scale graphs", DUMP-2014 (20)

08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce08 - Hadoop. Алгоритмы на графах в MapReduce
08 - Hadoop. Алгоритмы на графах в MapReduce
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шаги
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Hadoop > cascading -> cascalog (short version)
Hadoop  > cascading -> cascalog (short version)Hadoop  > cascading -> cascalog (short version)
Hadoop > cascading -> cascalog (short version)
 
Uniting Data JavaOne2013
Uniting Data JavaOne2013Uniting Data JavaOne2013
Uniting Data JavaOne2013
 
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС"Знакомьтесь, М*" Муратшин Борис, 2ГИС
"Знакомьтесь, М*" Муратшин Борис, 2ГИС
 
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IEКак сделать веб-карту, сохранить здоровье и возненавидеть IE
Как сделать веб-карту, сохранить здоровье и возненавидеть IE
 
Паттерны проектирования источников данных
Паттерны проектирования источников данныхПаттерны проектирования источников данных
Паттерны проектирования источников данных
 
паттерны проектирования источников данных
паттерны проектирования источников данныхпаттерны проектирования источников данных
паттерны проектирования источников данных
 
Ekb 2013 artemkin(1)
Ekb 2013 artemkin(1)Ekb 2013 artemkin(1)
Ekb 2013 artemkin(1)
 
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахПавел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графах
 
Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"Anton Tsitou "Cycle ORM and Graphs"
Anton Tsitou "Cycle ORM and Graphs"
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
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.
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: Personalization
 
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
«Карта в браузере: путь от спутникового снимка до пользователя» – Илья Тарату...
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
Map matching
Map matchingMap matching
Map matching
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 

More from it-people

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Coit-people
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghubit-people
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrainsit-people
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologiesit-people
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндексit-people
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...it-people
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalrit-people
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...it-people
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАНit-people
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банкit-people
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Coit-people
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНСit-people
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...it-people
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologiesit-people
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn Systemit-people
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologiesit-people
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндексit-people
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...it-people
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognicianit-people
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...it-people
 

More from it-people (20)

«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
«Про аналитику и серебряные пули» Александр Подсобляев, Rambler&Co
 
«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub«Scrapy internals» Александр Сибиряков, Scrapinghub
«Scrapy internals» Александр Сибиряков, Scrapinghub
 
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
«Отладка в Python 3.6: Быстрее, Выше, Сильнее» Елизавета Шашкова, JetBrains
 
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
«Gevent — быть или не быть?» Александр Мокров, Positive Technologies
 
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
«Ещё один Поиск Яндекса» Александр Кошелев, Яндекс
 
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
«How I Learned to Stop Worrying and Love the BFG: нагрузочное тестирование со...
 
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
«Write once run anywhere — почём опиум для народа?» Игорь Новиков, Scalr
 
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
«Gensim — тематическое моделирование для людей» Иван Меньших, Лев Константино...
 
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН«Тотальный контроль производительности» Михаил Юматов, ЦИАН
«Тотальный контроль производительности» Михаил Юматов, ЦИАН
 
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
«Детские болезни live-чата» Ольга Сентемова, Тинькофф Банк
 
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
«Что такое serverless-архитектура и как с ней жить?» Николай Марков, Aligned ...
 
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
«Python на острие бритвы: PyPy project» Александр Кошкин, Positive Technologies
 
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
«PyWat. А хорошо ли вы знаете Python?» Александр Швец, Marilyn System
 
«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies«(Без)опасный Python», Иван Цыганов, Positive Technologies
«(Без)опасный Python», Иван Цыганов, Positive Technologies
 
«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс«Python of Things», Кирилл Борисов, Яндекс
«Python of Things», Кирилл Борисов, Яндекс
 
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
«Как сделать так, чтобы тесты на Swift не причиняли боль» Сычев Александр, Ra...
 
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
«Клиенту и серверу нужно поговорить» Прокопов Никита, Cognician
 
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
«Кошелек или деньги: сложный выбор между памятью и процессором» Алексеенко Иг...
 

А. Зиновьев "Big data algorithms and data structures for large scale graphs", DUMP-2014

  • 1. Докладчик: Алексей Зиновьев Big Data algorithms and data structures for large-scale graphs
  • 2. О себе ● аспирант ОмГУ, математик ● занимаюсь теорией графов, прогнозированием пробок, исследованием транспортных систем ● большой фанат различных Maps API
  • 4. Откуда BigData есть быти? BigData прошлого: ● Астрономический вычисления ● Данные многолетних наблюдений за погодой ● Данные торговых операций ● Морские маршруты
  • 5. А теперь ● Web-граф (модель Интернета) ● Граф почтовых сообщений ● Социологические исследования ● Дорожные графы ● Транзакции на PayPal ● Граф друзей на Facebook ● Анализ текстов, публикаций
  • 6.
  • 7.
  • 8. Чемпионы-тяжеловесы Граф Число вершин Число ребер Объем данных на диске Прирост в день Web-граф 1 трлн 8 трлн 100 PB 300 TB Facebook (граф друзей) 1 млрд 140 млрд 1 PB 15 TB Дорожный граф Европы 18 млн 42 млн 20 GB 50 MB Дорожный графЕкб 120 000 260 000 400 MB 100 KB
  • 9. ● найти ближайшую точку к данной на большом множестве точек; ● расcтояние может быть любым, в том числе быть длиной кратчайшего маршрута на графе. Основные приложения ● сервисы рекомендаций, генетические исследования; ● распознавание образов; ● классификация текстов; ● рекомендательные и экспертные системы; ● динамическое размещение рекламы в Интернете. Nearest Neighbor Search (NNS)
  • 10.
  • 11. Эксперимент Милграма ● Hyper ANF - новый алгоритм, основанный на счетчиках HyperLogLog и вычислении функции соседства ● HyperLogLog - статистический счетчик (6% отклонение, 5 - 7 bits) ● Диаметр Facebook - 10 hours, 1TB RAM Facebook 4.74 712 M 69 G Twitter 3.67 ---- 5G follows MSN Messenger (1 month) 6.6 180 M 1.3 G arcs
  • 12. ● поиск кратчайшего расстояния между двумя точками ● кластеризация и поиск компонент ● поиск min/max остовного дерева ● задача коммивояжера ● потоковые задачи ● построение моделей динамических графов, развивающихся схоже с некоторыми реальными совокупностями объектов (человечество; все научные статьи; преступления; почтовая переписка) Основные задачи на графах
  • 13.
  • 14.
  • 15. Node Centrality Problem Зачем искать множество центральных точек? ● влияние таких точек больше остальных ● удаление важных вершин снижает надежность системы Основные приложения ● астрофизика ● биоинформатика ● социальные связи ● дорожные сети ● изучение топологии интернета и выявление спама ● системы рекомендаций
  • 17. ● матрица смежности ● матрица инцидентности ● список смежных вершин ● список ребер ● различные виды деревьев ● в виде стеков и многие другие... Все эти представления различаются по потребляемой памяти и временной сложности выполнения стандартных операций над графом. Традиционные и не очень структуры данных
  • 18. ● граф в RAM, данные на диске в свободном формате ● граф в RAM, данные в неграфовой СУБД ● граф в RAM, данные в графовой СУБД ● граф не загружается целиком в RAM, обработка идет частями, данные на диске в произвольном формате ● неграфовое представление в RAM, данные на диске в файле или в СУБД любого типа Для некоторых агрегационных вычислений граф не требуется представлять в памяти в виде графа и определять корректные операции Способы работы с графом
  • 19. ● Оптимальна для сильносвязных сущностей ● Вершины, ребра, атрибуты ● Индексы на значения атрибутов ● ACID ● REST API + Cypher ● Множество плагинов, включая 2d индекс Neo4j: преимущества
  • 20.
  • 21. ● Нет полноценного горизонтального масштабирования ● Плохо приспособлен для размещения на нескольких машинах ● Лимиты и платность ● Много маркетинга и неоправданного использования Neo4j: недостатки
  • 22. Системы для вычисления на больших графах
  • 23. Решение некоторых графовых задач при помощи MapReduce возможно, но не является оптимальным ● сложность сведения графовой задачи к модели key- value ● большинство графовых алгоритмов построено на итерационной обработке, что в M/R требует multiple chained jobs, что влечет полное сохранение и загрузку состояния графа (эта операция будет доминировать по времени) Think like a vertex… Ограничения парадигмы MapReduce
  • 24.
  • 25. Определим две базовых операции ● Fusion - собираем информацию от соседей ● Diffusion - распостраняем информацию от вершины соседям Храним состояние графа в памяти в течение всей обработки, сохраняя только конечное состояние и некоторые промежуточные точки прогресса. Теперь вместо определения mapper и reducer, достаточно определить Vertex, который имеет значение и список ребер, а также способен посылать сообщения на каждой итерации. Bulk Synchronous Parallel
  • 26.
  • 27. Pregel - система для вычислений на больших графах В основе Pregel лежит вершинный подход, а сама система основана на модели Bulk Synchronous Parallel Программы обработки графов в Pregel представлены в виде последовательностей итераций, которые называются супершагами. При выполнении супершага для каждой вершины графа запускается определенная пользователем функция, и все функции выполняются параллельно.
  • 28. Pregel - система для вычислений на больших графах
  • 29. Pregel - система для вычислений на больших графах Вершины обмениваются сообщениями, а также могут изменять свое состояние и состояние смежных ребер, согласно полученной информации. Если вершина не получила сообщений, то она становится неактивной. Если все вершины не активны, то работа алгоритма останавливается. Pregel обеспечивает масштабируемость, устойчива к ошибкам и позволяет применять произвольные алгоритмы.
  • 31.
  • 32. Giraph - открытая система для вычислений на больших графах В основе Giraph лежат статьи Google о построении собственной системы Pregel. В свое время использовался в Facebook для анализа социального графа. В данный момент в Giraph добавлено несколько фич, которых нет в Pregel: master computation, sharded aggregators, edge-oriented input, out-of-core computation
  • 33. Giraph - открытая система для вычислений на больших графах В данный момент доступна версия 1.0 В основе лежит модель Master/Workers, где ● Master - распределяет куски данных между Workers и синхронизирует супершаги ● Worker - загружает свой кусок графа и выполняет все вычисления, рассылает сообщения Нет точки отказа, т.к. при падении текущего Master, на его место заступает другой. При падении Worker вычисления начинаются с последней checkpoint с меньшим количеством workers. Очередь из “заместителей” Master хранится в ZooKeeper
  • 36. Не всякий граф - дорожный... Назовем граф дорожным, если он может быть описан как граф с положительными весами, приписанными к ребрам. Также часть ребер в таком графе может быть более важной, чем остальная (магистральные шоссе, выделенные линии связи). Это свойство может использоваться в различных алгоритмах на “дорожных” графах, чтобы вычислять кратчайшие расстояния быстрее, чем на обычных графах.
  • 37. Кратчайшее расстояние на графе Европы Поиск кратчайшего расстояния на графе - одна из важнейших задач оптимизации, причем классические подходы в данной области не оправдывают себя на больших графах.
  • 38.
  • 39.
  • 40. A* - эвристический алгоритм Каким образом можно улучшить алгоритм Дейкстры и не просматривать целиком весь граф в процессе построения кратчайшего маршрута? Алгоритм поиска по первому наилучшему совпадению (best first) на графе, который находит маршрут с наименьшей стоимостью между двумя вершинами Порядок обхода вершин определяется эвристической функцией «расстояние + стоимость» (обычно обозначаемой как f(v)= g(v) + h(v))
  • 41.
  • 42. Двунаправленный поиск Алгоритм состоит: ● прямого поиска, аналогичного одиночному поиску; ● обратного поиска; ● операции определения принадлежности листа другому дереву поиска. Соединив пути получаем искомый путь. Если два поиска осуществляются параллельно — это ещё больше экономит время на получение искомого пути по сравнению с однонаправленным поиском.
  • 43.
  • 44. Требования к системе обработки ● Необходимо быстро (10 мс) находить кратчайшее расстояние между двумя точками ● Линейность алгоритмов ● Этап предварительной обработки (препроцессинг) ● Не хранить все расстояния между вершинами (O(n^2) по памяти) ● Ответ может быть точным с определенной вероятностью ● Учет геоспецифики графа ● Использование сжатия и перекодировки для хранения на диске
  • 45. Двухфазовые алгоритмы Все подобные алгоритмы работают в два этапа. Первый этап включает в себя предварительную обработку графа без использования информации о том, между какими вершинами надо найти кратчайшее расстояние. Результаты обработки сохраняются в базу данных. Второй этап - выполнение запроса к базе данных. В момент выполнения запроса известны узлы, между которыми необходимо найти кратчайшее расстояние. Основное предположение состоит в том, что дорожная сеть слабо изменяется со временем и фазу обработки не нужно выполнять слишком часто.
  • 46. Алгоритмы для вычисления кратчайшего расстояния ALT: [Goldberg & Harrelson 05], [Delling & Wagner 07] RE: [Gutman 05], [Goldberg et al. 07] HH: [Sanders & Schultes 06] CH: [Geisberger et al. 08] TN: [Geisberger et al. 08] HL: [Abraham et al. 11] Dijkstra ALT RE HH CH TN HL 2 008 300 24 656 2444 462.0 94.0 1.8 0.3
  • 47. A* with landmarks (ALT) ● Выбираем подмножество вершин (случайно, например) ● Вычисляем расстояния между ними ● Вычисление нижних границ (функции h(v)) для A* расстояний между ними происходит за O(1) Поиск может быть направлен с двух сторон. Низкий уровень сканирования: для того чтобы найти путь из 1000 вершин в графе с 3 млн, было просканировано всего 10 тысяч вершин.
  • 48.
  • 49. Reach (RE) Формализуем интуицию автомобилиста: ● он не ищет объезд вдалеке ● он стремится попасть поскорее но основную скоростную магистраль ● он стремится гнать по основной магистрали, не обращая внимание на дороги меньшего класса важности, двигаясь по направлению к цели
  • 50.
  • 51. Contraction hierarchies (CH) Это техника для поиска кратчайших путей в созданном на предварительной стадии особом “контрактном” графе. Дуга может быть пропущена, если есть альтернативные пути. Большую роль играет класс и важность дороги. Для поиска в новом графе используется двунаправленный алгоритм Дейкстры.
  • 52. Transit nodes (TN) Граф разбивается на подграфы так, что для каждого подграфа, есть небольшой набор узлов R, таких, что все кратчайшие пути между вершинами* из региона проходят через узел из R. Фаза препроцессинга: ● найти R для каждого региона ● найти для каждой вершины его transit node из R ● вычислить все пары кратчайших путей между транзитными узлами из R * больше определенной величины d
  • 53.
  • 55. Оптимизационные задачи на больших графах Однако, при решении оптимизационных задач на графах, изменяющих структуру самого графа, фаза препроцессинга длиною в несколько часов становится бессмысленной. Пример задачи: есть 1 млрд рублей на развитие дорожной сети. Каким образом можно инвестировать его, чтобы уменьшить среднее время, затрачиваемое на ежедневные межрайонные корреспонденции граждан? Еще пример: дорожная сеть подверглась воздействию стихии, ожидается еще один удар. Где проложить новые дороги, чтобы система была максимально устойчивой?
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61. I/O Efficient Algorithms and Data Structures ● Традиционный подход состоит в случайном чтении из RAM ● Однако, стоит помнить, что уровней памяти много ● Чем дальше от CPU, тем больше и медленнее ● Данные перемещаются между уровнями большими блоками ● Часто OS берет на себя предсказание и подгрузку ● Диск в 10^6 медленнее RAM ● Разбиение на небольшие блоки и выполнение операций внутри каждого блока с объединением результата уменьшает число I/O операций
  • 62. Graphs and Memory Errors Что может привести к ошибкам? ● космическое излучение ● битый кусок винчестера ● ошибка при передаче данных из RAM в кэш Чем чревато? ● классические алгоритмы (слияние списков, например) не готовы к ошибкам ● выходом из строя критического оборудования ● редкость ошибок - миф (эксперимент Google) Разработка алгоритмов, устойчивых к ошибкам, ведется уже 50 лет!
  • 63. Итоги ● Для анализа большого графа достаточно небольшого вычислительного кластера ● Структуры данных и способ хранения очень сильно зависят от задачи и выбранного алгоритма ● Невозможна хаотичная работа с большими данными без соответствующего математического аппарата и программного обеспечения