Введение

Завершено

Перейдем к обсуждению другого набирающего популярность и все чаще применяемого модуля распределенной аналитики.

Согласно исследованиям, 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 и о том, каким образом эта модель позволяет выполнять вычисления с большими объемами данных