【Spark内核源码】Spark执行环境,SparkEnv

目录

SparkEnv简述

解析create方法

0、解析之前

1、建立安全管理器securityManager

2、建立RpcEnv

3、创建serializerManager和closureSerializer

4、创建广播管理器broadcastManager

5、创建map输出跟踪器mapOutputTracker

6、构建存储体系

7、创建地量系统metricsSystem

8、创建输出提交协调器outputCommitCoordinator

9、正式创建SparkEnv


SparkEnv简述

Java程序运行需要Java运行环境,Scala程序运行需要Scala运行环境,同样Spark程序运行也需要Spark运行环境,这个运行环境就是SparkEnv。SparkEnv中保留了所有运行的spark实例(master或worker)中运行的环境对象。具体包括的内容如下图所示:

SparkEnv中保存的运行对象

 SparkEnv的代码结构不算复杂,提供了停止方法和建立、销毁、释放pysparkworker的方法。其主要核心代码,在SparkEnv伴生对象中。

SparkEnv伴生对象提供了创建Driver运行环境和Executor运行环境的方法。

创建Driver运行环境的方法如下:

private[spark] def createDriverEnv(
      conf: SparkConf,
      isLocal: Boolean,
      listenerBus: LiveListenerBus,
      numCores: Int,
      mockOutputCommitCoordinator: Option[OutputCommitCoordinator] = None): SparkEnv = {
    /** spark.driver.host 校验Driver对外宣称的地址 */
    assert(conf.contains(DRIVER_HOST_ADDRESS),
      s"${DRIVER_HOST_ADDRESS.key} is not set on the driver!")
    /** spark.driver.port 校验Driver端口号 */
    assert(conf.contains("spark.driver.port"), "spark.driver.port is not set on the driver!")
    /**
      * Driver绑定的地址:DRIVER_BIND_ADDRESS:
      * 优先获取顺序依次是:spark.driver.bindAddress-》spark.driver.host-》Utils.localHostName()
      * Driver对外宣称的地址:DRIVER_HOST_ADDRESS
      * 优先获取顺序依次是:spark.driver.host-》Utils.localHostName()
      * Dirver的端口:port:从spark.driver.port中获取
      *
      * */
    val bindAddress = conf.get(DRIVER_BIND_ADDRESS)
    val advertiseAddress = conf.get(DRIVER_HOST_ADDRESS)
    val port = conf.get("spark.driver.port").toInt
    /** park.io.encryption.enabled默认是fasle,当为true时,建立密钥 */
    val ioEncryptionKey = if (conf.get(IO_ENCRYPTION_ENABLED)) {
      Some(CryptoStreamUtils.createKey(con
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值