posts - 16, comments - 2, trackbacks - 0, articles - 0

导航

2019年8月22日

摘要:昨天在社区群看到有人问,为什么水印取最小的一条?这里分享一下自己的理解 首先水印一般是设置为:(事件时间 - 指定的值) 这里的作用是解决迟到数据的问题,从源码来看一下它如何解决的 先来看下windowOperator.java接收到数据以后做了什么 在processElement方法中,会遍历这条 阅读全文

posted @ 2019-08-22 10:42 末日布孤单 阅读 (448) 评论 (0) 编辑

2019年12月13日

摘要:流式计算中处理延迟是一个非常重要的监控metric flink中通过开启配置 metrics.latency.interval 来开启latency后就可以在metric中看到askManagerJobMetricGroup/operator_id/operator_subtask_index/la 阅读全文

posted @ 2019-12-13 17:19 末日布孤单 阅读 (192) 评论 (0) 编辑

2019年12月4日

摘要:其实CEP复杂事件处理,简单来说你可以用通过类似正则表达式的方式去表示你的逻辑,表现能力非常的强,用过的人都知道 开篇先偷一张图,整体了解FlinkCEP中的 一种重要的图 NFA FlinkCEP在运行时会将用户的逻辑转化成这样的一个NFA Graph (nfa对象) graph 中包含状态(Fl 阅读全文

posted @ 2019-12-04 11:45 末日布孤单 阅读 (382) 评论 (0) 编辑

2019年11月15日

摘要:先上张图整体了解Flink中的异步io 阿里贡献给flink的,优点就不说了嘛,官网上都有,就是写库不会柱塞性能更好 然后来看一下, Flink 中异步io主要分为两种 一种是有序Ordered 一种是无序UNordered 主要区别是往下游output的顺序(注意这里顺序不是写库的顺序既然都异步了 阅读全文

posted @ 2019-11-15 08:50 末日布孤单 阅读 (319) 评论 (0) 编辑

2019年11月12日

摘要:上一篇《Flink接收端反压机制》说到因为Flink每个Task的接收端和发送端是共享一个bufferPool的,形成了天然的反压机制,当Task接收数据的时候,接收端会根据积压的数据量以及可用的buffer数量(可用的memorySegment数)来决定是否向上游发送Credit(简而言之就是当我 阅读全文

posted @ 2019-11-12 09:25 末日布孤单 阅读 (190) 评论 (0) 编辑

2019年11月6日

摘要:先上一张图整体了解Flink中的反压 可以看到每个task都会有自己对应的IG(inputgate)对接上游发送过来的数据和RS(resultPatation)对接往下游发送数据, 整个反压机制通过inputgate,resultPatation公用一个一定大小的memorySegmentPool来 阅读全文

posted @ 2019-11-06 18:14 末日布孤单 阅读 (321) 评论 (0) 编辑

2019年10月23日

摘要:最近这段时间一直在忙新集群迁移,上了最新的cdh6.3.0 于是Flink 提交遇到了许多的问题 还好有cloudera License 有了原厂的帮助和社区的伙伴,问题解决起来快了不少,手动滑稽 集群具体情况是,cdh6.3.0+Flink1.8.1,整个数据平台全部组件都上了kerberos和l 阅读全文

posted @ 2019-10-23 17:52 末日布孤单 阅读 (331) 评论 (0) 编辑

2019年9月11日

摘要:TaskManager接收到来自JobManager的jobGraph转换得到的TDD对象,启动了任务,在StreamInputProcessor类的processInput()方法中 通过一个while(true)中不停的拉取上游的数据,然后调用streamOperator.processElem 阅读全文

posted @ 2019-09-11 08:37 末日布孤单 阅读 (217) 评论 (0) 编辑

2019年9月3日

摘要:前面说到了 Flink的TaskManager启动(源码分析) 启动了TaskManager 然后 Flink的Job启动JobManager端(源码分析) 说到JobManager会将转化得到的TDD发送到TaskManager的RPC 这篇主要就讲一下,Job在TaskManager端是如何启动 阅读全文

posted @ 2019-09-03 18:09 末日布孤单 阅读 (258) 评论 (0) 编辑

2019年8月30日

摘要:前几天在社区群上,有人问了一个问题 既然上游最小水印会决定窗口触发,那如果我上游其中一条流突然没有了数据,我的窗口还会继续触发吗? 看到这个问题,我蒙了???? 对哈,因为我是选择上游所有流中水印最小的一条作为当前水印时间,那万一最小水印的那条流突然里面没有数据了 那我的最小水印不就一直不往前走了, 阅读全文

posted @ 2019-08-30 17:05 末日布孤单 阅读 (195) 评论 (2) 编辑

摘要:在用户代码中,我们设置生成水印和事件时间的方法assignTimestampsAndWatermarks()中这里有个方法的重载 我们传入的对象分为两种 AssignerWithPunctuatedWatermarks(可以理解为每条数据都会产生水印,如果不想产生水印,返回一个null的水印) As 阅读全文

posted @ 2019-08-30 15:34 末日布孤单 阅读 (411) 评论 (0) 编辑