Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

952 views

Published on

  • Be the first to comment

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

  1. 1. Докладчик: Алексей Зиновьев Big Data algorithms and data structures for large-scale graphs
  2. 2. О себе ● аспирант ОмГУ, математик ● занимаюсь теорией графов, прогнозированием пробок, исследованием транспортных систем ● большой фанат различных Maps API
  3. 3. BigData & Graph Theory
  4. 4. Откуда BigData есть быти? BigData прошлого: ● Астрономический вычисления ● Данные многолетних наблюдений за погодой ● Данные торговых операций ● Морские маршруты
  5. 5. А теперь ● Web-граф (модель Интернета) ● Граф почтовых сообщений ● Социологические исследования ● Дорожные графы ● Транзакции на PayPal ● Граф друзей на Facebook ● Анализ текстов, публикаций
  6. 6. Чемпионы-тяжеловесы Граф Число вершин Число ребер Объем данных на диске Прирост в день 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
  7. 7. ● найти ближайшую точку к данной на большом множестве точек; ● расcтояние может быть любым, в том числе быть длиной кратчайшего маршрута на графе. Основные приложения ● сервисы рекомендаций, генетические исследования; ● распознавание образов; ● классификация текстов; ● рекомендательные и экспертные системы; ● динамическое размещение рекламы в Интернете. Nearest Neighbor Search (NNS)
  8. 8. Эксперимент Милграма ● 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
  9. 9. ● поиск кратчайшего расстояния между двумя точками ● кластеризация и поиск компонент ● поиск min/max остовного дерева ● задача коммивояжера ● потоковые задачи ● построение моделей динамических графов, развивающихся схоже с некоторыми реальными совокупностями объектов (человечество; все научные статьи; преступления; почтовая переписка) Основные задачи на графах
  10. 10. Node Centrality Problem Зачем искать множество центральных точек? ● влияние таких точек больше остальных ● удаление важных вершин снижает надежность системы Основные приложения ● астрофизика ● биоинформатика ● социальные связи ● дорожные сети ● изучение топологии интернета и выявление спама ● системы рекомендаций
  11. 11. Вопросы хранения больших графов
  12. 12. ● матрица смежности ● матрица инцидентности ● список смежных вершин ● список ребер ● различные виды деревьев ● в виде стеков и многие другие... Все эти представления различаются по потребляемой памяти и временной сложности выполнения стандартных операций над графом. Традиционные и не очень структуры данных
  13. 13. ● граф в RAM, данные на диске в свободном формате ● граф в RAM, данные в неграфовой СУБД ● граф в RAM, данные в графовой СУБД ● граф не загружается целиком в RAM, обработка идет частями, данные на диске в произвольном формате ● неграфовое представление в RAM, данные на диске в файле или в СУБД любого типа Для некоторых агрегационных вычислений граф не требуется представлять в памяти в виде графа и определять корректные операции Способы работы с графом
  14. 14. ● Оптимальна для сильносвязных сущностей ● Вершины, ребра, атрибуты ● Индексы на значения атрибутов ● ACID ● REST API + Cypher ● Множество плагинов, включая 2d индекс Neo4j: преимущества
  15. 15. ● Нет полноценного горизонтального масштабирования ● Плохо приспособлен для размещения на нескольких машинах ● Лимиты и платность ● Много маркетинга и неоправданного использования Neo4j: недостатки
  16. 16. Системы для вычисления на больших графах
  17. 17. Решение некоторых графовых задач при помощи MapReduce возможно, но не является оптимальным ● сложность сведения графовой задачи к модели key- value ● большинство графовых алгоритмов построено на итерационной обработке, что в M/R требует multiple chained jobs, что влечет полное сохранение и загрузку состояния графа (эта операция будет доминировать по времени) Think like a vertex… Ограничения парадигмы MapReduce
  18. 18. Определим две базовых операции ● Fusion - собираем информацию от соседей ● Diffusion - распостраняем информацию от вершины соседям Храним состояние графа в памяти в течение всей обработки, сохраняя только конечное состояние и некоторые промежуточные точки прогресса. Теперь вместо определения mapper и reducer, достаточно определить Vertex, который имеет значение и список ребер, а также способен посылать сообщения на каждой итерации. Bulk Synchronous Parallel
  19. 19. Pregel - система для вычислений на больших графах В основе Pregel лежит вершинный подход, а сама система основана на модели Bulk Synchronous Parallel Программы обработки графов в Pregel представлены в виде последовательностей итераций, которые называются супершагами. При выполнении супершага для каждой вершины графа запускается определенная пользователем функция, и все функции выполняются параллельно.
  20. 20. Pregel - система для вычислений на больших графах
  21. 21. Pregel - система для вычислений на больших графах Вершины обмениваются сообщениями, а также могут изменять свое состояние и состояние смежных ребер, согласно полученной информации. Если вершина не получила сообщений, то она становится неактивной. Если все вершины не активны, то работа алгоритма останавливается. Pregel обеспечивает масштабируемость, устойчива к ошибкам и позволяет применять произвольные алгоритмы.
  22. 22. С++ API
  23. 23. Giraph - открытая система для вычислений на больших графах В основе Giraph лежат статьи Google о построении собственной системы Pregel. В свое время использовался в Facebook для анализа социального графа. В данный момент в Giraph добавлено несколько фич, которых нет в Pregel: master computation, sharded aggregators, edge-oriented input, out-of-core computation
  24. 24. Giraph - открытая система для вычислений на больших графах В данный момент доступна версия 1.0 В основе лежит модель Master/Workers, где ● Master - распределяет куски данных между Workers и синхронизирует супершаги ● Worker - загружает свой кусок графа и выполняет все вычисления, рассылает сообщения Нет точки отказа, т.к. при падении текущего Master, на его место заступает другой. При падении Worker вычисления начинаются с последней checkpoint с меньшим количеством workers. Очередь из “заместителей” Master хранится в ZooKeeper
  25. 25. Альтернативная история
  26. 26. Дорожные графы
  27. 27. Не всякий граф - дорожный... Назовем граф дорожным, если он может быть описан как граф с положительными весами, приписанными к ребрам. Также часть ребер в таком графе может быть более важной, чем остальная (магистральные шоссе, выделенные линии связи). Это свойство может использоваться в различных алгоритмах на “дорожных” графах, чтобы вычислять кратчайшие расстояния быстрее, чем на обычных графах.
  28. 28. Кратчайшее расстояние на графе Европы Поиск кратчайшего расстояния на графе - одна из важнейших задач оптимизации, причем классические подходы в данной области не оправдывают себя на больших графах.
  29. 29. A* - эвристический алгоритм Каким образом можно улучшить алгоритм Дейкстры и не просматривать целиком весь граф в процессе построения кратчайшего маршрута? Алгоритм поиска по первому наилучшему совпадению (best first) на графе, который находит маршрут с наименьшей стоимостью между двумя вершинами Порядок обхода вершин определяется эвристической функцией «расстояние + стоимость» (обычно обозначаемой как f(v)= g(v) + h(v))
  30. 30. Двунаправленный поиск Алгоритм состоит: ● прямого поиска, аналогичного одиночному поиску; ● обратного поиска; ● операции определения принадлежности листа другому дереву поиска. Соединив пути получаем искомый путь. Если два поиска осуществляются параллельно — это ещё больше экономит время на получение искомого пути по сравнению с однонаправленным поиском.
  31. 31. Требования к системе обработки ● Необходимо быстро (10 мс) находить кратчайшее расстояние между двумя точками ● Линейность алгоритмов ● Этап предварительной обработки (препроцессинг) ● Не хранить все расстояния между вершинами (O(n^2) по памяти) ● Ответ может быть точным с определенной вероятностью ● Учет геоспецифики графа ● Использование сжатия и перекодировки для хранения на диске
  32. 32. Двухфазовые алгоритмы Все подобные алгоритмы работают в два этапа. Первый этап включает в себя предварительную обработку графа без использования информации о том, между какими вершинами надо найти кратчайшее расстояние. Результаты обработки сохраняются в базу данных. Второй этап - выполнение запроса к базе данных. В момент выполнения запроса известны узлы, между которыми необходимо найти кратчайшее расстояние. Основное предположение состоит в том, что дорожная сеть слабо изменяется со временем и фазу обработки не нужно выполнять слишком часто.
  33. 33. Алгоритмы для вычисления кратчайшего расстояния 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
  34. 34. A* with landmarks (ALT) ● Выбираем подмножество вершин (случайно, например) ● Вычисляем расстояния между ними ● Вычисление нижних границ (функции h(v)) для A* расстояний между ними происходит за O(1) Поиск может быть направлен с двух сторон. Низкий уровень сканирования: для того чтобы найти путь из 1000 вершин в графе с 3 млн, было просканировано всего 10 тысяч вершин.
  35. 35. Reach (RE) Формализуем интуицию автомобилиста: ● он не ищет объезд вдалеке ● он стремится попасть поскорее но основную скоростную магистраль ● он стремится гнать по основной магистрали, не обращая внимание на дороги меньшего класса важности, двигаясь по направлению к цели
  36. 36. Contraction hierarchies (CH) Это техника для поиска кратчайших путей в созданном на предварительной стадии особом “контрактном” графе. Дуга может быть пропущена, если есть альтернативные пути. Большую роль играет класс и важность дороги. Для поиска в новом графе используется двунаправленный алгоритм Дейкстры.
  37. 37. Transit nodes (TN) Граф разбивается на подграфы так, что для каждого подграфа, есть небольшой набор узлов R, таких, что все кратчайшие пути между вершинами* из региона проходят через узел из R. Фаза препроцессинга: ● найти R для каждого региона ● найти для каждой вершины его transit node из R ● вычислить все пары кратчайших путей между транзитными узлами из R * больше определенной величины d
  38. 38. Затруднительные ситуации
  39. 39. Оптимизационные задачи на больших графах Однако, при решении оптимизационных задач на графах, изменяющих структуру самого графа, фаза препроцессинга длиною в несколько часов становится бессмысленной. Пример задачи: есть 1 млрд рублей на развитие дорожной сети. Каким образом можно инвестировать его, чтобы уменьшить среднее время, затрачиваемое на ежедневные межрайонные корреспонденции граждан? Еще пример: дорожная сеть подверглась воздействию стихии, ожидается еще один удар. Где проложить новые дороги, чтобы система была максимально устойчивой?
  40. 40. I/O Efficient Algorithms and Data Structures ● Традиционный подход состоит в случайном чтении из RAM ● Однако, стоит помнить, что уровней памяти много ● Чем дальше от CPU, тем больше и медленнее ● Данные перемещаются между уровнями большими блоками ● Часто OS берет на себя предсказание и подгрузку ● Диск в 10^6 медленнее RAM ● Разбиение на небольшие блоки и выполнение операций внутри каждого блока с объединением результата уменьшает число I/O операций
  41. 41. Graphs and Memory Errors Что может привести к ошибкам? ● космическое излучение ● битый кусок винчестера ● ошибка при передаче данных из RAM в кэш Чем чревато? ● классические алгоритмы (слияние списков, например) не готовы к ошибкам ● выходом из строя критического оборудования ● редкость ошибок - миф (эксперимент Google) Разработка алгоритмов, устойчивых к ошибкам, ведется уже 50 лет!
  42. 42. Итоги ● Для анализа большого графа достаточно небольшого вычислительного кластера ● Структуры данных и способ хранения очень сильно зависят от задачи и выбранного алгоритма ● Невозможна хаотичная работа с большими данными без соответствующего математического аппарата и программного обеспечения

×