Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 5. MapReduce в Hadoop (алгоритмы)Technopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 1. Введение в Big Data и MapReduceTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkMoscowDataFest
Presentation from Moscow Data Fest #1, September 12.
Moscow Data Fest is a free one-day event that brings together Data Scientists for sessions on both theory and practice.
Link: http://www.meetup.com/Moscow-Data-Fest/
Энергоэффективная обработка Больших Данных на гетерогенных многоядерных компьютерных кластерах
Дистрибутив Hadoop основанный на
Apache Bigtop (bigtop.apache.org)
Следующем поколении планировщика Apache Hadoop YARN
Использует параллельные вычислительные мощности GPU нового поколения средствами Java
Зеленый ЦОД
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахYandex
В докладе рассказано о вычислительной модели на графах, в основе которой лежит механизм передачи сообщений между вершинами, а также о реализации в рамках данной модели API для написания алгоритмов на C++.
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Структуры данных в разделяемой памяти,
про алгоритмы замещения страниц в буфере и блокировки, которые используются на разных уровнях взаимодействия.
А также средства мониторинга памяти, уже существующие и те, которые ещё только в процессе разработки.
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 1. Введение в Big Data и MapReduceTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
DF1 - BD - Baranov - Mining Large Datasets with Apache SparkMoscowDataFest
Presentation from Moscow Data Fest #1, September 12.
Moscow Data Fest is a free one-day event that brings together Data Scientists for sessions on both theory and practice.
Link: http://www.meetup.com/Moscow-Data-Fest/
Энергоэффективная обработка Больших Данных на гетерогенных многоядерных компьютерных кластерах
Дистрибутив Hadoop основанный на
Apache Bigtop (bigtop.apache.org)
Следующем поколении планировщика Apache Hadoop YARN
Использует параллельные вычислительные мощности GPU нового поколения средствами Java
Зеленый ЦОД
Павел Артёмкин — Разработка C++ API для реализации алгоритмов на больших графахYandex
В докладе рассказано о вычислительной модели на графах, в основе которой лежит механизм передачи сообщений между вершинами, а также о реализации в рамках данной модели API для написания алгоритмов на C++.
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
Структуры данных в разделяемой памяти,
про алгоритмы замещения страниц в буфере и блокировки, которые используются на разных уровнях взаимодействия.
А также средства мониторинга памяти, уже существующие и те, которые ещё только в процессе разработки.
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Лекция 3. Распределённая файловая система HDFSTechnopark
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Big data algorithms and data structures for large scale graphsAlexey Zinoviev
Alexey Zinoviev presents graph processing tools and new algorythms for shortest path problem on the DUMP-2014 (popular Ural IT conference)
Keywords: Pregel, Apache Giraph, shortest path problem
Video: http://youtu.be/MGccYYrP9f0
Мастер-класс по BigData Tools для HappyDev'15Alexey Zinoviev
Данила, BigData Tool Master,
собрал Hadoop - кластер,
Запустил Dataset
Он скрипты на Scala
Run'ил на Spark постоянно
И писал в HDFSssss
Если во время доклада "Когда все данные станут большими..." мы будем говорить о вопросах и ответах, то на этом мастер-классе мы уже потопчемся в вотчине BigData-разработчиков.
Начнем с классики на Hadoop, познаем боль MapReduce job, потыкаем Pig + Hive, затем плавно свальсируем в сторону Spark и попишем код в легком и удобном pipeline - стиле.
Для кого хорошо подходит данный мастер-класс: вы умеете читать и понимать код на Java на уровне хотя бы Junior, умеете писать SQL-запросы, в универе вы ходили хоть на одну пару по матану или терверу, вас либо недавно поставили, либо вскоре поставят на проект, где надо уметь ручками работать с вышеперечисленным зверинцем. Ну или вам просто интересно посмотреть на мощь даннодробилок, написанных на Java, и у вас в анамнезе неудачный опыт с NoSQL/SQL, как хранилищем, которое было ответственно за все, включая аналитику.
RIT++: Hadoop Streaming: простой путь к масштабированию приложений обработки ...Alexey Voropaev
Slides from RIT++2011
Hadoop Streaming: простой путь к масштабированию приложений обработки данных (Hadoop Streaming: simple way to scale data processing applications)
Why do we need ORM? The difference between ActiveRecord and DataMapper patterns. The practical appliance of Iterative deepening depth-first search algo for topological sort of ORM relations.
Review of Cycle ORM and it features.
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"Alexey Zinoviev
Alexey Zinoviev Алексей Зиновьев рассказывает о выборе одной из следующих баз данных CouchDB, Neo4j, Mongo, Cassandra, HBase, Riak на Happydev 2013
Article "Choice of NoSQL database for your project: Don't bite off more than you can chew" presented on HappyDev 2013 (IT-conference in Omsk) by Alexey Zinoviev
The main idea of this article is comparison of the most popular NoSQL databases: CouchDB, Cassandra, Mongodb, Riak, Neo4j, HBase
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Вводная часть посвящена определению и истории развития концепции NoSQL. Даются характеристики, рассказывается о способах использования. Рассматриваются виды NoSQL БД, теоретические основы NoSQL, а в конце лекции обсуждаются недостатки NoSQL-решений, а также проводится сравнение разных NoSQL-решений.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №10 "Нереляционное решение в области баз данных — NoSQL". Лектор - Станислав Ступников.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №9 "Безопасность баз данных". Лектор - Павел Щербинин.
Открывается лекция рассказом о резервном копировании (о логических и физических резервных копиях, о выборе данных для копирования). Затем определяется терминология для обсуждения дальнейших вопросов. После этого рассматриваются основы учётных записей: таблицы доступа, привилегии, виды записей. Обсуждаются SQL-injection, список смежных вершин (Adjacency Set), вложенное множество (Nested Set), материализованный путь (Materialized Path) и комбинированный подход.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №8 "Конфигурирование базы данных". Лектор - Павел Щербинин.
Сначала объясняются основы конфигурирования и общие принципы настройки. Далее рассказывается об области видимости, о настройке использования памяти, обсуждается размер блока ключей key_cache_block_size. Рассматривается устройство и использование кэша InnoDB, а также кэшей потоков и таблиц. Затем говорится об особенностях ввода/вывода в InnoDB. Далее рассказывается о табличном пространстве, оптимизации файловой сортировки, переменных состояния. Финальная часть лекции посвящена репликации: настройка, синхронизация, топология, планирование пропускной способности, администрирование и обслуживание, проблемы и их решения.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №7 "Оптимизация запросов и индексирование". Лектор - Павел Щербинин.
Вначале рассказывается об оптимизации доступа к данным, о декомпозиции соединения и состоянии запроса. Далее идёт большой блок, посвящённый оптимизатору запросов (изменение порядка соединения, применение алгебраических правил эквивалентности, оптимизации COUNT(), MIN(), MAX(), вычисление и свертка константных выражений, покрывающие индексы, оптимизация подзапросов, раннее завершение, сравнение по списку IN() и распространение равенства). Затем последовательно рассматриваются такие вещи, как соединение (JOIN) в MySQL, оптимизатор сортировки, коррелированные подзапросы, слияние и непоследовательный просмотр индексов, функции SELECT & UPDATE, COUNT(). После этого рассказывается об оптимизации запросов с помощью JOIN, GROUP BY, DISTINCT и LIMIT со смещением. В конце лекции даётся информация о кэшировании запросов, объединённых таблицах и секционировании.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №5 "Определение узких мест". Лектор - Павел Щербинин.
Вначале рассказывается о подсистемах хранения: MyISAM, InnoDB, Memory, о критериях выбора подсистем хранения, приводятся практические примеры. Затем обсуждается тема индексирования (B-tree, хеш-индексы) и EXPLAIN (столбцы id, table, possible_keys, key, key_len).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных".
Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-запросы". Лектор - Павел Щербинин.
Лекция открывается рассказом о том, что такое профилирование запроса, каковы его этапы выполнения в MySQL. Рассказывается о том, как планировать запрос, как осуществляется протоколирование запросов, как собирается статистика. Объясняются основы индексирования, подробно обсуждаются стратегии индексирования для достижения высокой производительности: изоляция столбца, кластерные индексы (преимущества и недостатки), размещение данных в MyISAM и InnoDB, покрывающие индексы. Далее затрагивается тема нормализации и денормализации, а также таблиц счётчиков. В завершении рассказывается о версионировании схемы БД: о методах инкрементных изменений, идемпотентных изменений, уподобления структуры БД исходному коду.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №4 "Расширенные возможности работы с базами данных. Триггеры и хранимые процедуры"
Лектор - Павел Щербинин.
Первая часть лекции посвящена хранимым процедурам (использование, примеры кода, аспекты безопасности при использовании хранимых процедур): LOOP, REPEAT, WHILE, HANDLER, курсоры, EXECUTE. Во второй части рассказывается о триггерах: BEFORE, AFTER, INSTEAD OF, о специальных таблицах inserted, updated и deleted, об использовании триггеров для поддержания целостности и бизнес-логики, о проблемах при использовании триггеров, приводятся примеры кода. В завершающей части лекции обсуждаются вопросы, связанные с транзакциями: концепция A.C.I.D.; уровни изоляции ANSI/ISO (SET TRANSACTION ISOLATION LEVEL); взаимовлияние транзакций и проблемы lost update, dirty read, non-repeatable read и phantom read; технология MVCC (контроль версионирования конкуренции); конкуренция; параллельность и согласованность.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №3 "Выборка данных (продолжение). Транзакции"
Лектор - Павел Щербинин.
Лекция начинается с рассказа о добавлении данных и операторе INSERT, о модификации данных и операторе UPDATE, об удалении данных и операторе DELETE. Затем небольшая часть лекции посвящена пользовательским переменным. После этого даётся информация о подзапросах: SUBQUERIES, ROW SUBQUERIES, SUBQUERIES in FROM. Далее говорится об агрегации (UNION), о семействе функций JOIN и соединении таблиц, а в завершение лекции — о понятии VIEW (каковы преимущества, ограничения и особенности, алгоритмы использования и изменение).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №2 "Модификация данных. Выборка данных (начало)"
Лектор - Павел Щербинин.
Сначала завершается рассмотрение типа данных MySQL «Дата и время». Затем рассказывается о создании таблиц (CREATE TABLE): create_definition, column_definition, reference_defenition, обновление кортежа в родительском отношении. Далее обсуждается процедура изменения таблицы (ALTER TABLE), выборка данных и оператор SELECT, а также фильтрация (формирование групп, агрегаторы).
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
СУБД 2013 Лекция №1 "Введение и начало проектирования"Technopark
Технопарк Mail.ru Group, МГТУ им. Н.Э. Баумана. Курс "Базы данных". Лекция №1 "Введение и начало проектирования"
Лектор - Павел Щербинин.
В лекции обсуждаются значение и роли баз данных в IT, даются определения БД и СУБД. Затем рассказывается о реляционной модели данных, об основах реляционной алгебры. Далее говорится непосредственно о проектировании БД: каковы критерии оценки модели данных, особенности концептуального проектирования, этапы проектирования, что такое логическое проектирование. Остальная часть лекции посвящена типам данных MySQL: NULL, целые числа, числа с плавающей точкой, бинарные, строки, дата и время.
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9obOz5K695ugYuiOOCBciEi
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
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, ГРАФЫ
11. Списки смежности
• Плюсы
– Намного более компактная реализация
– Легко найти все исходящие ссылки для ноды
• Минусы
– Намного более сложнее подсчитать входящие
ссылки
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
12. Поиск кратчайшего пути
• Задача
– Найти кратчайший путь от исходной вершины
до заданной (или несколько заданных)
• Также, кратчайший может означать с наименьшим
общем весом всех ребер
– Single-Source Shortest Path
• Алгоритм Дейкстры
• MapReduce: параллельный поиск в ширину
(Breadth-First Search)
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ
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
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, ГРАФЫ
• Большое кол-во алгоритмов на графах включает в себя:
– Выполнение вычислений, зависимых от фич ребер и вершины,
на каждой вершине
– Вычисления, основанные на обходе графа
• Основной рецепт:
– Представлять графы в виде списка смежности
– Производить локальные вычисления на маппере
– Передавать промежуточные вычисления по исходящих
ребрам, где ключом будет целевая вершина
– Выполнять агрегацию на редьюсере по данных из входящих
вершин
– Повторять итерации до выполнения критерия сходимости,
который контролируется внешним драйвером
– Передавать структуру графа между итерациями
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)
– Нет “подвисших” вершин
• Затем, добавим сложностей
– Зачем нужен случайный переход?
– Откуда появляются “подвисшие” вершины?
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 партиций
58. Ресурсы
Data-Intensive Text Processing with MapReduce
Jimmy Lin and Chris Dyer (Authors) (April, 2010)
Chapter5: Graph Algorithms
ЛЕКЦИЯ 6: MAPREDUCE В HADOOP, ГРАФЫ