Flink WebUI解析(待更新)

写在前面

2024-05-23:对于flink webUI的查看,首先还是根据先整体观看一下Task的划分,然后根据Exception去寻找对应的TaskManager相关信息,然后双向确定是什么原因造成的;作为metrics,虽然看起来花里胡哨,本质上对flink底层实现机制的基本逻辑弄懂,应该还是比较容易看的;
注:由大佬有这块比较好的分享,跪求评论区共享一下;

2024-10-06:本次更新对Flink WebUI进行了全面介绍,剩下的待处理的监控指标包括:Flink内存模型,Java dump,【watermark,Accumulators,metrics,火焰图,】后续随缘补充一下

1. 代码示例

job代码:https://github.com/interestingcom/FlinkTest/blob/master/src/main/java/com/example/job/WordCount.java
以WordCount为例,说明Flink Webui界面参数解析,详细代码参考:
核心代码如下:

StreamExecutionEnvironment streamingEnvironment = FlinkEnvironmentFactory.createStreamingEnvironment();
streamingEnvironment.setParallelism(4);

SingleOutputStreamOperator<String> word = streamingEnvironment.addSource(new WordCountSource()).flatMap(new SplitMapFunction());

SingleOutputStreamOperator<Tuple2<String, Integer>> wordAndOne = word.map(value -> Tuple2.of(value, 1)).returns(Types.TUPLE(Types.STRING,Types.INT));

KeyedStream<Tuple2<String, Integer>, String> tuple2StringKeyedStream = wordAndOne.keyBy(value -> value.f0);

SingleOutputStreamOperator<Tuple2<String, Integer>> sum = tuple2StringKeyedStream.sum(1);

sum.print("flink计算结果===>");

streamingEnvironment.execute();

产生异常的代码:

if ( string.equals("world") && randomInt %5==0){
    throw new Exception("随机数是randomInt"+randomInt+"遇到单词world...");
}

2. WebUI详细信息

2.1. Submit New Job

位置1:上传jar包
位置2:传入main class;

<think>好的,我需要帮助用户了解如何在FlinkWebUI中查看和分析Thread Dump。根据用户的问题,我需要先回忆一下FlinkWebUI结构,并结合提供的引用内容来组织回答。 首先,用户提到的引用[3]和[4]中有关于Flink WebUI解析,特别是Thread Dump页面的信息。引用[4]提到在WebUI中有线程转储页,显示线程状态和堆栈信息,这可能是一个关键点。 接下来,我需要确定具体的步骤。用户需要知道如何访问Thread Dump页面,以及如何分析其中的内容。根据引用[4],线程转储页可能位于某个特定菜单下,比如“堆内存分析”或单独的“Thread Dump”页面。可能需要导航到TaskManager的详情页,然后找到相关选项。 另外,引用[2]提到获取Thread Dump的方法,比如使用kill -3命令,但用户更关注WebUI的方法,所以可能需要说明如何在WebUI中直接操作,而无需命令行。 还需要考虑分析Thread Dump时的注意事项,比如多次抓取以确认问题,检查线程状态(如阻塞、死锁)等,这部分可以参考引用[2]的建议。 最后,用户可能还需要知道如何结合其他信息,比如CheckPoint或Metrics数据来定位问题,这可以引用[1]中的SubTask定位问题,但这里主要关注Thread Dump本身。 现在需要将这些信息结构化,分步骤说明访问路径、操作方法和分析技巧,确保符合用户的需求,并且引用正确的参考资料。同时,生成相关问题来帮助用户深入理解。</think>### 如何在Flink WebUI中查看和分析Thread Dump #### 一、访问Thread Dump的路径 1. **进入Flink WebUI** 打开浏览器,输入Flink集群的WebUI地址(默认端口为8081)。 2. **选择目标TaskManager** 在左侧导航栏点击 **Task Managers**,进入TaskManager列表页面。 3. **进入Thread Dump页面** 点击需要分析的TaskManager实例ID,进入详情页后选择 **Thread Dump** 标签页[^4]。 #### 二、Thread Dump页面功能解析 1. **线程状态概览** 页面会列出该TaskManager中所有Java线程的实时状态,包括: - **RUNNABLE**(运行中) - **WAITING**(等待资源) - **BLOCKED**(阻塞) - **TIMED_WAITING**(限时等待) 2. **线程堆栈详情** 点击任意线程名称,可查看完整的堆栈跟踪信息,帮助定位代码执行位置[^4]。 #### 三、Thread Dump分析方法 1. **识别异常线程状态** - 频繁出现`BLOCKED`状态的线程可能涉及资源竞争或死锁。 - 长时间处于`WAITING`的线程可能因外部依赖未响应(如网络IO)。 2. **关联监控指标** 结合 **Metrics** 页面的CPU/内存使用率、背压情况,判断线程问题是否由资源不足引起[^1][^4]。 3. **多次抓取对比** 建议间隔10-20秒多次抓取Thread Dump,若同一线程持续异常,可确认问题典型性[^2]。 #### 四、操作示例 ```plaintext 操作路径:WebUI → Task Managers → [选择TaskManager] → Thread Dump ``` 页面示例输出: ``` "Flink TaskManager" #17 prio=5 os_prio=0 tid=0x00007f1d8c1e4800 nid=0x2a3f waiting on condition [0x00007f1d3a7e7000] java.lang.Thread.State: TIMED_WAITING (sleeping) at java.lang.Thread.sleep(Native Method) at org.apache.flink.streaming.runtime.io.StreamInputProcessor.processInput(StreamInputProcessor.java:210) ``` #### 五、扩展分析工具 若WebUI信息不足,可: 1. **下载完整Thread Dump文件** 通过页面提供的下载按钮获取`.txt`文件,使用`jstack`或可视化工具(如VisualVM)分析。 2. **结合日志定位** 检查TaskManager日志中与线程异常时间点匹配的ERROR/WARN记录。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值