Spark¶
Кластер¶
Группа компьютеров, объединённых высокоскоростными каналами связи, представляющая с точки зрения пользователя единый аппаратный ресурс.
Кластер - слабо связанная совокупность нескольких вычислительных систем, работающих совместно для выполнения общих приложений, и представляющихся пользователю единой системой
MapReduce¶
MapReduce — это фреймворк для вычисления некоторых наборов распределенных задач с использованием большого количества компьютеров (называемых «нодами»), образующих кластер.
Работа MapReduce состоит из двух шагов: Map и Reduce, названных так по аналогии с одноименными функциями высшего порядка, map и reduce.
На Map-шаге происходит предварительная обработка входных данных. Для этого один из компьютеров (называемый главным узлом — master node) получает входные данные задачи, разделяет их на части и передает другим компьютерам (рабочим узлам — worker node) для предварительной обработки.
На Reduce-шаге происходит свёртка предварительно обработанных данных. Главный узел получает ответы от рабочих узлов и на их основе формирует результат — решение задачи, которая изначально формулировалась.
Data locality¶
~ Код распределяется по кластеру и выполняется на всех собранных данных. Паралельно обрабатывает данные и собирается в одно место (mapReduce).
RDD¶
RDD - Resilient Distributed Dataset (Dataset, над которым можно делать преобразования двух типов)
- Dataset
+-Stream. Представляют собой коллекции
- Distrubuted
Распределенные коллекции
- Resilient
Отвечает за востановление данных, при возникновении ошибки на ноде с частью данных
Трансформации¶
Результатом применения данной операции к RDD является новый RDD. Как правило, это операции, которые каким-либо образом преобразовывают элементы данного датасета
map, filter, distinct, union, intersection, cartesian
Действия¶
Применяются тогда, когда необходимо материализовать результат — как правило, сохранить данные на диск, либо вывести часть данных в консоль
saveAsTextFile, collect, take, count, reduce
Dataset¶
Strongly-typed like an RDD, with richer optimizations under the hood
Dataset - распределенная коллекция айтемов, primary abstraction.
Dataset могут быть созданы через Hadoop InputFormats (such as HDFS files) или через преобразование других Dataset.
SparkContext¶
SparkContext - обьект, который отвечает за реализацию более низкоуровневых операций с кластером.
~ Обращение к ResourceManager (при сабмите приложения), смотрит какую конфигурацию нужно задействовать, сколько памяти было передано и тд. Выбирает ноду, являющуюся ApplicationMaster.