应用洞察
应用洞察面向集群中运行的应用任务进行自动化诊断,通过内置的洞察规则识别数据倾斜、扫描大量数据、Shuffle失败、资源浪费等常见异常,并给出异常分布、统计分析和明细列表,帮助用户快速定位应用性能问题与治理优化。目前应用洞察仅支持对Spark应用进行洞察。
功能概述
应用洞察在集群运行过程中持续采集相关应用的执行信息,依据洞察策略中配置的洞察项和阈值对应用进行自动化分析,识别出存在异常的应用并记录异常明细。用户可在集群管控页面查看异常分布、异常统计分析和异常明细列表,也可根据业务需要调整洞察策略中的洞察项开关、严重程度和规则阈值。
开启应用洞察需要在创建集群时勾选Spark服务并单独开启应用洞察开关,同时指定一个BOS路径用于存储洞察结果。
常见使用场景如下:
- 应用性能诊断:识别数据倾斜、慢Task、排序异常等性能瓶颈,定位执行缓慢的应用。
- 资源利用优化:识别Executor CPU浪费、内存浪费、推测执行Task过多等资源浪费问题,指导资源配置优化。
- 数据读写治理:识别扫描大量数据、大表扫描、输入小文件过多、全表扫描分区表等数据访问问题,优化数据组织与查询方式。
说明:应用洞察目前仅支持Spark应用洞察,暂不支持其他计算引擎。
前提条件
- 已创建BMR集群,且创建时已勾选Spark服务。
- 创建集群时已开启应用洞察开关,并配置了用于存储洞察结果的BOS路径。
- 集群状态为运行中。
- 集群类型为Hadoop及Hadoop-bos 3.7.2 及以上支持。
开启应用洞察
应用洞察需在创建集群时开启,无法在集群创建完成后单独开启。
- 选择MapReduce>集群进入集群列表页面。
- 点击创建集群,在软件配置中勾选Spark服务。
- 找到应用洞察配置项,打开应用洞察开关。
- 在BOS路径下拉框中选择用于存储洞察结果的BOS路径。地址格式为
bos://<bucket-name>/<folder>,其中bucket需提前手动创建,folder输入后系统会自动创建。若尚未创建bucket,可点击创建bucket跳转至BOS控制台创建。 - 完成其余集群配置后提交订单,集群创建完成并运行后,可自行配置并下发洞察策略。
表一 应用洞察开启配置项说明
| 配置项 | 配置项说明 |
|---|---|
| 应用洞察 | 开启后系统对集群中运行的Spark应用进行自动化洞察分析。 |
| BOS路径 | 应用洞察结果需指定BOS路径进行存储,用于问题检索和定位。地址格式为bos://<bucket-name>/<folder>,bucket需手动创建,folder输入后系统会自动创建。 |
注意:应用洞察结果依赖BOS存储,请确保所选BOS路径可正常访问,且bucket已提前创建完成。
查看应用洞察
集群创建完成并运行后,可在集群管控页面查看应用洞察结果。
- 选择MapReduce>集群进入集群列表页面。
- 点击目标集群名称,进入集群详情页面。
- 在左侧导航中选择监控详情>应用洞察,进入应用洞察页面。
- 在应用洞察页签中,选择时间范围,查看该时间范围内Spark应用的异常分布、异常统计分析和异常明细列表。
说明:应用洞察页面顶部标识当前洞察的服务为SPARK,可通过右上角的时间范围选择器筛选查询的时间区间。
异常分布
异常分布以图表形式展示所选时间范围内各洞察项的异常应用个数分布,帮助用户直观了解异常在不同洞察项上的集中情况。
异常统计分析
异常统计分析展示所选时间范围内的应用洞察统计结果,支持切换可视化(饼图)或列表两种展示方式。
表二 异常统计分析字段说明
| 字段 | 说明 |
|---|---|
| 查询总数 | 所选时间范围内参与洞察分析的应用总数。 |
| 异常应用数量 | 所选时间范围内被识别出存在异常的应用数量及占比。 |
| 洞察项 | 触发异常的洞察项名称。 |
| 严重程度 | 该洞察项对应的严重程度:一般、中等或严重。 |
| 异常数量 | 该洞察项下识别出的异常数量。 |
| 占比 | 该洞察项异常数量占异常总数的比例。 |
异常明细列表
在应用洞察页面下方的异常明细列表中,可查看每条异常应用的明细信息。支持通过右上角的洞察项筛选框按洞察项过滤明细列表。
表三 异常明细列表字段说明
| 列表项 | 说明 |
|---|---|
| 任务ID | 应用任务的唯一标识。 |
| 任务名称 | 应用任务的名称。 |
| 洞察项 | 该应用触发异常的洞察项名称。 |
| 严重程度 | 该异常对应的严重程度:一般、中等或严重。 |
| 执行时间 | 应用任务的执行时长。 |
| 开始时间 | 应用任务的开始执行时间。 |
| 操作 | 单击操作列中的洞察建议,可展开查看该异常的归因分析和治理建议。 |
管理洞察策略
洞察策略定义了应用洞察分析所依据的洞察项、严重程度和规则阈值。用户可根据业务需要开启或关闭洞察项、调整严重程度和阈值参数,并通过配置下发使策略生效。
查看洞察策略
- 进入集群详情页面,在左侧导航中选择监控详情>应用洞察。
- 切换到洞察策略页签。
- 洞察策略按服务以折叠面板形式展示,单击SPARK服务名称可展开或收起该服务下的洞察项列表。
表四 洞察策略列表项说明
| 列表项 | 说明 |
|---|---|
| 洞察项 | 展示洞察项名称。 |
| 是否开启 | 展示该洞察项当前是否开启。 |
| 严重程度 | 展示该洞察项的严重程度:一般、中等或严重。 |
| 洞察规则 | 展示该洞察项的规则参数及阈值,以JSON格式呈现。 |
| 操作 | 单击操作列中的修改,可编辑该洞察项。 |
修改洞察项
- 在洞察策略页签中,展开SPARK服务的洞察项列表。
- 单击目标洞察项操作列中的修改,打开修改洞察项弹框。
- 在弹框中配置是否开启、严重程度和洞察规则阈值,点击保存。
表五 修改洞察项配置项说明
| 配置项 | 配置项说明 |
|---|---|
| 洞察项 | 展示当前编辑的洞察项名称,不可修改。 |
| 是否开启 | 选择是否开启该洞察项。开启后该洞察项参与应用洞察分析。 |
| 严重程度 | 下拉选择该洞察项触发异常时标记的严重程度:一般、中等或严重。 |
| 洞察规则 | 填写该洞察项的规则参数阈值,不同洞察项对应不同的阈值参数。 |
配置下发
洞察项修改完成后,需在洞察策略页签中单击右上角的配置下发,将洞察策略下发到集群使其生效。
注意:修改洞察项后需执行配置下发操作,新的洞察策略才会在后续应用洞察分析中生效。
洞察项说明
应用洞察针对Spark应用内置了多项洞察项,覆盖数据倾斜、数据扫描、Shuffle、调度、资源利用等多个维度。各洞察项及其默认严重程度和规则参数如下。
表六 Spark洞察项说明
| 洞察项 | 默认严重程度 | 洞察规则(默认阈值) |
|---|---|---|
| JOIN数据膨胀 | 中等 | { "expansionThreshold": 100, "minOutputRows": 0 } |
| 数据倾斜 | 严重 | { "dataSkewThreshold": 10, "minAppDurationSeconds": 300 } |
| 扫描大量数据 | 严重 | { "scanGB": 1 } |
| 全表扫描分区表 | 一般 | { "minPartitionCount": 10 } |
| Task读卡顿 | 严重 | { "taskReadStuckThreshold": 0.01, "minAppDurationSeconds": 10 } |
| 排序异常 | 严重 | { "maxSortTimeSeconds": 10, "maxSortStageReadRecords": 1000, "minAppDurationSeconds": 300 } |
| Shuffle大量失败 | 中等 | { "shuffleFailureThreshold": 10 } |
| 大表扫描 | 严重 | { "scanRowsNum": 50000000000, "minAppDurationSeconds": 1200 } |
| Stage调度延迟 | 中等 | { "stageScheduleDelayThreshold": 0.2, "minStageDelaySeconds": 10, "minAppDurationSeconds": 300 } |
| 查询条件未下推 | 中等 | {} |
| Task调度延迟 | 严重 | { "scheduleOverheadThreshold": 0.2, "minTaskDelaySeconds": 10, "minAppDurationSeconds": 300 } |
| Executor垃圾回收 | 中等 | { "gcPercent": 20, "minGcDurationSeconds": "20", "minAppDurationSeconds": 1200 } |
| 慢Task | 中等 | { "slowTaskThreshold": 0.1, "minTaskDurationSeconds": 1, "minAppDurationSeconds": 1 } |
| Executor CPU浪费 | 一般 | { "executorCpuWastedPercent": 50, "minAppDurationSeconds": 300 } |
| Executor 内存浪费 | 一般 | { "executorMemWastedPercent": 50, "minAppDurationSeconds": 300 } |
| 输入小文件过多 | 严重 | { "smallFileThreshold": 100, "smallSizeMB": 64 } |
| 推测执行Task过多 | 中等 | { "speculativeTaskThreshold": 10, "minAppDurationSeconds": 300 } |
| Task输入数据过小 | 严重 | { "smallCount": 100, "smallPercent": 20, "smallMB": 1 } |
说明:以上严重程度和阈值为系统默认值,用户可根据实际业务情况通过修改洞察项进行调整,调整后需执行配置下发使其生效。
注意事项
- 应用洞察仅支持Spark应用,且必须在创建集群时开启,集群创建完成后无法单独开启。
- 应用洞察结果依赖BOS存储,请确保创建集群时配置的BOS路径可正常访问。
- 修改洞察项后需执行配置下发,新的洞察策略才会生效。
- 关闭某洞察项后,该洞察项将不再参与应用洞察分析。
评价此篇文章
