美文网首页
【Spark】SparkContex原理剖析

【Spark】SparkContex原理剖析

作者: 果果小姚 | 来源:发表于2018-06-30 18:24 被阅读9次

    哈哈!从今天开始认真学习Spark了

    SparkContext原理剖析

    初始化的工作机制如图:

    1).TaskSchedule:

    关于TaskScheduler

    第一步:创建TaskSchedulerImpl()、SparkDeploySchedulerBackend()实际上负责与Masterd的注册、Executor的反注册、task发送到Executor等操作。TaskSchedulerImpl()底层基于SparkDeploySchedulerBackend()来工作,而SchedulerPool有不同的优先策略(FIFO)。

    第二步:TaskSchedulerImpl()会调用start()方法,再继续调用SparkDeploySchedulerBackend()的start()方法,然后创建AppClient(它是一个接口,负责为application与spark集群进行通信,它会接收一个spark master的url,以及一个applicationDescription和一个集群事件的监听器,以及各种事件的回调函数),再由AppClient去创建线程ClientActor,调用registerMaster和tryRegisterAllMaster()方法。

    第三步:发送RegisterApplication(case class),里面封装了Application的信息。注册到Spark集群的Master节点上,执行Worker,再由Worker发送给Executor,并反向注册到SparkDeploySchedulerBackend()上去。

    2).DAGSchedule:

    关于 DAGScheduler

    DAGSchedule(它实现了面向stage的调度机制的高层次的调度层。会为每个Job计算一个stage的DAG,追踪RDD和stage的输出是否被物化了,并且寻找一个最优调度机制来运行Job。将stage作为taskset提交到底层的TaskSchedulerImpl上,来集群运行task。除了处理stage的DAG,还负责决定运行每个task的最佳位置,基于当前的缓存状态,将这些最佳位置提交给底层的TaskSchedulerImpl。如果由于shuffle输出文件丢失导致的失败,在这种情况下,旧的stage可能就会被重新提交,一个stage内部的失败,如果不是由于shuffle文件丢失所导致的,会被TaskSchedule处理)。主要创建DAGSchedulerEventProcessActor组件,底层基于该组件进行通信(线程)。

    3)SparkUI显示application()运行的状态。实际上是通过启动Jetty服务器,来提供web服务,从而显示网页。

    相关文章

      网友评论

          本文标题:【Spark】SparkContex原理剖析

          本文链接:https://www.haomeiwen.com/subject/shotuftx.html