1. Запустите кластер Spark, который должен выполнить Sbin/start-all.sh, запустить мастер и несколько рабочих узлов. Мастер в основном используется в качестве управления и мониторинга кластера, а узел работника в основном отвечает за запуск различных приложений. Мастер -узел должен позволить узлу работника сообщать о своем собственном статусе, таком как ЦП и насколько велика память. Этот процесс завершен с помощью механизма сердцебиения
2. После того, как мастер получает информацию отчета работника, он предоставит информацию работнику.
3. Драйвер представляет задачи по зажиганию кластера [связь между драйвером и мастером выполняется через Akkaactor, то есть Master является моделью актера в асинхронной модели связи Akkaactor, а драйвер одинаково. Драйвер асинхронно отправляет информацию о регистрации (RegistryApplication) асинхронно для освоения]
4. Мастер -узел оценивает приложение, 7 г памяти завершает задачу, выделяет задачи, и каждый узел рабочего узел выделяет 3,5 г памяти для выполнения задач. В мастере задачи на каждом работнике контролируются и запланированы в целом.
5. Рабочий узел получает задачу и начинает выполнение. Запускает соответствующий процесс исполнителя в рабочем узле для выполнения. У каждого исполнителя есть концепция пула потоков, которая содержит несколько потоков задач.
6. Исполнитель избавит задачу из пула потоков для расчета данных в RDDPatition, Operations Trustrain и Operations.
7. Рабочий узел сообщает о состоянии расчета в узле драйвера
Создать RDD с локальной коллекцией параллелизации
открытый класс javalocalsumapp {public static void main (string [] args) {sparkConf conf = new SparkConf (). setAppName ("javalocalsumapp"); javasparkcontext sc = new JavasparkContext (conf); listger> lists = arrays.aslist (1,3,5,6,6,7,8); <Integer> listrdd = sc.parallelize (list); // sum integer sum = listdd.reduce (new function2 <integer, Integer, Integer, Integer> () {@переопределить публичный интелляционный вызов (Integer v1, integer v2) trows exection {return v1+v2;}); Программирование в Java требует установки компилятора на 1.8Listrdd.reduce ((V1, V2) => v1+v2)Спредсформация и операции действий
RDD: набор распределенных данных Elastic, представляет собой коллекцию, которая поддерживает множество источников, имеет механизм, устойчивый к неисправности, может быть кэширован и поддерживает параллельные операции. RDD представляет собой набор данных в разделе.
RDD имеет два операционных оператора:
Преобразование: преобразование - это расчет задержки. Когда один RDD преобразуется в другой RDD, он не конвертируется сразу. Он помнит логические операции набора данных.
Действие: запускает работу зачаточных заданий и действительно запускает расчет оператора конверсии.
Роль оператора Spark
На этом рисунке описывается Spark преобразует RDD через операторы во время преобразования. Операторы - это функции, определенные в RDD, которые могут преобразовать и эксплуатировать данные в RDD.
Ввод: Во время работы программы Spark данные вводятся для Spark от внешнего пространства данных (например, распределенное хранилище: TextFile для чтения HDF и т. Д., А метод параллелизирования вводит сбор или данные SCALA), а данные вводят в пространство данных Spark Runtime, преобразует его в блоки данных в Spark и управляется через Blockmaner.
Запуск: после того, как ввод данных Spark вводится для формирования RDD, его можно пропустить через оператор преобразования, такой как фильтр и т. Д., Используйте данные и преобразуйте RDD в новый RDD. Через оператора действия Spark представляет работу. Если данные должны быть мультиплексированы, данные могут быть кэшированы в памяти через оператор кэша.
Вывод: данные после запуска программы будут выводиться для зажигания пространства выполнения выполнения и сохранены в распределенном хранилище (например, вывод SaveAstextFile в HDF), или данные или сбор Scala (собирайте вывод в сбор Scala, Count возвращает данные типа Scala Int)
Обзор операции преобразования и действий
Трансформация
Карта (func): возвращает новый распределенный набор данных, состоящий из каждого исходного элемента после преобразования функцией Func
Filter (func): возвращает новый набор данных, прошел через функцию Func
Flatmap (func): аналогично карте, но каждый входной элемент будет сопоставлен с 0 с несколькими выходными элементами (поэтому возвращаемое значение функции Func - это SEQ, а не один элемент)
Образец (соблюдение, FRAC, SEED): Согласно данным случайным семенам, данные с несколькими FRAC отображаются случайным образом.
Union (orhefeDataset): возвращает новый набор данных, состоящий из исходного набора данных и параметров
roupbykey ([numtasks]): вызовет на набор данных, состоящий из пар (k, v), возвращая набор данных (k, seq [v]). Примечание. По умолчанию 8 параллельных задач используются для группировки. Вы можете передавать дополнительные параметры NUMTASK и установить различные числа задач в соответствии с объемом данных.
CreadBykey (func, [Numtasks]): используется в наборе данных (k, v) пары, верните набор данных A (k, v), одно и то же значение клавиши агрегируется вместе с использованием указанной функции Cream. Подобно GroupBykey, количество задач можно настроить со вторым необязательным параметром.
Присоединяйтесь (otherdataset, [numtasks]): вызовы в наборе данных типов (k, v) и (k, w), возвращая пара (k, (v, w)), и все элементы в каждом ключе вместе.
Groupwith (otherdataset, [numtasks]): вызовет на набор данных типов (k, v) и (k, w) и возвращает набор данных с компонентами (k, seq [v], seq [w]). Эта операция находится в других структурах, называемых Cogroup
Картезианский (другой датасет): декартовый продукт. Но при вызове наборов данных t и u возвращается набор данных (T, U) пары, и все элементы взаимодействуют с декартовым продуктом.
Действия
Уменьшить (func): объединить все элементы в наборе данных через функцию фанк. Функция Func принимает 2 параметры и возвращает значение. Эта функция должна быть связана, чтобы убедиться, что она может быть выполнена правильно и одновременно
Collect (): В программе водителя верните все элементы набора данных в качестве массива. Это обычно возвращает достаточно небольшой подмножество данных после использования фильтра или других операций и непосредственно возвращает весь сбор RDD, что, вероятно, сделает программу драйвера OOM
count (): возвращает количество элементов в наборе данных
Возьмите (n): возвращает массив, состоящий из первых N -элементов набора данных. Обратите внимание, что эта операция в настоящее время не выполняется параллельно на нескольких узлах, но является машиной, где находится программа драйверов, и все элементы рассчитываются с помощью одной машины (давление памяти шлюза увеличится, и ее необходимо использовать с осторожностью)
First (): возвращает первый элемент набора данных (аналогично Take (1))
SaveaStextFile (Path): Сохраните элементы набора данных в форме текстового файла в локальную файловую систему, HDFS или любую другую файловую систему, поддерживаемую Hadoop. Spark вызовет метод ToString каждого элемента и преобразует его в линию текста в файле.
Saveas SecrenceFile (PATH): Сохраните элементы набора данных в формате PequenceFile в указанный каталог, локальную систему, HDFS или любую другую файловую систему, поддерживаемую Hadoop. Элементы RDD должны состоять из пар ключевых значений, и все они внедряют записи для записи Hadoop, или они могут быть неявно преобразовать в записи (Spark включает преобразование основных типов, такие как Int, Double, String и т. Д.)
Foreach (func): запустите функцию фанк на каждом элементе набора данных. Это обычно используется для обновления переменной аккумулятора или для взаимодействия с внешней системой хранения
Процесс выполнения WordCount
Суммировать
Выше приведено все содержание этой статьи о принципах архитектуры планирования Spark. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!