Введение
Перейдем к обсуждению другого набирающего популярность и все чаще применяемого модуля распределенной аналитики.
Согласно исследованиям, MapReduce подходит для решения широкого спектра масштабных проблем, но не слишком хорошо справляется с распределенной обработкой графов и других приложений итеративного характера. Такие приложения представляют трудности в связи с масштабом задач (обычно это миллиарды вершин и триллионы ребер), плохим размещением, нехваткой данных и работы для вершин, а также изменением масштаба проблемы в ходе выполнения (когда график растет или сжимается с течением времени). Такие задачи, как аналитика веб-графов, обработка социальных сетей, обнаружение возможных вспышек заболеваний, вычисление транспортных маршрутов и сопоставление газетных статей, помимо прочего включают распределенную обработку крупномасштабных графов.
Этот модуль посвящен платформе Apache Spark. Spark — это платформа кластерных вычислений с открытым исходным кодом, разработанная в UC Berkeley AMPLab. За счет использования примитивов в памяти она работает в 100 раз быстрее с некоторыми приложениями, чем традиционное решение MapReduce.
Spark оптимизирован для трех классов параллельных распределенных приложений:
- Итеративные приложения, такие как большинство задач машинного обучения, которые выполняют итерацию набора данных для обучения до тех пор, пока не будет получена конвергенция.
- Интерактивные приложения, в которых после быстрой обработки запросов должны выдаваться результаты с низкой задержкой.
- Потоковые приложения, в которых входные данные постоянно поступают из одного или нескольких потоков, что ведет к обновлению сохраненного состояния.
Вокруг Spark образовалось несколько библиотек, что позволяет быстро выполнять запросы по типу SQL, приложения машинного обучения и приложения для вычисления графов. В этом модуле мы рассмотрим основную платформу Spark и некоторые части экосистемы Spark. Начнем с обзора архитектуры Spark, обсудим жизненный цикл отказоустойчивых распределенных наборов данных (RDD) (которые предоставляют распределенную абстракцию для выражения вычислений в памяти), подробно обсудим отказоустойчивость и восстановление и, наконец, рассмотрим несколько библиотек для разных типов вычислений в Spark.
Цели обучения
Изучив этот модуль, вы сможете:
- Вспомним возможности платформы итеративного программирования
- Опишем архитектуру и поток заданий в Spark
- Вспомним роль отказоустойчивых распределенных наборов данных (RDD) в Spark
- Опишем свойства RDD в Spark
- Сравним RDD с распределенными системами с общей памятью
- Опишем механизмы обеспечения отказоустойчивости в Spark
- Опишем роль журнала преобразований в RDD для отказоустойчивости и восстановления
- Разберемся в различных типах зависимостей между RDD
- Разберемся в основных операциях в RDD Spark
- Шаг за шагом создадим простую итеративную программу Spark
- Вспомним различные библиотеки Spark и их функции
Необходимые компоненты
- Понимание темы облачных вычислений, в том числе знакомство с моделями и некоторыми поставщиками облачных служб.
- Знание технологий, лежащих в основе облачных вычислений.
- Представление о том, как поставщики облачных служб управляют оплатой и выставлением счетов за использование облака.
- Знание понятия центров обработки данных и их назначения.
- Знания в области настройки, поддержки и подготовки центров обработки данных.
- Представление о том, как подготавливаются и измеряются облачные ресурсы.
- Знакомство с понятием виртуализации.
- Знание различных типов виртуализации.
- Представление о виртуализации ЦП.
- Представление о виртуализации памяти.
- Представление о виртуализации ввода-вывода.
- Знания различных типов данных и об их хранении
- Знакомство с распределенными файловыми системами и принципами их работы.
- Знакомство с базами данных NoSQL и хранилищем объектов, а также с принципами их работы
- Представление о том, что такое распределенное программирование и почему оно подходит для облачной среды
- Представление о MapReduce и о том, каким образом эта модель позволяет выполнять вычисления с большими объемами данных