开发者社区> 问答> 正文

创建SparkEnv获取ActorSystem的作用是什么?

创建SparkEnv获取ActorSystem的作用是什么?

展开
收起
游客fbdr25iajcjto 2021-12-06 22:13:33 617 0
1 条回答
写回答
取消 提交回答
  • 创建SparkEnv获取ActorSystem,这一步的主要的作用是创建ActorSystem对象以后根据这个对象来创建相应的Actor

    //TODO 该方法创建了一个SparkEnv private[spark] def createSparkEnv( conf: SparkConf, isLocal: Boolean, listenerBus: LiveListenerBus): SparkEnv = { SparkEnv.createDriverEnv(conf, isLocal, listenerBus) }

    主要调用SparkEnv类的createDriverEnv()方法获取SparkEnv对象,createDriverEnv()主要调用SparkEnv的create()方法,这里代码大约

    在SparkEnv的154行,代码具体如下:

    private[spark] def createDriverEnv( conf: SparkConf, isLocal: Boolean, listenerBus: LiveListenerBus, mockOutputCommitCoordinator: Option[OutputCommitCoordinator] = None): SparkEnv = { assert(conf.contains("spark.driver.host"), "spark.driver.host is not set on the driver!") assert(conf.contains("spark.driver.port"), "spark.driver.port is not set on the driver!") val hostname = conf.get("spark.driver.host") val port = conf.get("spark.driver.port").toInt //TODO 调用create()方法 create( conf, SparkContext.DRIVER_IDENTIFIER, hostname, port, isDriver = true, isLocal = isLocal, listenerBus = listenerBus, mockOutputCommitCoordinator = mockOutputCommitCoordinator ) }

    createDriverEnv()内部主要调用create()方法,重要的代码如下:

    // Create the ActorSystem for Akka and get the port it binds to. val (actorSystem, boundPort) = { val actorSystemName = if (isDriver) driverActorSystemName else executorActorSystemName //TODO 利用AkkaUtils这个工具类创建ActorSystem AkkaUtils.createActorSystem(actorSystemName, hostname, port, conf, securityManager) }

    这个方法的主要作用是调用AkkaUtils这个工具类创建ActorSystem。

    2021-12-06 22:15:33
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
Phoenix 全局索引原理与实践 立即下载
fibjs 模块重构从回调到协程--陈垒 立即下载