Я пытаюсь понять два режима развертывания, Client and Cluster
Видел этот и другие ответы https://stackoverflow.com/questions/37027732/apache-spark-differences-between-client-and-cluster-deploy-modes
, но не получил четкого видения.
Представьте, это 5 узлов кластер, включая главный узел. И Yarn
- это что-то, что отвечает за взаимодействие всех рабочих узлов и указание всем рабочим узлам использовать, сколько ресурсов они могут использовать. Допустим, он работает по URL-адресу IamYarn:100.com
на главном узле (MasterNode.com
).
Программа драйвера, также известная как инициализация SparkContext + SparkConf
. После инициализации конечным результатом будет resource information which will be used by all worker nodes
и Operator graph
, что имеет последовательность преобразований и действий. Дальнейший график разбивается на разные этапы (каждый этап представляет собой одно RDD), и каждый этап планируется как задача в Task Scheduler
. Итак, выведите программу Driver, которая представляет собой не что иное, как набор всех инструкций из нашей программы Spark, и запланируйте ее в диспетчере задач.
Затем Spark использует yarn в качестве диспетчера ресурсов, который помогает распределять все задачи и данные между рабочими узлами.
Надеюсь, мои знания пока верны.
ClientMode:
Драйвер выполняется на выделенном сервере (главном узле) внутри выделенного процесса, а ClusterMode:
Driver - на одном из рабочих узлов кластера. Почему требуются эти два типа режимов, программа Can't Driver всегда работает только на главном узле? И укажите c причину отличия?