IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SparkSQL优化笔记-Web-UI参数详解 -> 正文阅读

[大数据]SparkSQL优化笔记-Web-UI参数详解

1、背景

? ? ? ? 公司内部有大量SparkSQL任务,很多任务有数据倾斜或者内存分配不合理的情况,此博客记录下优化脚本过程中出现的一些问题及经验

2、WebUi应用介绍?

? ? ? ?

? ?如上图,SparkSQL Web界面可分为如上5个的模块,以下简单介绍下这5个模块

? ? ? ?? ?

? Jobs:

? ? ? ?整个spark应用任务的job整体信息(简单来说就是提交给spark的任务)

  • User: 提交作业的用户,用以进行权限控制与资源分配。
  • Total Uptime: spark application总的运行时长,如果此Application id 还在运行期间,此处的时间会一直变化。
  • Scheduling Mode: application中task任务的调度策略,由参数spark.scheduler.mode来设置,可选的参数有FAIR和FIFO,默认是FIFO。这与yarn的资源调度策略的层级不同,yarn的资源调度是针对集群中不同application间的,而spark scheduler mode则是针对application内部task set级别的资源分配,不同FAIR策略的参数配置方式与yarn中FAIR策略的配置方式相同。
  • Completed Jobs: 已完成Job的基本信息,如果想查看job的运行情况,可以点击此选项(一般选择直接点开stage查看,这样比较直观)
  • Active Jobs: 正在运行的Job。
  • Event Timeline: 用来表示调度job何时启动何时结束,以及Excutor何时加入何时移除(底部有添加及移除的具体时间点)我们可以很方便看到哪些job已经运行完成,使用了多少Excutor,哪些正在运行,是查看excutor增加和移除的图形化界面?

? ? ? ? ??

?? ?

? Job Details:

? ? ? ? Jobs 中正在运行(Active Stage)的或者已经结束(Completed Stages) 中Description一栏便可看到具体details信息(job对应的具体信息,可以清楚的看到job被划分为几个stage)

  • Staus: 展示Job的当前状态信息。
  • Active Stages: 正在运行的stages信息,点击某个stage可进入查看具体的stage信息(这个步骤可以很明显的发现是否发生数据倾斜问题)。
  • Pending Stages: 待分配的stages信息,正在排队
  • Completed Stages: 已经完成的stages信息。
  • Event Timeline: 见上 (Jobs中的Event Timeline)
  • DAG Visualization: 有向无环图,当前Job所包含的所有stage信息(stage中包含的明细的transformation操作,DAG Scheduler 会根据 RDD 的 transformation 动作,将 DAG 分为不同的 stage,每个 stage 中分为多个 task,这些 task 可以并行运行),以及各stage间的DAG依赖图。DAG也是一种调度模型,在spark的作业调度中,有很多作业存在依赖关系,所以没有依赖关系的作业可以并行执行,有依赖的作业不能并行执行
    ?

? ? ? ? ?

? Stage:

? ? ? ? 直接点击Stage栏位,或者从Job Details中点开对应的stage(Stage是每一个job处理过程要分为的几个阶段)

  • ?Total time across all tasks: 当前stage中所有task花费的时间和。
  • ?Locality Level Summary:?不同本地化级别下的任务数,本地化级别是指数据与计算间的关系(PROCESS_LOCAL进程本地化:task与计算的数据在同一个Executor中。NODE_LOCAL节点本地化:情况一:task要计算的数据是在同一个Worker的不同Executor进程中;情况二:task要计算的数据是在同一个Worker的磁盘上,或在 HDFS 上,恰好有 block 在同一个节点上。RACK_LOCAL机架本地化,数据在同一机架的不同节点上:情况一:task计算的数据在Worker2的Executor中;情况二:task计算的数据在Worker2的磁盘上。ANY跨机架,数据在非同一机架的网络上,速度最慢)。
  • ?Input Size/Records: 输入的数据字节数大小/记录条数。
  • ?Shuffle Write: 只有join、group by transformation算子等才会产生shuffle 。Shuffle Write为下一个依赖的stage提供输入数据,shuffle过程中通过网络传输的数据字节数/记录条数。应该尽量减少shuffle的数据量及其操作次数,这是spark任务优化的一条基本原则。
  • ?Shuffle Spill (Memory): 略
  • ?Shuffle Spill (Disk):略
  • ?DAG Visualization: 见上 (Job Details中的DAG Visualization)
  • ?Metrics: 当前stage中所有task的一些指标(每一指标项鼠标移动上去后会有对应解释信息)统计信息。
  • ?Event Timeline: 直观的展示了每个Executor上各个task的各个阶段的时间统计信息,可以清楚地看到task任务时间是否有明显倾斜(底部有添加及移除的具体时间点),以及倾斜的时间主要是属于哪个阶段,从而有针对性的进行优化。
  • ?Aggregated Metrics by Executor: 将task运行的指标信息按excutor做聚合后的统计信息,并可查看某个Excutor上任务运行的日志信息。
  • ?Tasks: 当前stage中所有任务运行的明细信息,是与Event Timeline中的信息对应的文字展示(可以点击某个task查看具体的任务日志
    ?

? ? ??

? Enviroment:

? ? ? ? 此选项提供有关Spark应用程序(或SparkContext)中使用的各种属性和环境变量的信息。用户可以通过这个选项卡得到非常有用的各种Spark属性信息,而不用去翻找属性配置文件。此处需要注意的是,如果你的脚本中单独SET某个变量值的话,此处显示的是Submit提交的参数值。此处切记不要混淆(敲黑板)
?

? ? ??

? Executor:

? ? ? ? Executor提供了关于内存、CPU和其他被Executors使用的资源的信息。这些信息在Executor级别和汇总级别都可以获取到。一方面通过它可以看出来每个excutor是否发生了数据倾斜,另一方面可以具体分析目前的应用是否产生了大量的shuffle,是否可以通过数据的本地性或者减小数据的传输来减少shuffle的数据量。

  • ?Summary:? 该application运行过程中使用Executor的统计信息。
  • ?Executors: 每个Excutor的详细信息(包含driver),可以点击查看某个Executor中任务运行的详细日志。
  • ? ? ? ?driver进程就是应用的main()函数并且构建sparkContext对象,当我们提交了应用之后,便会启动一个对应的driver进程
  • ? ? ? ?executor节点是一个工作进程,负责在 Spark 作业中运行任务,任务间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark 应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。
    ?

? ? ??

? SQL:

? ? ? ? 此选项(只有执行了spark SQL查询才会有SQL选项)可以查看SQL执行计划的细节,它提供了SQL查询的DAG以及显示Spark如何优化已执行的SQL查询的查询计划。此步骤可以看到sql的执行顺序情况,包括表是否被广播等。
?

3、总结

? ? ? ? 如果想了解Spark作业如何优化,首先你需要先了解Submit各个参数的作用以及学会如何通过WebUI定位Spark作业的问题,比如数据倾斜等。本文章较详细的介绍了Web界面各个参数的作用(当然了,参考了很多大佬的博客。结尾会把相关文章放进来,大家也可以参考下)后续同专栏会持续推出针对SparkSQL作业优化的相关文章,最后弱弱的吐槽下,CSDN的这个排版真心不会用,码字10分钟,排版俩小时。

参考资料:

????????????????spark入门之spark Driver Web UI_minge_se的博客-CSDN博客

????????

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:37:22  更:2021-11-09 19:39:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:57:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码