热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Spark作业执行

Spark基本组件,Master和Worker,负责运行Client和Driver作业执行框架每个SparkApplication由主控节点Master、集群资源管理节点Clust

Spark基本组件,Master和Worker,负责运行Client和Driver

《Spark 作业执行》 作业执行框架

每个SparkApplication由主控节点Master、集群资源管理节点ClusterManager、执行任务节点Worker和执行单元Executor、负责提交作业的Client、负责作业控制的Driver组成的

SparkContext是应用程序和集群交互的唯一通道,包括:获取数据、交互操作、分析和构建DAG图、通过Scheduler调度任务、Block跟踪、Shuffle跟踪

提交作业有两种方式
Driver运行在集群中和运行在客户端,无论哪种方式,概念是一致的
Stage(根据Shuffle划分Stage)
Task(一个Stage包含多个Task,实现并行)
DAGScheduler(将作业分解成Stage,执行Task数量,生成TaskSet放到TaskScheduler)

基于Standalone模式

《Spark 作业执行》

各进程角色如下
Master:主控节点,接收Client提交的作业,管理Worker,命令Worker启动Driver和Executor
Worker:Slave节点,管理节点上的资源,定期向Master心跳汇报,接收Master命令
Client:客户端进程,提交作业到Master
Driver:Spark作业的主进程,负责DAG构建、Stage划分、Task管理和调度,包含多个组件
Executor:执行作业,一个Executor可以执行多个Task,每个Worker只能启动一个Executor

《Spark 作业执行》 作业执行流程

客户端提交应用程序给Master,指定一个Worker启动Driver,然后让其他Worker启动Executor,由Driver触发Executor启动Task执行

故障解决方案
Worker故障
Worker退出前会将Worker上的Executor杀掉,Master可以通过心跳感应到Worker故障,通知给Driver移除Worker节点

Executor故障
ExecutorRunner汇报给Worker,传递给Master,Master发送LanuchExecutor指令给Worker重新启动Executor

Master故障
通过Zookeeper搭建Master的HA,一个作为Active,其他作为Standby,Active节点故障能够及时切换

基于YARN模式

《Spark 作业执行》

SparkAppMaster相当于Driver

《Spark 作业执行》 作业执行流程

客户端生成作业信息,提交给ResourceManager,在与NodaManager通信时把AppMaster分配给NodeManager,启动SparkAppMaster。初始化作业并向ResourceManager申请资源后SparkAppMaster通过RPC让NodeManager启动相应的SparkExecutor。SparkClient通过AppMaster获取作业运行状态

作业调度

整个作业调度分为:生成RDD对象、构建DAGScheduler、任务调度、作业执行

《Spark 作业执行》 调度框架

  1. 生成RDD对象,根据输入RDD进行解析,构建DAG图。代码中的RDD进行转换操作是惰性的,只会产生标记不会立即执行。只有遇到执行操作时调用runJob方法提交至DAGScheduler,程序真正执行

  2. 构建DAGScheduler过程中,根据DAG划分Stage,提交任务集。首先将DAG划分成一个完整的Stage,从最后一个RDD往前回溯,不断判断RDD的依赖关系,如果是窄依赖则继续回溯,宽依赖则划分出一个新的Stage

  3. 任务调度过程中,通过集群管理器分配资源启动具体任务,并重试失败或运行较慢的任务

  4. 作业执行过程,执行任务,存储并管理数据块


推荐阅读
  • Hadoop 源码学习笔记(4)Hdfs 数据读写流程分析
    Hdfs的数据模型在对读写流程进行分析之前,我们需要先对Hdfs的数据模型有一个简单的认知。数据模型如上图所示,在NameNode中有一个唯一的FSDirectory类负责维护文件 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 开发笔记:Spark Java API 之 CountVectorizer
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了SparkJavaAPI之CountVectorizer相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • MapReduce 切片机制源码分析
     总体来说大概有以下2个大的步骤1.连接集群(yarnrunner或者是localjobrunner)2.submitter.submitJobInternal()在该方法中会创建 ... [详细]
  • SparkOnYarn在YARN上启动Spark应用有两种模式。在cluster模式下,Spark驱动器(driver)在YARNApp ... [详细]
  • Hadoop之Yarn
    目录1Hadoop1.x和Hadoop2.x架构区别2Yarn概述3Yarn基本架构4Yarn工作机制5作业提交全过程6资源调度器7任务的推测执行1Hadoop1.x和Hadoo ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • Java开发实战讲解!字节跳动三场技术面+HR面
    二、回顾整理阿里面试题基本就这样了,还有一些零星的问题想不起来了,答案也整理出来了。自我介绍JVM如何加载一个类的过程,双亲委派模型中有 ... [详细]
author-avatar
溪谷小兵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有