zoukankan      html  css  js  c++  java
  • Spark Executor 概述

    Spark Executor 工作原理:

        1. 在CoarseGrainedExecutorBackend启动时向Driver注册Executor,其实质是注册ExecutorBackend实例,和Executor实例之间没有直接关系

        2. CoarseGrainedExecutorBackend 是 Executor 运行所在的进程名称,Executor才是真正处理Task的对象。Executor内部是通过线程池的方式来完成Task的计算的

        3. CoarseGrainedExecutorBackend 和 Executor是一一对应的

        4. CoarseGrainedExecutorBackend 是一个消息通信体(其具体实现了ThreadSafeRPCEndpoint),可以发送信息给Driver并可以接受Driver中发过来的指令,例如启动Task等

        5. 在Driver进程有两个至关重要的Endpoint:

                 a)    ClientEndpoint : 主要负责向Master 注册当前的程序, 是AppClient的内部成员;

                 b)   DriverEndpoint: 这是整个程序运行时候的驱动器,是CoarseGrainedSchedulerBackend的内部成员;

        6. 在Driver中通过ExecutorData封装并注册ExecutorBackend的信息到Driver的内存数据结构executorMapData中;

        7. 实际在执行的时候,DriverEndPoint会把信息写CoarseGrainedSchedulerBackend的内存数据结构executorMapData,所以说最终是注册给了 CoarseGrainedSchedulerBackend,也就是说CoarseGrainedExecutorBackend 掌握了为当前程序分配的所有的ExecutorBackend进程,而在每一个ExecutorBackend进程实例中会通过 Executor对象来负责具体Task的运行。

        8. CoarseGrainedExecutorBackend 收到 DriverEndpoint 发送过来的 RegisteredExecutor 消息后启动 Executor 实例对象,而Executor实例对象是事实上负责真正Task计算的

    Executor具体是如何工作的:

        1. 当Driver发送过来Task的时候,其实是发送给了CoarseGrainedExecutorBackend这个RpcEndpoint, 而不是直接发送给了Executor

        2. ExecutorBackend在收到Driver中发送过来的消息后会提供调用lauchTask来交给Executor去执行

    下图是各个Endpoint之间的消息通信图,可以通过查看原图看到完整的图。

  • 相关阅读:
    Devrama Slider
    全栈开发必备的10款 Sublime Text 插件
    经典网页设计:使用颜色滤镜效果的20个网站
    Nibbler – 免费的网站测试和指标评分工具
    使用 HTML5 Canvas 绘制出惊艳的水滴效果
    Qt4 和 Qt5 模块的分类
    设计Qt风格的C++API
    Qt属性系统
    Qt实现艺术字效果
    Qt中容器类应该如何存储对象(最好使用对象指针类型,如:QList<TestObj*>,而不要使用 QList<TestObj> 这样的定义,建议采用 智能指针QSharedPointer)
  • 原文地址:https://www.cnblogs.com/langfanyun/p/8097680.html
Copyright © 2011-2022 走看看