【Spark精讲】Spark任务运行流程

这篇具有很好参考价值的文章主要介绍了【Spark精讲】Spark任务运行流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Spark任务执行流程

Client模式

Cluster模式

Yarn任务运行流程

YARN-CLIENT模式

YARN-CLUSTER模式

​编辑

故障排查

YARN-CLIENT 模式导致的网卡流量激增问 题

YARN-CLUSTER 模式的 JVM 栈内存溢出无法执行问题


Spark任务执行流程

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据        部署模式是根据Drvier和Executor的运行位置的不同划分的。client模式提交任务与Driver进程在同一个节点上,而cluster模式提交任务与Driver进程不在同一个节点。       

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

Client模式

Clinet模式是在spark-submit提交任务的节点上运行Driver进程。

执行流程:

  1. spark-submit脚本提交任务直接启动Driver进程运行main函数
  2. 构造SparkConext
  3. 向Master注册Application
  4. 由Master通知启动Executor
  5. Executor再注册到Driver

在 Spark 项目开发阶段,可以使用 client 模式对程序进行测试,此时,可以在本地看到比较全的日志信息。

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

Cluster模式

Cluster模式是在Worker节点上运行Driver进程。

执行流程:

  1. 由spark-submit脚本启动临时进程
  2. 通知Master在某个Worker上启动Driver进程运行main函数
  3. 初始化SparkConext
  4. 向Master注册Application
  5. 由Master通知启动Executor
  6. Executor再注册到Driver

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

Yarn任务运行流程

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

Yarn的组件主要包括:

  1. ResourceManager : 资源管理
  2. Application Master : 任务调度
  3. NodeManager : 节点管理,负责执行任务 

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

当向YARN提交一个应用程序之后,YARN将分两个阶段运行程序:一是启动ApplicationMaster;二是由ApplicationMaster创建应用程序,然后为他申请资源,监控程序的运行,直至结束。

具体步骤:

  1. 用户向YARN中提交应用程序。

  2. ResourceManager为该应用程序分配第一个Container,要求它在这个Container中启动应用程序的ApplicationMaster。

  3. ApplicationMaster首先向ResourceManager注册,目的是让用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束。

  4. ApplicationMaster向ResourceManager 的 scheduler申请和领取资源(通过RPC协议)。

  5. ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务(java进程)。

  6. NodeManager启动任务。

  7. 各个任务向ApplicationMaster汇报自己的状态和进度(通过RPC协议),以便让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。

  8. 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。

YARN-CLIENT模式

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

        Driver是一个JVM进程,Driver就是我们写的Spark程序,我们写的Spark程序打包成jar包后通过spark-submit脚本提交,jar中的main方法通过jvm命令启动起来,Driver进程启动会执行我们的main函数。

        Driver接收到属于自己Executor进程注册之后,就会去执行Spark作业代码。Driver会一样一行的去执行Spark代码,执行到某个action操作的时候,就会触发一个job,然后DAGScheduler会把job划分成一个一个的stage,为每个stage都创建指定数量的task;TaskScheduler将每个Stage的task分配到各个Executor上去执行,随后task就会执行算子函数。

        Application Maser是YARN中的核心概念。Application Maser(ExecutorLauncher)负责Executor的申请,Driver负责Job和Stage的划分以及Task的创建、分配和调度。

YARN-CLUSTER模式

spark 工作流程,Spark精讲,Spark,大数据,spark,大数据

YARN-client和YARN-cluster的不同之处:

  1. YARN-client模式,Driver运行在本地机器上; YARN-cluster模式,Driver运行在YARN集群上某个NodeManager节点上;
  2. YARN-client模式会导致本地机器负责Spark任务的调度,所以网卡流量会激增;YARN-cluster模式没有流量激增的问题;
  3. YARN-client的Driver运行在本地,通常来说本地机器和YARN集群不在同一个机房,所以说性能不会很好;YARN-cluster模式下,Driver和YARN集群运行在同一个机房内,性能上来说会好一点。

