
Flink
文章平均质量分 91
flink
daijiguo
China NO.1
展开
-
Flink Forward Asia 2020:超大规模 Flink 调度优化
作者介绍:胡伟华/辛朝晖,字节跳动基础架构工程师整理:MWT(Apache Flink China 社区志愿者)校对:DJG(Apache Flink China 社区志愿者)摘要:本文主要介绍在字节跳动在比较大的规模的 Flink 应用场景下遇到的一些问题,以及在调度层面所做的一些优化。内容主要包括6个方面:相关背景:字节跳动的作业规模,以及在此规模下遇到的问题与挑战;黑名单机制:Flink 层面针对 NodeManager 异常节点所做的优化;启动速度优化:Flink 层面针对 TaskM原创 2021-03-07 22:39:54 · 1006 阅读 · 0 评论 -
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:55:31 · 1172 阅读 · 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:23:40 · 1083 阅读 · 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:19:25 · 578 阅读 · 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:35 · 572 阅读 · 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:58:01 · 1634 阅读 · 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:19:16 · 3973 阅读 · 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:57 · 499 阅读 · 1 评论 -
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:03:04 · 968 阅读 · 0 评论 -
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:11:34 · 2401 阅读 · 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:44:01 · 1385 阅读 · 0 评论 -
Flink原理:定时器
文章目录1. 用途2. 示例3. 原理3.1 注册3.2 触发3.3 延迟队列state3.4 定时器注意事项1. 用途Flink定时器存在于窗口的触发,窗口状态的清理,TTL等诸多用途,因此搞清楚其原理对于理解这些知识点至关重要。2. 示例在flink实时处理中,涉及到延时处理可使用KeyedProcessFunction来完成,KeyedProcessFunction是flink提供面向用户的low level api,可以访问状态、当前的watermark或者当前的processingtime原创 2020-09-01 09:43:11 · 1609 阅读 · 1 评论 -
Flink监控:自定义消费延迟Metrics
文章目录1. 需求2. 名词解释2.1 committed-offsets2.2 current-offsets2.3 highWatermark3. 自定义Metrics3.1 flink kafka source connector源码分析3.1.2 周期提交3.1.3 Checkpoint时提交3.2 定义HighWatermark Metrics3.2.1 自定义flink kafka consumer3.2.2 自定义序列化器3.2.1 自定义HighWatermark Metrics1. 需求原创 2020-08-07 18:30:04 · 3825 阅读 · 6 评论 -
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:14:12 · 1586 阅读 · 0 评论 -
Flink原理:Flink中的日志框架配置
文章目录1. 背景2. 日志门面slf4j2.1 slf4j + log4j2.2 slf4j + log4j23. 避免冲突4. 总结1. 背景很多同学在进行Flink开发时,无论是使用log4j或log4j2,常常出现各种问题,如下图所示:今天我们就要拨开云雾见天日,聊聊日志相关的知识,搞清楚这些报错的原因。众所周知,现代框架都是用门面模式进行日志输出,例如使用Slf4j中的接口输出日志,具体实现类需要由log4j,log4j2,logback等日志框架进行实现,如Flink的类中是这样输出日志原创 2020-06-13 22:48:19 · 2412 阅读 · 0 评论 -
Flink源码编译:运行示例代码时绕过test编译
背景跑 flink-examples,各种报错,各种Test module之间依赖找不到,及其头大!疑惑寻找解决办法时,心中不禁冒出三个问题:为什么跑 flink-examples的时候,Intellij idea会自动build一些无关紧要的代码 ?build是否可以绕过Test,直接运行当前flink-exmaples中的代码?build与maven compile的区别是什么?答案针对以上3个问题,一一解答:跑Intellij idea时,默认会强制进行build,包括一些无原创 2020-06-04 22:41:28 · 672 阅读 · 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-11 22:57:38 · 4725 阅读 · 4 评论 -
Flink原理:这一次带你彻底搞懂watermark
文章目录背景定义生成1. 生成时机2. 生成方式更新规则1. 单并行度2. 多并行度传播窗口触发时机分析1. 示例一2. 示例二3. 示例三如何设置最大乱序时间延迟数据处理1. 定义2. 触发条件3. 示例延迟数据重定向1. 定义2. 示例背景我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件...原创 2020-04-23 14:10:58 · 1547 阅读 · 3 评论