RpcEnv实例在哪里,驱动程序,主服务器或工作服务器?

时间:2017-05-22 07:07:21

标签: apache-spark rpc

RpcEnv实例位于何处,以及每个组件如何获得相应的rpcEnv实例?组件如何相互连接?

1 个答案:

答案 0 :(得分:1)

RpcEnv是一个 RPC环境,它是为Spark中的每个组件单独创建的,用于在彼此之间交换消息以进行远程通信。

Spark为驱动程序和执行程序创建RPC环境(分别通过执行SparkEnv. createDriverEnvSparkEnv.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 Masterworkers创建了单独的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.