故障排查

YARN-CLIENT 模式导致的网卡流量激增问 题

在 YARN-client 模式下,Driver 启动在本地机器上,而 Driver 负责所有的任务调度,需要与 YARN 集群上的多个 Executor 进行频繁的通信。

假设有 100 个 Executor, 1000 个 task,那么每个 Executor 分配到 10 个 task,之后, Driver 要频繁地跟 Executor 上运行的 1000 个 task 进行通信,通信数据非常多,并且通信频率特别高。这就导致有可能在 Spark 任务运行过程中,由于频繁大量的网络通讯,本地机器的网卡流量会激增。

注意,YARN-client 模式只会在测试环境中使用,而之所以使用 YARN-client 模式,是由于可以看到详细全面的 log 信息,通过查看 log,可以锁定程序中存在的问题,避免在生产环境下发生故障。

在生产环境下,使用的一定是 YARN-cluster 模式。在 YARN-cluster 模式下,就不会造成本地机器网卡流量激增问题,如果 YARN-cluster 模式下存在网络通信的问题,需要运维团队进行解决。

YARN-CLUSTER 模式的 JVM 栈内存溢出无法执行问题

当 Spark 作业中包含 SparkSQL 的内容时,可能会碰到 YARN-client 模式下可以运行,但是 YARN-cluster 模式下无法提交运行(报出 OOM 错误)的情况。

YARN-client 模式下,Driver 是运行在本地机器上的,Spark 使用的 JVM 的 PermGen 的配置,是本地机器上的 spark-class 文件,JVM 永久代的大小是 128MB,这个是没有问题的, 但是在 YARN-cluster 模式下,Driver 运行在 YARN 集群的某个节点上,使用的是没有经过配置的默认设置,PermGen 永久代大小为 82MB。

SparkSQL 的内部要进行很复杂的 SQL 的语义解析、语法树转换等等,非常复杂,如果 sql 语句本身就非常复杂,那么很有可能会导致性能的损耗和内存的占用,特别是对 PermGen 的占用会比较大。

所以,此时如果 PermGen 的占用好过了 82MB,但是又小于 128MB,就会出现 YARN- client 模式下可以运行,YARN-cluster 模式下无法运行的情况。

解决上述问题的方法时增加 PermGen 的容量,需要在 spark-submit 脚本中对相关参数进行设置,设置方法如代码清单所示。

--conf spark.driver.extraJavaOptions="-XX:PermSize=128M -XX:MaxPermSize=256M"

通过上述方法就设置了 Driver 永久代的大小,默认为 128MB,最大 256MB,这样就可以避免上面所说的问题。文章来源地址https://www.toymoban.com/news/detail-846161.html

