Apache Flink
灰二和杉菜
本人2020.4已经弃坑程序员去做生意去了。不能回复见谅!
展开
-
二十四、Flink进阶--Flink sql转换为JobGraph过程
1.转换图1.sql解析得到sqlNode Tree2.validator去FunctionCatalog验证udf相关,去CatalogManager验证database相关3.验证通过会得到一个operation dag4.opreation dag 转换为 relnode dag5.优化器去优化relnode,大部分规则 batch和stream是共享的6.优化后会的到exec...原创 2019-11-28 11:43:06 · 1648 阅读 · 0 评论 -
二十四、Flink源码阅读--反压相关源码实现
本篇我们看下flink以反压为问题带入,查看数据处理相关的源码源码分析之前再Task启动的过程中,Task的run方法中是任务执行的相关逻辑代码,其中有一行network.registerTask(this);这行代码就是给这个Task注册网络相关的堆栈public void registerTask(Task task) throws IOException { final R...原创 2019-06-12 20:08:58 · 864 阅读 · 0 评论 -
十五、Flink源码阅读--StreamGraph生成过程
本篇我们将介绍下StreamGraph的生成过程入口分析以WordCount为例子final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();...中间过程省略// 执行程序env.execute("Streaming WordCount");然后进到...原创 2019-06-01 22:59:15 · 596 阅读 · 0 评论 -
二十一、Flink源码阅读--ExecutionGraph生成过程
在上一篇服务端处理jobGraph提到,jobGraph是转换为executionGraph,最后被执行调度的,那么本篇我们看下这一过程的源码源码分析从JobMaster的启动开始讲起JobMaster.start—>JobMaster.startJobExecution—>resetAndScheduleExecutionGraph方法将JobGraph转换为 Execut...原创 2019-06-07 19:26:26 · 1013 阅读 · 0 评论 -
十六、Flink进阶--Flink checkpoint实现原理
前面我们已经了解过flink的状态,对于这些状态如何保存,我们一起学习一下flink的checkpoint机制,并了解一下rocksdb中的增量checkpoint是怎么实现的。Checkpoint实现原理Flink提供的checkpoint机制可以在流任务发生故障时,任务恢复之后,state只被处理一次 exactly once ,当然也可选为 at least once。checkpo...原创 2019-06-02 16:26:32 · 5297 阅读 · 0 评论 -
二十二、Flink源码阅读--Task执行过程
在Flink JobMaster中生成ExecutionGraph和物理执行计划后,Task是如何提交和执行的呢,本篇我们看下这部分的源码源码分析Execution.deploy ===>public void deploy() throws JobException {...final TaskDeploymentDescriptor deployment = vertex...原创 2019-06-08 15:57:21 · 959 阅读 · 0 评论 -
二十五、Flink + Uber AthenaX 平台化实践
本篇学习一下flink sql 的转换原理,如何将sql转为stream流任务。sql示例转换过程及源码总结原创 2019-06-13 22:45:39 · 4127 阅读 · 10 评论 -
二十七、Flink源码阅读--checkpoint原理
flink checkpoint 原理是在源码中怎么实现的,本篇从源码角度深入理解API设置设置checkpoint参数相关代码final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.enableCheckpointing(5000);env.get...原创 2019-06-19 11:10:40 · 1859 阅读 · 0 评论 -
十七、Flink进阶-- 数据类型与序列化
flink在数据存储和数据交换的过程中需要交换大量信息,本篇我们了解一些关于flink序列化相关的内容。常见问题注册子类型 :如果函数仅描述了父类型,但执行是指定子类型的话会大大提升性能,注册自定义类型 :类似google guava 集合类 无法处理是就需要自定义序列化器添加类型提示: 当flink无法推断类型时,用户必须传递类型提示用户自定义TypeInformation: 对...原创 2019-06-03 17:27:31 · 1983 阅读 · 0 评论 -
十八、Flink源码阅读--JobManager启动过程
本文我们详细看下Jm的启动步骤,主要看下stand-alone模式下Jm的启动,在关键步骤是穿插on-yarn模式的说明入口分析从flink安装包的bin/start-cluster.sh分析开始,会发现Jm的主类org.apache.flink.runtime.entrypoint.StandaloneSessionClusterEntrypoint,tm的主类是org.apache....原创 2019-06-03 20:40:16 · 1224 阅读 · 0 评论 -
十九、Flink源码阅读--TaskManager启动过程
本篇我们接这上篇JobManager启动后,来看下TaskManager启动前后的源码。TM的启动入口类为:org.apache.flink.runtime.taskexecutor.TaskManagerRunner源码分析public static void main(String[] args) throws Exception { ... 省略 try { Secur...原创 2019-06-04 17:28:37 · 1633 阅读 · 0 评论 -
二十六、Flink源码阅读--sql执行转换过程
flink sql 在执行中是如何从sql语句或者是table api 转为最后的DataStream任务或者是DataSet任务的,本篇我们从源码角度看下中间的执行和转换过程。DEMO这是flink的一个单元测试方法,模拟实时数据查询@Test public void testSelect() throws Exception { StreamExecutionEnvironme...原创 2019-06-17 18:14:45 · 2466 阅读 · 0 评论 -
二十三、Apache Flink常见问题汇总
本篇主要记录一些Flink生产或者是原理方面的问题问题汇总(不定时更新)1.flink如何处理背压问题?2.flink sql 转换为DataStream或DataSet任务的原理是什么?详细过程描述3.flink checkpoint 原理是怎么实现的?4.flink 为何可以做到exactly-once ?5.如何实现flink到kafka或mysql的exactly-once...原创 2019-06-12 10:58:43 · 1954 阅读 · 1 评论 -
十四、Flink源码阅读--JobGraph生成过程
上篇分析了client整个提交任务过程,最终提交的是一个JobGraph对象,那么是如何从jar或sql 任务转为JobGraph的呢,这篇我们仔细研究一下, 版本为1.6.3源码分析上篇我们介绍client端提交任务最终会到到 ClusterClient.run()方法,就在这个方法中封装了JobGraph的步骤。public JobSubmissionResult run(Flink...原创 2019-05-31 21:04:17 · 1045 阅读 · 0 评论 -
二十、Flink源码阅读--JobManager对提交过来的JobGraph处理过程
在client提交任务的源码分析那篇中我们知道了客户端提交给JobManager的是一个JobGraph对象,那么当JobManager的Dispatcher组件接收到JobGraph后做了哪些处理呢,这篇我们从源码分析一些这个处理过程。源码分析NettyRPC 接收到请求调用的是channelRead0方法,所以在JM端程序的入口:RedirectHandler.channelRead...原创 2019-06-05 20:24:00 · 1261 阅读 · 0 评论 -
四、Flink入门-- DataStream API
文章目录1.DataStream 概览1.1 使用示例1.2 数据源 Data Source1.3 数据输出 Data Sink1.4 Opeator作用概览1.5 KeyedStream1.6 物理分组1.7类型系统2.DataStream API原理1.DataStream 概览1.1 使用示例package com.lyh.flinkimport org.apache.flink....原创 2019-05-19 17:16:01 · 815 阅读 · 0 评论 -
五、Flink入门--客户端操作
文章目录1.客户端操作总体概览2. Flink命令行模式2.1 stand-alone模式2.3 yarn模式2.3.1 单任务模式2.3.2 yarn-session模式3. scala-shell模式4.sql-client模式5.Restful模式6.界面模式1.客户端操作总体概览Flink提供了丰富的客户端操作来提交任务或与任务交互,我们从五个方面介绍Flink客户端的具体操作,分别是...原创 2019-05-20 19:12:53 · 4312 阅读 · 0 评论 -
九、Flink入门--SQL实战
Flink-Sql 实战案例1.环境准备2.实战演示2.1 需求一(出现在纽约的行车记录)2.2 需求二(计算搭载每种乘客数量的行车记录数)2.3 需求三(计算纽约市每个区域5分钟的进入车辆数)2.4 需求四(将每10分钟搭乘的乘客总数写入Kafka)2.5 需求五(将每个区域出发的行车数写入到ES)1.环境准备下载代码并安装环境,前提是准备好Docker环境。git clone git@g...原创 2019-05-24 18:13:40 · 3364 阅读 · 2 评论 -
一、Flink入门--debug设置&example运行
1.源码下载&编译在GitHub 下载源码并编译:下载地址:https://codeload.github.com/apache/flink/zip/release-1.6.3编译命令: mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true2.Idea Remote配置在i...原创 2019-05-16 17:39:53 · 7753 阅读 · 0 评论 -
十、Flink进阶--Runtime核心架构
1. Flink Runtime 概述1.1 概述Flink RunTime是介于底层部署与DataSteamApi或DataSetApi之间的一层,以JobGraph形式接收程序,将任务task提交到集群上执行,RunTime层可以适用不同底层部署模式。Flink Runtime总体架构如下如所示:主要分为Client ,JobManager, TaskManagerClient ...原创 2019-05-25 16:35:53 · 1410 阅读 · 0 评论 -
六、Flink入门--Window理解
Flink Window 概述window是flink处理无穷流的核心,window将流拆分成有限大小的“桶”,在其上做运算。Window Api使用首先我们看下windown的api如何使用,摘用官网的说明:Keyed Windowsstream .keyBy(...) <- keyed versus non-keyed windo...原创 2019-05-21 23:05:25 · 1152 阅读 · 0 评论 -
七、Flink入门--状态管理
流式作业的特点时7*24小时运行,数据不重复消费,不丢失,保证只计算一次,数据实时产出不延迟,但是当状态很大,内存容量限制,或者实例运行奔溃,或需要扩展并发度等情况下,如何保证状态正确的管理,在任务重新执行的时候能正确执行,状态管理就显得尤为重要。原创 2019-05-23 00:10:59 · 1355 阅读 · 0 评论 -
二、Flink入门--名词概念解释
1.什么是Flink?Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Apache Flink是一个分布式处理引擎的框架,用对“有界数据“ 和“无界数据”流进行状态计算1.1有界流和...原创 2019-05-17 20:09:28 · 1665 阅读 · 0 评论 -
十一、Flink进阶--Time深度解析
Time深度解析1. 概述1.1设置一个时间特征1.2EventTime 和 Watermark2.TimeStamps/WaterMark2.1TimeStamp的分配和WaterMark的生成2.2 watermark传播2.3 watermark的处理3.Table中时间1. 概述Flink在流处理程序中支持不同的时间概念。首先需要理解三种time的含义:Processing t...原创 2019-05-27 15:40:05 · 1772 阅读 · 0 评论 -
十二、Flink实战--DataStream、DateSet、TableAPI 、SQL各种实现
Flink API实现1. DataStream 实现2. DataSet 实现3. Table API & SQl实现今天我们模拟实际生成,从kafka消费数据,利用flink的各种API实现,统计wordcount。1. DataStream 实现package com.bigdata.flink.datasteam;import org.apache.flink.api.c...原创 2019-05-27 17:56:50 · 2186 阅读 · 1 评论 -
八、Flink入门--TableApi & Sql
TableAPi1. 概述2. Table API编程2.1 word count例子2.2 注册表的几种方式2.3输出表的几种方式2.4 查询表2.5 Table to DataStream 或 DataSet2.6 Table 函数及转换关系3.UDF 用户自定义函数3.1编写一个udf3.2编写一个udtf3.2编写一个udaf1. 概述TableApi & sql的特点:声...原创 2019-05-23 17:22:43 · 1515 阅读 · 0 评论 -
十三、Flink源码阅读--Client提交任务过程
我们以flink中自带的wordcount例子作为提交任务,查看在客户端Flink提交任务的详细源码步骤。入口分析首先我们看一下提交命令如下:bin/flink run examples/batch/WordCount.jar接着会在bin/flink shell脚本中找到提交的主类org.apache.flink.client.cli.CliFrontend。我们从CliFron...原创 2019-05-31 10:55:46 · 4192 阅读 · 0 评论 -
三、Flink入门--环境搭建部署
1.环境搭建概述Flink在日常工作时一般使用2种部署方式,stand-alone模式或者是on yarn 模式,stand-alone模式的话部署比较简单,on-yarn模式需要部署hadoop集群。我们可以看下flink的架构图如下:jobmanager 负责任务调度,checkpointtaskmanager 负责任务的执行client 负责任务的提交2.stand-alon...原创 2019-05-18 23:44:49 · 2948 阅读 · 0 评论