深入理解Spark:核心思想与源码分析. 3.13 创建DAGSchedulerSource和BlockManagerSource...

    xiaoxiao2023-12-30  157

    3.13 创建DAGSchedulerSource和BlockManagerSource

    在创建DAGSchedulerSource、BlockManagerSource之前首先调用taskScheduler的post-StartHook方法,其目的是为了等待backend就绪,见代码清单3-53。postStartHook的实现见代码清单3-54。

    创建DAGSchedulerSource和BlockManagerSource的过程类似于ExecutorSource,只不过DAGSchedulerSource测量的信息是stage. failedStages、stage. runningStages、stage. waiting-Stages、stage. allJobs、stage. activeJobs,BlockManagerSource测量的信息是memory. maxMem_MB、memory. remainingMem_MB、memory. memUsed_MB、memory. diskSpace-Used_MB。

    代码清单3-53 创建DAGSchedulerSource和BlockManagerSource

        taskScheduler.postStartHook()

     

        private val dagSchedulerSource = new DAGSchedulerSource(this.dagScheduler)

        private val blockManagerSource = new BlockManagerSource(SparkEnv.get.blockManager)

     

    private def initDriverMetrics() {

        SparkEnv.get.metricsSystem.registerSource(dagSchedulerSource)

        SparkEnv.get.metricsSystem.registerSource(blockManagerSource)

    }

     

    initDriverMetrics()

    代码清单3-54 postStartHook的实现

    override def postStartHook() {

            waitBackendReady()

        }

     

    private def waitBackendReady(): Unit = {

        if (backend.isReady) {

            return

        }

        while (!backend.isReady) {

            synchronized {

                this.wait(100)

            }

        }

    }

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)