Содержание
- 2. Параллельное и распределённое программирование Под параллельным программированием понимают: Векторную обработку данных Использование нескольких CPU на компьютере
- 3. Мотивация распределённых вычислений Хотим обрабатывать большие объёмы данных ( > 1 TB) Хотим использовать мощности сотен/тысяч
- 4. Возникающие проблемы Отказы компьютеров Отказы сети Медленная коммуникация между компьютерами Пропускная способность канала ограничена Отсутствует глобальное
- 5. Идеи и решение Идеи Перенести вычисления ближе к данным Максимально снизить сетевые коммуникации Средство контроля распределенных
- 6. Распределенная файловая система Chunk Server (Slave Node) Файл разделен на блоки (chunk) Типичный размер блока 16-64
- 7. Распределенная файловая система
- 8. Map Reduce Автоматическое распараллеливание и распределение по нодам Устойчивость к сбоям Автоматичексое управление внутренней коммуникацией между
- 9. Идеология Map Reduce Идеология Map Reduce базируется на 2-х основных парадигмах: Парадигме функционального программирования Парадигме Master/Workers
- 10. Функциональное программирование Функции не изменяют данные – они всегда создают новые Оригинальные данные всегда существуют в
- 11. Пример fun foo(l: int list) = sum(l) + mul(l) + length(l) Порядок функций sum(), mul() и
- 12. Map Map f lst – создает новый список, применив f к каждому элементу списка lst Пример:
- 13. Reduce Foldl f x0 lst – свертка структуры данных к единственному значению x0 – аккумулирующее значение
- 14. Master/Workers Есть один главный процесс, порождающий несколько рабочих процессов для обработки отдельных элементов данных. Управляет рабочими
- 15. Поток данных в MapReduce моделе Считывается большой набор данных Map: извлекаем необходимую информацию Shuffle and sort:
- 16. Модель программирования Заимствована из функционального программирования Пользователь реализует две функции: map (in_key, in_value) -> (out_key, intermediate_value)
- 17. Функция map На вход функции поступают данные в виде пар ключ-значение. Например данные из текстового файла
- 18. Функция reduce После завершения стадии map’a все промежуточные значения для каждого выходного ключа добавляются в список
- 19. MapReduce: workers
- 20. Параллелизм Функции map() выполняются параллельно, создавая различные промежуточные данные для различных входных групп данных Функции reduce()
- 21. Локальность Главная программа разбивает задачи основываясь на расположении данных: старается запускать map функцию на той же
- 22. Устойчивость к сбоям Главная программа обнаруживает отказы рабочих нодов и перезапускает задачи. Также происходит повторный запуск
- 23. Оптимизация Фаза reduce не может начаться пока не закончена фаза map. Один медленный диск может замедлить
- 24. Оптимизация Расширение набора пользовательских функций: Partition(ключ, кол-во reduce узлов) => reduce узел для данного ключа Часто
- 25. MapReduce: workers (opt.)
- 26. Пример: подсчет статистики по словам Map(string input_key, input_value): // input_key: document name // input_value: document contents
- 27. Пример: YAHOO web graph Для каждой странички формируетя список веб документов, ссылающихся на эту страничку На
- 28. Пример: Last.fm top list На проигрыватель установлен плагин Last.fm Пользователь слушает песню => пишется лог вида
- 29. Реализации Google Недоступна вне Google GFS Hadoop Открытая имплементация на Java HDFS Aster Data Cluster-optimized SQL
- 30. Решаемые задачи Индексация интернета Задачи исследования данных Data Mining данных Задачи построения отчетов Рендеринг набора кадров
- 31. Будущее Microsoft Dryad – развитие идей map reduce. Программист определяет ацикличный направленный граф с С++ кодом
- 32. Язык диаграмм Dryad G^n = параллельный запуск n копий G A >= B = подключить входы
- 34. Скачать презентацию