Праздничная неделя подходит к концу, но мы продолжаем публиковать лекции от Школы анализа данных Яндекса для тех, кто хочет провести время отдыха с пользой. Сегодня очередь курса, важность которого в наше время сложно переоценить, даже если у вас всего один компьютер, не говоря уже о сложных системах – «Параллельные и распределенные вычисления».
Что внутри: знакомство с параллельными вычислениями и распределёнными системами обработки и хранения данных, а также выработка навыков практического использования соответствующих технологий. Курс состоит из четырех основных блоков: concurrence, параллельные вычисления, параллельная обработка больших массивов данных и распределенные вычисления.
Лекции читает Олег Викторович Сухорослов, старший научный сотрудник Центра грид-технологий и распределенных вычислений ИСА РАН. Доцент кафедры распределенных вычислений ФИВТ МФТИ. Кандидат технических наук.
Concurrency (одновременность).
Области применения и проблематика. Способы реализации одновременных систем, процессы и потоки, программный инструментарий. Основы многопоточного программирования на примере языков C++ и Java. Типичные ошибки многопоточного программирования. Взаимное исключение и условная синхронизация. Модель памяти и низкоуровневые примитивы синхронизации. Альтернативные подходы к реализации одновременных программ.
Параллельные вычисления.
Области применения и проблематика. Современные параллельные вычислительные системы. Теоретические основы параллельных вычислений. Показатели качества параллельного алгоритма. Принципы разработки и типовые структуры параллельных алгоритмов. Методология PCAM. Системы параллельного программирования. Типовые модели программирования и шаблоны. Основы параллельного программирования на системах с общей памятью на примере технологии OpenMP. Основы параллельного программирования на системах с распределенной памятью на примере технологии MPI.
Параллельная обработка больших массивов данных.
Феномен Big Data. Модель программирования MapReduce. Принципы параллельной реализации вычислений. Область применения и примеры задач. Принципы распределенной реализации MapReduce на кластерных системах. Платформа Apache Hadoop. Интерфейсы прикладного программирования и реализация программ для Hadoop. Локальная отладка и запуск программ на кластере. Приемы и стратегии реализации MapReduce-программ. Высокоуровневые языки и инструментарии для работы с Hadoop. Практические примеры использования MapReduce. Ограничения модели MapReduce, расширения и альтернативные подходы.
Распределенные системы и вычисления.
Области применения, характерные особенности и виды распределенных систем. Проблемы построения распределенных систем. Теоретические основы распределенных вычислений, примеры распределенных алгоритмов. Способы взаимодействия распределенных процессов, сетевые протоколы. Технологии распределенного программирования. Знакомство с языком Erlang. Распределенные системы хранения данных, репликация данных, NoSQL-системы. Технологии распределенных вычислений, гриды, добровольные вычисления. Облачные вычислительные системы.
Автор: anton