spark指标性能分析

南墨2年前技术文章986

1)      Spark的性能指标

   任务启动后可以在yarn的原生页面看到对应的任务信息,点击ApplicationMaster

后可以跳转到spark原生页面查看任务信息。

1.png

job信息:

2.png

Executor信息:在启动命令中可以设置excutor的个数

3.png

具体每个批次的执行的数据量,延迟时间,处理时间等。

4.png

进入每个批次后,能够看到这个批次执行的具体数据,也就是具体消费了哪些数据;这些数据能够精确到具体的分区和具体的数据量。

5.png

2)      Spark的调优参数

l  并行度调优:如果每个批次消费正常,但是性能慢,可以增加消费并行度,并且增加kafka的分区数。

l  批次时间优化:修改以下客户端参数,提升批次的处理时间

参数

默认值

意义

spark.authenticate.enableSaslEncryption

false


spark.reducer.maxSizeInFlight

96MB


spark.shuffle.file.buffer

64KB


spark.authenticate

false


spark.network.sasl.serverAlwaysEncrypt

false


spark.shuffle.service.enabled

false


spark.streaming.kafka.consumer.poll.ms

0

Executor Consumer拉去一次数据的超时时间

l  Kafka消费端参数调优:

参数

默认值

意义

max.poll.records

500

Consumer一次拉取得数据量,调大该值能够提升一个消费线程的吞吐量,减少对kafka的请求数。

metadata.max.age.ms

30000ms

元数据更新时间,建议这个值不大于spark.streaming.kafka.consumer.poll.ms值的1/2

session.time.out

10000

组管理协议中判定consumer是否失效的超时时间,建议将这个值调整到30000以上

3)      问题排查流程

如果想查看具体是哪个task的问题,需要具体的分析一下task的日志信息。查看路径如下:

1.       找到具体的批次,例如:

1.png

2.       进入后,能够看到具体的jobID的执行时间

2.png

3.       选中其中的一个延时较长的job,点击进入后继续选择时间较长的Description

 

3.png

4.       进入后选择,对应的日志进行分析

4.png

5.       日志中能够反映出,每个Excutor consumer的配置文件信息,如下:

5.png

能够反映出每个task的执行间隔时间:

6.png

如果执行时间间隔较长,需要分析jstack信息。

6.       根据第4步中的Excutorid(图中为7),可以查看Tread dump信息,查看具体线程哪里有异常。

7.png


相关文章

Linux SSSD同步大量AD用户缓慢

Linux SSSD同步大量AD用户缓慢

1、背景在使用AD + sssd (ad作为ldap)同步用户,其中AD中存在10000+ 用户,同步时,用户信息获取缓慢,导致cdh的namenode 的rpc 队列打高,服务不正常。id 用户达到...

MySQL运维实战(5.5) 数据导入导出时的字符集问题

mysql可以使用load data/select into outfile或mysqldump工具进行数据导入导出。下面分别分析数据导入导出时的字符集相关问题。准备测试数据创建测试表,2个字段分别使...

oracle adg切换

1 主库转备库注意:原则上至多只能有一个主库,但是备库可以多个,所以需要先进行主库转备库操作。1.1 查看主库角色切换状态SYS@proe>select name,database_role,s...

Trino配置yanagishima-23.0(包含编译)

Trino配置yanagishima-23.0(包含编译)

1 环境介绍1.1 本文采用trino 359yanagishima v23.02 编译yanagishima2.1 安装编译yanagishima需要的工具安装编译yanagishima需要的工具w...

containerd搭建keepalived + haproxy

containerd搭建keepalived + haproxy

环境说明ip地址角色172.16.0.100vip172.16.0.11master1,lb1172.16.0.12master2,lb2172.16.0.13master3,lb3keepalive...

Pod 的 init Containers

Pod 的 init Containers

Pod 我们可以分为两类,一种属于自主式 Pod ,还有一种属于控制器管理的 Pod 。一、Pod 的 initContainers基本概念:Pod能够具有多个容器,应用运行在容器里面,但是它也可能有...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。