zoukankan      html  css  js  c++  java
  • Spark架构角色及基本运行流程

    1. 集群角色

    • Application:基于spark的用户程序,包含了一个Driver program 和集群中多个Executor
    • Driver Program:运行application的main()函数并自动创建SparkContext。Driver program通过一个SparkContext对象来访问Spark,通常用SparkContext代表Driver。
    • SparkContext: Spark的主要入口点,代表对计算集群的一个连接,是整个应用的上下文,负责与ClusterManager通信,进行资源申请、任务的分配和监控等。
    • ClusterManager:在集群上获得资源的外部服务(spark standalone,mesos,yarm),Standalone模式:Spark原生的资源管理,由Master负责资源,YARN模式Yarn中的ResourceManager
    • Worker Node:集群中任何可运行Application代码的节点,负责控制计算节点,启动Executor或者Driver(Standalone模式:Worder,Yarn模式:NodeManager)
    • Executor为某个Application在worker node上执行任务的一个进程,该进程负责运行task并负责将数据存储在内存或者硬盘上,每个application都有自己独立的一组Executors。
    • RDD:弹性分布式数据集,是spark 的基本运算单元,通过scala集合转化读取数据集生成或者由其他RDD进过算子操作得到
    • Job:可以被拆分成Task并行计算的单元,一般为Spark Action触发的一次执行作业
    • Stage:每个Job会被拆分成很多组Task,每组任务被称为Stage,也可称TaskSet,该属于经常在日志中看到
    • Task:被送到executor上执行的工作单元

    2. 基本运行流程

    SparkContext的初始化过程中,Spark会分别创建DAGScheduler作业和TaskScheduler任务调度两级调度模块:

    • DAG Scheduler:根据作业(Job)构建基于Stage的DAG,并将DAG分解成Stage以TaskSets(任务组)的形式提交给任务调度模块Task Scheduler来具体执行
    • Task Scheduler:将任务(Task)分发给Executor执行

    详细的流程为:

    1. Application启动之后, 会在本地启动一个Driver进程,用于控制整个流程(假设我们使用的Standalone模式);
    2. 初始化SparkContext构建出DAGScheduler、TaskScheduler,以SparkContext为程序运行的总入口;
    3. 在初始化TaskSechduler的时候,它会向资源管理器(Standalone中是Master)注册Application,Master收到消息后使用资源调度算法在Spark集群的Worker上启动Executor并进行资源的分配,最后将Executor注册到TaskScheduler
    4. 资源管理器分配Executor资源并启动StandaloneExecutorBackendExecutor运行情况将随着心跳发送到资源管理器上,到这里准备工作基本完成了;
    5. 根据我们编写的业务,如通过sc.textFile("file")加载数据源,将数据转化为RDD;
    6. DAGScheduer  先按照Action将程序划分为一至多个job(每一个job对应一个DAG),之后DAGScheduer根据是否进行shuffer将job划分为多个Stage,每个Stage过程都是Taskset , DAG将Taskset交给TaskScheduler(由Work中的Executor去执行)
    7. Executor向SparkContext申请Task
    8. Task Scheduler将Task发放给Executor运行,同时SparkContext将应用程序代码发放给Executor
    9. Task在Executor上运行,运行完毕释放所有资源
  • 相关阅读:
    Java面向对象类与对象整理
    Java案例整理
    Java引用类型传递整理
    Java基础方法整理
    Java流程控制语句和数组整理
    Java流程语句
    Java运算符和引用数据类型(Scanner、Random)
    Java概念、语法和变量基础整理
    Mysql连接查询、子查询、联合查询 整理
    Mysql数据约束 整理
  • 原文地址:https://www.cnblogs.com/MWCloud/p/11404967.html
Copyright © 2011-2022 走看看