文章目录
Monitoring Checkpointing
Flink的web界面提供了一个选项卡来监视作业的检查点。这些统计数据在作业终止后也可用。有四个不同的选项卡显示关于检查点的信息:Overview, History, Summary, and Configuration。以下部分将依次介绍所有这些内容。
Monitoring
Overview Tab
概览选项卡列出了以下统计信息。请注意,这些统计数据不会在JobManager丢失后继续存在,并且在JobManager故障转移时将被重置为。
- Checkpoint Counts
- 已触发:自作业启动以来已触发的检查点总数。
- 正在进行中:当前正在进行的检查点数量。
- 已完成:自作业启动以来成功完成的检查点总数。
- 失败:自作业启动以来失败的检查点总数。
- 已恢复:任务启动后的恢复操作次数。这还会告诉您自提交以来作业重启了多少次。注意,带有保存点的初始提交也算作恢复,如果JobManager在操作期间丢失,则重置计数。
- Latest Completed Checkpoint(最新完成检查点):最近成功完成的检查点。单击More details将提供子任务级别的详细统计信息。
- Latest Failed Checkpoint(最近失败的检查点):单击More details将提供子任务级别的详细统计信息。
- Latest Savepoint:最新触发的保存点及其外部路径。单击More details将提供子任务级别的详细统计信息。
- Latest Restore:有两种类型的恢复操作:
- 从检查点恢复:我们从定期检查点恢复。
- 从保存点恢复:我们从保存点恢复。
History Tab
检查点历史记录保存关于最近触发的检查点的统计信息,包括当前正在进行的检查点。
注意,对于失败的检查点,度量标准是在最佳努力的基础上更新的,可能是不准确的。
- ID:触发检查点的ID。每个检查点的id从1开始递增。
- Status:检查点的当前状态,包括“正在进行”、“完成”和“失败”。如果触发的检查点是一个保存点,您将看到一个软盘符号。
- Acknowledged:已确认的子任务总数。
- Trigger Time:在JobManager上触发检查点的时间。
- Latest Acknowledgement: 在JobManager上接收到任何子任务的最新确认的时间(如果还没有接收到确认,则为n/a)。
- End to End Duration:从触发器时间戳到最近一次确认的持续时间(如果还没有收到确认,则为n/a)。完整检查点的端到端持续时间由确认检查点的最后一个子任务确定。这个时间通常比单个子任务实际检查点状态所需的时间要大。
- Checkpointed Data Size:在该检查点的同步和异步阶段的持久化数据大小,如果启用增量检查点或更改日志,值可能与完整的检查点数据大小不同。
- Full Checkpoint Data Size: 所有已确认子任务上累积的检查点数据大小。
- Processed (persisted) in-flight data:在所有已确认的子任务对齐期间(接收第一个和最后一个检查点屏障之间的时间)处理/持久化的大约字节数。只有在启用了未对齐检查点的情况下,持久化数据才能大于零。
对于子任务,有一些更详细的统计数据可用。
- Sync Duration: 检查点同步部分的持续时间。这包括算子的快照状态,并阻止子任务上的所有其他活动(处理记录、触发计时器等)。
- Async Duration:检查点异步部分的持续时间。这包括将检查点写入所选文件系统所花费的时间。对于未对齐的检查点,这还包括子任务等待最后一个检查点障碍到达的时间(对齐持续时间)以及持久化飞行中的数据所花费的时间。
- Alignment Duration:处理第一个和最后一个检查点屏障之间的时间。对于已对齐的检查点,在对齐期间,已经接收到检查点屏障的通道将被阻止处理更多数据。
- Start Delay:自创建检查点屏障以来,第一个检查点屏障到达此子任务所花费的时间。
- Unaligned Checkpoint:子任务的检查点是否作为非对齐检查点完成。如果对齐超时,对齐检查点可以切换到未对齐检查点。
历史大小配置
您可以通过下面的配置键配置历史中记住的最近检查点的数量。缺省值为10。
# Number of recent checkpoints that are remembered
web.checkpoints.history: 15
Summary Tab
汇总计算端到端持续时间、增量检查点数据大小、完整检查点数据大小和对齐期间缓冲的字节的所有完成检查点的简单min/average/maximum统计信息(有关这些含义的详细信息,请参阅历史)。
请注意,这些统计数据不会在JobManager丢失后继续存在,并且在JobManager故障转移时将被重置。
Configuration Tab
配置列表你的流配置:
Checkpointing Mode:精确一次或至少一次。
Interval:配置的检查点间隔时间。在此间隔内触发检查点。
Timeout: JobManager取消检查点并触发新检查点的超时时间。
Minimum Pause Between Checkpoints:检查点之间所需的最小暂停。在一个检查点成功完成后,我们至少要等待这段时间才能触发下一个检查点,这可能会延迟常规间隔。
Maximum Concurrent Checkpoints:允许同时进行的最大检查点数量。
Persist Checkpoints Externally(外部保存检查点):启用或禁用。如果启用,还会列出外部化检查点的清理配置(删除或取消时保留)
Checkpoint Details
当您单击检查点的More details链接时,您将得到所有算子的Minimum/Average/Maximum汇总,以及每个子任务的详细数字。
Summary per Operator
All Subtask Statistics
Monitoring Back Pressure
Flink的web界面提供了一个选项卡来监视运行作业的反压力行为。
Back Pressure
如果你看到某个任务出现反压力警告(例如高),这意味着它产生数据的速度比下游算子消耗数据的速度快。作业中的记录流向下游(例如,从源到汇),而反压力则沿相反的方向向上传播。
以一个简单的Source -> Sink作业为例。如果您看到Source的警告,这意味着Sink消耗数据的速度比Source产生数据的速度慢。汇正对上游操作源进行反压。
Task performance metrics
每个任务(子任务)的并行实例都暴露了一组三个指标:
- backPressureTimeMsPerSecond,子任务返回压力的时间
- idleTimeMsPerSecond,子任务等待处理的时间
- busyTimeMsPerSecond,子任务忙于执行一些实际工作的时间。在任何时间点上,这三个度量加起来大约为1000毫秒。
这些指标每隔几秒更新一次,所报告的值表示子任务在过去几秒内返回压力(或空闲或繁忙)的平均时间。如果你的工作负载不同,请记住这一点。例如,一个负载为50%的子任务和另一个每秒在完全加载和空转之间交替的子任务都具有相同的busyTimeMsPerSecond值:大约500ms。
在内部,背压是根据输出缓冲器的可用性来判断的。如果任务没有可用的输出缓冲区,则认为该任务是回压的。另一方面,闲置是由是否有可用的输入决定的。
Example
web聚合来自所有子任务的背压力和繁忙指标的最大值,并在JobGraph中显示这些聚合值。除了显示原始值之外,任务也用颜色编码,以使调查更容易。
空闲任务为蓝色,压力十足的任务为黑色,忙碌的任务为红色。其中的所有值都表示为这三种颜色之间的深浅度。
Back Pressure Status
在工作概述旁边的背压选项卡,你可以找到更详细的指标。
对于状态为OK的子任务,没有反压的迹象。另一方面,HIGH意味着子任务返回压力。状态定义如下:
- OK: 0% <= back pressured <= 10%
- LOW: 10% < back pressured <= 50%
- HIGH: 50% < back pressured <= 100%
此外,您可以找到每个子任务返回压力、空闲或繁忙的时间百分比。