前言
从 EMR-3.18.1 版本开始, EMR 将提供 Spark Streaming SQL 预览版功能. 本次作为新特性的一部分, EMR 将扩展现有 Spark webUI, 支持 Structured Streaming Query 的统计信息查看.
功能介绍
Query 列表
我们在现有 Spark WebUI 上新增了 streamingsql Tab, 用于展示当前作业中进行中以及完成的 Streaming Query.
URL 地址: http://${baseUrl}/streamingsql
Active Streaming Queries: 当前正在运行的 query
Completed Streaming Queries: 已完成的 query, 包括结束的和失败的 query
列名 | 说明 |
---|---|
Query Name | 查询 Name,通过 “SET streaming.query.name=${QUERY_NAME}” 指定。 |
Status | 当前运行状态,包括 RUNNING,FAILED 和 FINISHED。 |
Id | Query ID,保存到 checkpoint 中,多次运行同一个 query, id 保持不变。 |
Run ID | Query Run ID,每次重新运行 query,都会重新生成一个 Run ID。 |
Submit Time | 当前 Query 提交执行的时间。 |
Duration | 当前 Query 运行时间。 |
Avg Input PerSec | 最近 "spark.sql.streaming.numRecentProgressUpdates" 个批次的平均数据输入速率。默认最近 100 个批次统计信息。 |
Avg Process PerSec | 最近 "spark.sql.streaming.numRecentProgressUpdates" 个批次的平均数据处理速率。默认最近 100 个批次统计信息。 |
Total Input Rows | 最近 "spark.sql.streaming.numRecentProgressUpdates" 个批次的数据条数总和,注意不是 Query 运行期间的数据条数总和。默认最近 100 个批次统计信息。 |
Last Batch ID | 最近一次完成的 Batch ID。 |
Last Progress | 最近一次批次的执行信息。 |
ERROR | 如果 Query 失败,展示摘要错误信息。 |
支持在界面上 kill 某个 query.
kill 之后状态变为 "FINISHED":
Query 统计详情
通过点击 Query 的 RunID, 可以查看当前 Query 的运行统计信息, 包括: Input Rate,Process Rate,Input Rows 的时序变化, 以及每个批次的 Duration 堆栈图, 包括 WalCommit,QueryPlanning,GetOffset,GetBatch 以及 AddBatch.
URL 地址: http://${baseUrl}/streamingsql/statistics?id=9d7e9076-f96a-4d19-9f82-460b5af57daa
我们可以查看任意时间的 Batch 的各个执行阶段的时间消耗.
同样的, 这里将只会展示 "spark.sql.streaming.numRecentProgressUpdates" 个 Batch 的统计信息. 如果需要查看更长周期内的统计信息, 可以设置 "spark.sql.streaming.numRecentProgressUpdates" 为更大值. 需要注意的是, 这会带来一定的内存开销.
小结
以上简单演示了 Structured Streaming Query 的管理和统计信息查看功能. 当前 Spark Streaming SQL 处于预览阶段, 我们将在 UI 上集成更多有用的信息, 方便大家查看和监控作业的运行状态.
本文转载自: https://yq.aliyun.com/articles/691416
来源: https://yq.aliyun.com/articles/691430