• Spark的应用架构和程序层次结构


    Spark应用架构

    • spark运行群集架构图:
      在这里插入图片描述

    • 从图中可以看到Spark Application运行到集群上时,由Driver Program和Executors两个部分组成。

      • Driver Program:
        • 相当于AppMaster,整个应用管理者,负责应用中所有Job的调度执行。
        • 运行JVM Process,运行程序的MAIN函数,必须创建SparkContext上下文对象。
        • 一个SparkApplication仅有一个。
      • Executors:
        • 相当于一个线程池,运行JVM Process,其中有很多线程,每个线程运行一个Task任务,一个Task任务运行需要1 Core CPU,所有可以认为Executor中线程数就等于CPU Core数。
        • 一个Spark Application可以有多个,可以设置个数和资源信息。
    • 程序开始提交到最终的计算执行阶段:

      1. 用户程序创建 SparkContext 时,新创建的 SparkContext 实例会连接到 ClusterManager。 Cluster Manager 会根据用户提交时设置的 CPU 和内存等信息为本次提交分配计算资源,启动 Executor。
      2. Driver会将用户程序划分为不同的执行阶段Stage,每个执行阶段Stage由一组完全相同Task组成,这些Task分别作用于待处理数据的不同分区。在阶段划分完成和Task创建后, Driver会向Executor发送 Task。
      3. Executor在接收到Task后,会下载Task的运行时依赖,在准备好Task的执行环境后,会开始执行Task,并且将Task的运行状态汇报给Driver。
      4. Driver会根据收到的Task的运行状态来处理不同的状态更新。 Task分为两种:一种是Shuffle Map Task,它实现数据的重新洗牌,洗牌的结果保存到Executor 所在节点的文件系统中;另外一种是Result Task,它负责生成结果数据。
      5. Driver 会不断地调用Task,将Task发送到Executor执行,在所有的Task都正确执行或者超过执行次数的限制仍然没有执行成功时停止。

    监控页面端口号的区别

    1. 4040:一个运行的Application在运行的过程中临时绑定的端口,用以查看当前任务的状态(端口占用会顺延)。4040是一个临时端口,当前程序运行完成后就会被注销
    2. 8080:默认是StandAlone下, Master角色(进程)的WEB端口,用以查看当前Master(集群)的状态(端口占用会顺延)。
    3. 18080:历史服务器的端口, 由于每个程序运行完成后,4040端口就被注销,如果以后想回看某个程序的运行状态就可以通过历史服务器查看,历史服务器长期稳定运行,可供随时查看被记录的程序的运行过程。

    Spark程序运行层次结构

    • 在一个Spark Application中,包含多个Job,每个Job有多个Stage组成,每个Job执行按照DAG图进行的。每个Stage中包含多个Task任务,每个Task以线程Thread方式执行,需要1Core CPU。
    • Spark Application程序运行时三个核心概念:Job、Stage、Task:
      • Job:由多个Task的并行计算部分,一般Spark中的Action操作会生成一个Job。
      • Stage:Job的组成单位,一个Job会切分成多个Stage,Stage之间彼此之间相互依赖顺序执行,而每个Stage是多个Task集合,类似MapReduce stage。
      • Task:被分配到各个Executor的单位工作内容,它是Spark中最小的执行单位,一般来说有多少个Partition就会有多少个Task,每个Task智慧处理单一分支上的数据。
        在这里插入图片描述
  • 相关阅读:
    javascript中依次输出元素并不断循环实现echarts柱图动画效果
    CompletableFuture多任务异步,获取返回值,汇总结果
    如何在时间循环里最优决策——时间旅行者的最优决策
    说一下 ArrayList 和 LinkedList 的区别?
    openEuler安全配置规范基线
    SSE、Webworker 、webSocket、Http、Socket 服务器推送技术
    24.GRASP模式
    ClickHouse 挺快,esProc SPL 更快
    windows下gdal的java开发环境搭建
    002讲:CAD2024下方任务栏不显示坐标解决方案——CAD知识讲堂
  • 原文地址:https://blog.csdn.net/sinat_31854967/article/details/127732943