Первым шагом любого приложения драйвера Spark является создание SparkContext. SparkContext позволяет приложению драйвера Spark получать доступ к кластеру через менеджер ресурсов. Диспетчером ресурсов может быть YARN или диспетчер кластеров Spark. Чтобы создать SparkContext, вы должны сначала создать SparkConf. SparkConf хранит параметры конфигурации, которые ваше приложение драйвера Spark передает в SparkContext. Некоторые из этих параметров определяют свойства вашего приложения драйвера Spark, а некоторые используются Spark для распределения ресурсов в кластере. Например, количество, объем памяти и количество ядер, используемых исполнителями, работающими на рабочих узлах. setAppName () дает вашему приложению драйвера Spark имя, чтобы вы могли идентифицировать его в пользовательском интерфейсе Spark или Yarn.
SparkConf передается в SparkContext, поэтому наше приложение драйвера знает, как получить доступ к кластеру.
Теперь, когда у вашего приложения драйвера Spark есть SparkContext, оно знает, какой менеджер ресурсов использовать, и может запросить у него ресурсы на кластере. Если вы используете YARN, Had oop resourcemanager (headnode) и nodemanager (workernode) будут работать для выделения контейнера для исполнителей. Если ресурсы доступны в кластере, исполнители будут распределять память и ядра на основе ваших параметров конфигурации. Если вы используете диспетчер кластеров Sparks, SparkMaster (головной узел) и SparkSlave (рабочий узел) будут использоваться для выделения исполнителей.
Каждое приложение драйвера Spark имеет своих собственных исполнителей в кластере, которые продолжают работать до тех пор, пока Приложение Spark Driver имеет SparkContext. Исполнители запускают пользовательский код, выполняют вычисления и могут кэшировать данные для вашего приложения. SparkContext создаст задание, разбитое на этапы. Этапы разбиты на задачи, которые планируются SparkContext на исполнителя.