RpcEnv
实例位于何处,以及每个组件如何获得相应的rpcEnv
实例?组件如何相互连接?
答案 0 :(得分:1)
RpcEnv
是一个 RPC环境,它是为Spark中的每个组件单独创建的,用于在彼此之间交换消息以进行远程通信。
Spark为驱动程序和执行程序创建RPC环境(分别通过执行SparkEnv. createDriverEnv和SparkEnv.createExecutorEnv方法)。
SparkEnv.createDriverEnv
仅在SparkContext
is created for the driver:
_env = createSparkEnv(_conf, isLocal, listenerBus)
您可以自己使用RpcEnv.create
工厂方法创建RPC环境(与ExecutorBackends一样,例如CoarseGrainedExecutorBackend):
val env = SparkEnv.createExecutorEnv(
driverConf, executorId, hostname, cores, cfg.ioEncryptionKey, isLocal = false)
还为standalone Master和workers创建了单独的RpcEnv
。
组件如何相互连接?
这里没有多大的魔力:)首先创建Spark应用程序的驱动程序和Spark Standalone集群的独立Master,它们不依赖于其他组件。
当Spark应用程序的驱动程序启动时,它会使用命令启动执行程序(每个集群管理器不同)请求资源(以集群管理器的资源容器的形式)。在启动命令中,有驱动程序的RpcEndpoint的连接细节(即主机和端口)。
在Client中了解它如何与Hadoop YARN一起使用。
这是与独立Worker相似的过程,区别在于管理员必须在命令行指定主URL。
$ ./sbin/start-slave.sh
Usage: ./sbin/start-slave.sh [options] <master>
Master must be a URL of the form spark://hostname:port
Options:
-c CORES, --cores CORES Number of cores to use
-m MEM, --memory MEM Amount of memory to use (e.g. 1000M, 2G)
-d DIR, --work-dir DIR Directory to run apps in (default: SPARK_HOME/work)
-i HOST, --ip IP Hostname to listen on (deprecated, please use --host or -h)
-h HOST, --host HOST Hostname to listen on
-p PORT, --port PORT Port to listen on (default: random)
--webui-port PORT Port for web UI (default: 8081)
--properties-file FILE Path to a custom Spark properties file.
Default is conf/spark-defaults.conf.