到了这里,关于【Spark精讲】Spark任务运行流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 大数据面试题:Spark的任务执行流程

    大数据面试题:Spark的任务执行流程

    面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答:1)Spark的工作流程?2)Spark的调度流程;3)Spark的任务调度原理;4)Spark的任务提交和执行流程;5)Spark任务调度到yarn上面,流程;6)Spark job提交过程讲一下?7)Spark On YARN流程,Client与

    2024年02月12日
    浏览(13)
  • 深入理解 Spark(一)spark 运行模式简介与启动流程源码分析

    深入理解 Spark(一)spark 运行模式简介与启动流程源码分析

    以 standalone-client 为例,运行过程如下: SparkContext 连接到 Master,向 Master 注册并申请资源(CPU Core 和 Memory); Master 根据 SparkContext 的资源申请要求和 Worker 心跳周期内报告的信息决定在哪个 Worker 上分配资源,然后在该 Worker 上获取资源,然后启动 StandaloneExecutorBackend; Stan

    2024年02月02日
    浏览(28)
  • 【Spark精讲】Spark Shuffle详解

    【Spark精讲】Spark Shuffle详解

    目录 Shuffle概述 Shuffle执行流程 总体流程 中间文件 ShuffledRDD生成 Stage划分 Task划分 Map端写入(Shuffle Write) Reduce端读取(Shuffle Read) Spark Shuffle演变 SortShuffleManager运行机制 普通运行机制 bypass 运行机制 Tungsten Sort Shuffle 运行机制 基于Sort的Shuffle机制的优缺点 Shuffle调优 广播变量 shu

    2024年02月02日
    浏览(11)
  • 【SparkSQL】SparkSQL的运行流程 & Spark On Hive & 分布式SQL执行引擎

    【SparkSQL】SparkSQL的运行流程 & Spark On Hive & 分布式SQL执行引擎

    【大家好,我是爱干饭的猿,本文重点介绍、SparkSQL的运行流程、 SparkSQL的自动优化、Catalyst优化器、SparkSQL的执行流程、Spark On Hive原理配置、分布式SQL执行引擎概念、代码JDBC连接。 后续会继续分享其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】 上一篇

    2024年02月04日
    浏览(6)
  • TCP/IP协议工作原理与工作流程

    TCP/IP协议工作原理与工作流程

    使用OSI模型来描述一个网络中的各个协议层,如下: TCP/IP协议,英文全称Transmission Control Protocol/Internet Protocol,包含了一系列构成互联网基础的网络协议,是Internet的核心协议。TCP/IP协议是一个协议簇,包含了应用协议、传输协议、网际互联协议和路由控制协议。如下图: 应

    2024年04月25日
    浏览(14)
  • 网络安全等级保护测评:工作流程及工作内容

    网络安全等级保护测评:工作流程及工作内容

    **一、** 网络安全等级保护测评过程概述 网络安全等级保护测评工作过程包括四个基本测评活动: 测评准备活动、方案编制活动、现场测评活动、报告编制活动 。而测评相关方之间的沟通与洽谈应贯穿整个测评过程。每一项活动有一定的工作任务。如下表。 01 基本工作流程

    2024年02月06日
    浏览(16)
  • 简述springMVC工作流程

    Spring MVC是一个基于Java的开源MVC框架,用于构建Web应用程序。它通过将应用程序分解为模型(Model)、视图(View)和控制器(Controller)三个部分,以提高应用程序的可维护性和可扩展性。以下是Spring MVC的基本工作流程: 客户端发送请求: 客户端通过浏览器或其他客户端发送

    2024年02月05日
    浏览(13)
  • AES工作流程

    工作流程 模式 1:加密 ⚫ 复位EN 重置AES模块 ⚫ 设置模式寄存器mode[1:0]=00,设置流数据处理模式寄存器CHMOD[1:0] ⚫ 写AES_KEYRx寄存器,CTR和CBC模式下写AES_IVRx寄存器 ⚫ 写EN=1,使能AES ⚫ 写AES_DINR 寄存器4次 ⚫ 等待CCF标志置起 ⚫ 从AES_DOUTR分4次读出加密结果 ⚫ 对于同一个key,重

    2024年02月01日
    浏览(15)
  • RabbitMQ工作流程详解

    RabbitMQ工作流程详解

    (1)生产者连接RabbitMQ,建立TCP连接(Connection),开启信道(Channel) (2)生产者声明一个Exchange (交换器),并设置相关属性,比如交换器类型、是否持久化等 (3)生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等 (4)生产者通过bindingKey (绑定Key) 将交换器

    2024年02月13日
    浏览(8)
  • 软件测试工作流程

    软件测试工作流程

    流程体系介绍 在以往的项目工作中,我参与过,需求评审、测试计划制定、测试用例编写、测试用例执行、测试脚本编写、测试脚本的执行,进行回归测试、验收测试、编写阶段性测试报告等工作 需求分析,需求评审(RPD、产品原型图) 制定测试计划、评审测试计划、优化

    2024年02月05日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包