
Flink
文章平均质量分 90
Flink源码剖析
Matty_Blog
当你的才华还撑不起你的野心时,
你就应该静下心来学习。
展开
-
Flink Forward Asia 2020:超大规模 Flink 调度优化
**作者介绍:**胡伟华/辛朝晖,字节跳动基础架构工程师整理:MWT(Apache Flink China 社区志愿者)**校对:**DJG(Apache Flink China 社区志愿者)**摘要:**本文主要介绍在字节跳动在比较大的规模的 Flink 应用场景下遇到的一些问题,以及在调度层面所做的一些优化。内容主要包括6个方面:相关背景:字节跳动的作业规模,以及在此规模下遇到的问题与挑战;黑名单机制:Flink 层面针对 NodeManager 异常节点所做的优化;启动速度优化:Flin原创 2021-03-07 22:38:17 · 765 阅读 · 2 评论 -
Flink源码编译:Flink1.11+版本编译及部署
文章目录1. 背景2. 官方推荐配置3. 现状4. 解决1. 背景从flink1.11开始,flink项目打包时不再强制依赖hadoop-common、hadoop-hdfs、hadoop-yarn-client等组件,虽然flink-hadoop-fs有依赖hdoop组件,如下: <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</原创 2021-02-22 17:54:20 · 835 阅读 · 0 评论 -
Flink源码剖析:自定义TableSink与TableFactory定位过程剖析
文章目录1. 背景2. user-defined redis sink2.1 RedisTableSinkFactory2.2 RedisTableSink2.3 RedisSink3. TableFactory定位1. 背景现有自定义redis sink的需求,我们借此学习一下如何自定义flink sink connector,以及flink是如何通过ddl建表语句中的properties来定位具体的TableFactory,进而创建StreamTableSink的。该文介绍的写法是Flink1.1原创 2021-01-19 22:21:02 · 591 阅读 · 0 评论 -
Flink Forward Asia 2020:Flink SQL的功能扩展与深度优化
文章目录1. 背景及现状1.1 三种模式的分析1.2 腾讯目前的工作2. 窗口功能扩展2.1 新的窗口操作2.1.1 先Join再开窗2.1.2 Interval Join2.1.3 Windowing Table-Valued Function2.1.4 实现细节2.1.4.1 窗口的传播2.1.4.2 时间属性字段2.1.4.3 时间水印2.1.4.4 使用约束2.2 新的窗口类型2.2.1 Incremental Window2.2.1.1 多次触发2.2.1.2 Lazy Trigger2.2.2原创 2021-01-11 11:17:44 · 729 阅读 · 0 评论 -
Flink源码编译:加快你的编译速度
文章目录1. 去除不必要的操作2. 用install替代package3. 指定hadoop版本和flink.shaded版本4. 失败继续5. 正确使用mirror和repository1. 去除不必要的操作mvn install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true -Drat.skip=true2. 用install替代packageinstall会把Flink中的module安装到本地仓库,这样依赖当前mo原创 2020-12-27 23:42:31 · 400 阅读 · 0 评论 -
Flink编码:FlinkSQL全面指南
文章目录1. FlinkSQL定位2. 流与表的对偶性3. 持续查询/增量计算4. 回撤流5. Flink 1.11关于SQL的增强5.1 DDL写法5.2 主键5.3 Catalog6. JOIN算子6.1 双流JOIN原理6.1.1 Inner Join6.1.2 Left Join6.1.3 State数据结构7. 窗口7.1 OverWindow7.1.1 基于数据条目的overwindow7.1.2 基于时间的overwindow7.2 GroupWindow7.2.1 滚动窗口7.2.2 滑动窗原创 2020-11-25 11:57:03 · 2242 阅读 · 0 评论 -
Flink源码剖析:回撤流
文章目录1. 定义2. 示例2.1 源码分析2.1.1 聚合算子回撤2.1.2 Sink算子回撤2.1.3 聚合算子回撤 VS Sink算子回撤1. 定义Flink中,Kafka Source是非回撤流,Group By是回撤流。所谓回撤流,就是可以更新历史数据的流,更新历史数据并不是将发往下游的历史数据进行更改,要知道,已经发往下游的消息是追不回来的。更新历史数据的含义是,在得知某个Key(接在Key BY / Group By后的字段)对应数据已经存在的情况下,如果该Key对应的数据再次到来,会生成原创 2020-11-23 01:15:22 · 8126 阅读 · 0 评论 -
Flink源码剖析:ValueState
文章目录1. 定义2. 示例3. 源码3.1 Update方法3.2 Value方法1. 定义State一般指一个具体的task的状态,而checkpoint则表示了一个Flink Job在一个特定时刻的一份全局状态快照,即对所有task的state进行持久化。Flink中有两种基本类型的State:Keyed State,Operator State。2. 示例下面一个有关定时器timer和Keyed State的代码示例,实现将10s内未出现的消息发往下游的功能,示例代码可以运行,有兴趣的同学不原创 2020-11-15 09:21:00 · 3651 阅读 · 0 评论 -
Flink源码剖析:Metrics运作机制
文章目录1. Metrics简介1.1 什么是 Metrics?1.2 Metric Types1.3 Metric Group2. Metrics运行机制2.1 初始化Reporter2.1.1 PrometheusReporter2.1.2 PrometheusPushGatewayReporter2.2 注册Reporter2.3 收集Metrics到内存2.4 发送Metrics到第三方存储1. Metrics简介1.1 什么是 Metrics?Flink 提供的 Metrics 可以在 Fl原创 2020-10-26 08:00:26 · 879 阅读 · 1 评论 -
Flink调优:数据倾斜优化
文章目录1. 定义1.1 危害1.1.1 任务瘫痪1.1.1 checkpoint时间边长1.1.2 state变大2. 解决办法2.1 修改分区策略2.1.1 目标2.1.2 手段2.2 两阶段聚合2.2.1 目标2.2.2 手段2.2.2.1 修改sql2.2.2.2 localglobal2.2.2.3 PartialFinal1. 定义当进行聚合运算时(Group By/KeyBy + Agg),如果聚合所使用的key存在热点,则会导致数据倾斜。如统计某日各个省份的车流量,则负责运算北京、上海等原创 2020-10-12 14:06:32 · 4042 阅读 · 0 评论 -
Flink部署:flink-on-kubernetes 实践
文章目录1. Mac 安装 Docker2. Minikube 搭建 Kubernetes 实验环境2.1 安装 Minikube3. Flink 实时处理 demo4. 构建 Docker 容器镜像5. 部署 JobManager6. 部署 TaskManagerkubernetes 是目前非常流行的容器编排系统,在其之上可以运行 web 服务、大数据处理等各类应用。这些应用被打包在非常轻量的容器中,我们通过声明的方式来告知 kubernetes 要如何部署和扩容这些程序,并对外提供服务。flink o原创 2020-09-30 11:01:42 · 2167 阅读 · 0 评论 -
Flink原理:窗口原理详解
文章目录1. 定义2. 窗口分类2.1 Time Window2.1.1 Flink中的时间种类有哪些2.1.2 Tumbling Time Window2.1.3 Sliding Time Window2.2 Count Window2.2.1 Tumbling Count Window2.2.2 Sliding Count Window2.3 Session Window3. 窗口组件4. 源码分析4.1 Count Window源码4.2 Time Window源码5. 窗口state5.1 stat原创 2020-09-01 09:40:16 · 1519 阅读 · 1 评论 -
Flink原理:定时器
1. 用途Flink定时器存在于窗口的触发,窗口状态的清理,TTL等诸多用途,因此搞清楚其原理对于理解这些知识点至关重要。2. 示例在flink实时处理中,涉及到延时处理可使用KeyedProcessFunction来完成,KeyedProcessFunction是flink提供面向用户的low level api,可以访问状态、当前的watermark或者当前的processingtime, 更重要的是提供了注册定时器的功能,分为:注册处理时间定时器,直到系统的processingTime超过了原创 2020-09-01 09:32:05 · 5466 阅读 · 0 评论 -
Flink监控:自定义消费延迟Metrics
文章目录1. 需求2. 名词解释1. 需求现有如下需求,以kafka作为source,实时统计flink任务的消费偏移量current-offset和分区偏移量总长度log-end-offset,并计算两者差着,得到消费延迟lag,如图:2. 名词解释current-offset:相比current-offset,我们更熟悉commit-offset,每一次poll(),...原创 2020-08-07 18:24:48 · 2493 阅读 · 2 评论 -
Flink源码剖析:Flink Async I/O的三种模式
文章目录1. 维表join2. richmapfunction2.1 示例3. asyncio3.1 示例3.2 Ordered模式3.2.1 生产3.2.2 消费3.3 基于processtime的unordered模式3.3.1 生产3.3.2 消费3.4 基于eventTime的unordered模式3.4.1 生产3.4.2 消费4. 总结1. 维表join流计算系统中经常需要与外部系统进行交互,比如需要查询外部数据库以关联上用户的额外信息。通常,我们的实现方式是向数据库发送用户a的查询请求,然原创 2020-06-16 16:12:52 · 1064 阅读 · 0 评论 -
Flink原理:Flink中的日志框架配置
文章目录1. 背景2. 日志门面slf4j2.1 log4j2.2 log4j23. 避免冲突4. 总结1. 背景很多同学在进行Flink开发时,无论是使用log4j或log4j2,常常出现各种问题,如下图所示:今天我们就要拨开云雾见天日,聊聊日志相关的知识,搞清楚这些报错的原因。众所周知,现代框架都是用门面模式进行日志输出,例如使用Slf4j中的接口输出日志,具体实现类需要由log4j,log4j2,logback等日志框架进行实现,如Flink的类中是这样输出日志的:// org.apache原创 2020-06-13 22:46:04 · 4439 阅读 · 2 评论 -
Flink源码剖析:flink-cep 自带测试用例
文章目录1.testSimplePatternCEP2.testSimpleKeyedPatternCEP3.testSimplePatternEventTime4.testSimpleKeyedPatternEventTime5.testProcessingTimeWithWindow6.testTimeoutHandling7.testSimpleOrFilterPatternCEP8.testSimplePatternEventTimeWithComparator9.testSimpleAfterMa原创 2020-06-06 23:36:46 · 719 阅读 · 0 评论 -
Flink源码编译:问题记录
背景跑 flink-examples,各种报错,各种test类之间依赖找不到,极其头大!疑惑寻找解决办法时,心中不禁冒出三个问题:为什么跑 flink-examples的时候,Intellij idea会自动build一些无关紧要的代码 ?build是否可以绕过Test,直接运行当前flink-exmaples中的代码?build与maven compile的区别是什么?答案针对以上3个问题,一一解答:跑Intellij idea时,默认会强制进行build,包括一些无关代码,如图原创 2020-06-04 22:45:10 · 1250 阅读 · 0 评论 -
Flink源码剖析:flink-streaming-java 之 JobGraph
文章目录1. 调用链路2. 源码剖析2.1 JobVertex2.2 JobEdge2.3 IntermediateDataSet2.4 StreamConfig2.5 StreamGraph 到 JobGraph 的核心转换3. 自带 WordCount 示例详解本文主要围绕 Flink 源码中 flink-streaming-java 模块。介绍下 StreamGraph 转成 JobGra...原创 2020-05-05 00:11:30 · 854 阅读 · 0 评论 -
Flink源码剖析:flink-examples-streaming 自带demo示例
文章目录1.wordcount2.socket3.async4.iteration5.join6.sideoutput7.windowing7.1 session window7.2 count window7.2.1 slide count window7.2.2 tumble count window本文主要分析下 Flink 源码中 flink-examples-streaming 模块,...原创 2020-05-02 15:48:55 · 4119 阅读 · 0 评论 -
Flink实战:flink监控prometheus_influxdb + grafana企业实战
文章目录1. 功能点2. 方案对比2.1 方案一:prometheus+flink2.1.1 安装部署2.1.2 有价值资料2.1.3 错误总结2.1.4 参考命令2.2 方案二:influxdb(当前与监控系统无关)2.2.1 influxdb常用命令2.2.2 使用经验2.2.2 错误总结本文档为实时计算相关的监控系统的整体说明,记录监控系统相关的部分细节。监控大盘如图:1. 功能点...原创 2020-04-28 23:24:33 · 3149 阅读 · 0 评论 -
Flink问题:记Flink Metrics时断时续问题排查
文章目录1. 背景2. 问题分析2.1 实验设计2.2 源码分析3. 解决方法1. 背景用prometheus+pushgateway+grafana监控体系对flink的各项metrics进行监控,出现如下图所示状况:可以发现,指标每过一些时间就会消失,然后又出现。2. 问题分析2.1 实验设计存在三种可能,1:prometheus有bug导致拉不到数据;2:pushgateway...原创 2020-04-28 20:50:13 · 2371 阅读 · 4 评论 -
Flink原理:这一次带你彻底搞懂watermark
文章目录背景定义生成1. 生成时机2. 生成方式更新规则1. 单并行度2. 多并行度传播窗口触发时机分析1. 示例一2. 示例二3. 示例三如何设置最大乱序时间延迟数据处理1. 定义2. 触发条件3. 示例延迟数据重定向背景我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,...原创 2020-04-23 13:15:20 · 1576 阅读 · 0 评论 -
Flink源码剖析:flink-streaming-java 之 StreamGraph
文章目录1.DataStream API使用一览2. 源码剖析2.1 StreamExecutionEnvironment2.2 Transformation2.3 DataStream2.4 StreamOperator2.5 Function2.6 StreamGraph2.7 类之间的层级关系本文主要围绕 Flink 源码中 flink-streaming-java 模块。介绍如何使用 D...原创 2020-04-22 16:37:47 · 1809 阅读 · 0 评论 -
Flink源码剖析:flink-annotations
文章目录1. docs相关注解1.1 @ConfigGroup1.2 @ConfigGroups1.3 @Documentation.OverrideDefault1.4 @Documentation.CommonOption1.5 @Documentation.TableOption1.6 @Documentation.ExcludeFromDocumentation2. 其他标记注解2.1 @...原创 2020-04-14 14:58:33 · 614 阅读 · 1 评论 -
Flink源码剖析:flink-metrics-reporters
文章目录1. 指标 reporters1.1 flink-metrics-dropwizard1.2 flink-metrics-graphite1.3 flink-metrics-influxdb1.4 flink-metrics-prometheus1.5 flink-metrics-jmx1.6 flink-metrics-slf4j1.7 flink-metrics-statsd1.8 f...原创 2020-04-10 00:06:37 · 2131 阅读 · 5 评论 -
Flink源码剖析:flink-metrics-core
文章目录1. flink-metrics-core2. 指标 Reporters2.1 flink-metrics-dropwizard2.2 flink-metrics-graphite2.2.1 配置2.3 flink-metrics-influxdb2.3.1 influxdb基本概念2.3.2 Reporter实现2.3.3 配置2.4 flink-metrics-prometheus2....原创 2020-04-09 17:15:52 · 1630 阅读 · 1 评论