---Flink(Java)
文章平均质量分 88
大数据学习二级分类,涉及Flink。
Flink是一个流处理框架,也是目前主流的流处理工具。
随着流批处理结合的理念慢慢展开,Flink也许是未来数据计算唯一的归宿。
寒 暄
自渡
展开
-
基于FlinkCDC的MySQL增量同步
CDC什么是CDCCDC是Change Data Capture(变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。CDC类型CDC主要分为基于查询和基于Binlog的两种方式。基于查询的CDC基于Binlog的CDC开源产品Sqoop、Kafka JDBC SourceCanal、Maxwell、Debezium执行模式Batch原创 2021-08-17 17:40:18 · 2895 阅读 · 0 评论 -
Flink CEP
Flink CEP 简介什么是CEPCEP指复杂事件处理(Complex Event Processing),他可以在无休止的事件流中通过一定的规则匹配检测事件模式,然后输出满足规则的复杂事件,用于掌握数据中重要部分。CEP的特点[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X5WKTpRy-1618543602936)(https://i.loli.net/2021/04/15/chFon7UMlgEb5Pf.png)]目标:从有序的简单事件流中发现一些高阶特原创 2021-04-16 11:27:15 · 190 阅读 · 0 评论 -
Flink Table API和Flink SQL
简介Flink Table API 是一套内嵌在java和scala中的查询api,他允许以非常直观的方式组合一些关系运算符的查询。Flink SQL是基于实现了SQL标准的Apache Calcite。目前Flink Table API和SQL还不是很完善。例子:package com.ts.tabletest;import com.ts.flink.SensorReading;import org.apache.flink.streaming.api.datastream.DataSt原创 2021-04-02 16:45:42 · 962 阅读 · 0 评论 -
Flink ProcessFunction API (底层API)
Process Function用来构建事件驱动的应用以及实现自定义的业务逻辑,Flink提供了8个Process Function:ProcessFunction :最原始,自定义程度高,什么都能做KeyedProcessFunction:keyby后使用得process中传入得Process FunctionCoProcessFunction:connect后使用得process中传入得Process FunctionProcessJoinFunction:两条流Join连接后使用得proce原创 2021-03-11 16:52:07 · 326 阅读 · 0 评论 -
Flink状态一致性
状态一致性当在分布式系统中引入状态时,自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到底有多正确?一致性级别一致性级别分为三个等级:at-most-once(最多一次): 这其实是没有正确性保障的委婉说法——故障发生之后,计数结果可能丢失。当任务故障时,最简单的做法是什么都不干,既不恢复丢失的状态,也不重播丢失的数据。At-most-once 语义的含义是最多处理一次事件。at-least-原创 2021-03-08 16:35:04 · 273 阅读 · 2 评论 -
Flink容错机制
一致性检查点Flink容错机制的核心就是一致性检查点。有状态流应用的一致检查点,其实就是所有任务的状态,在某个时间点的一份拷贝(一份快照);这个时间点,应该是所有任务都恰好处理完一个相同的输入数据的时候。这是一个奇偶数分别求和的应用,偶数求和已经计算了2+4,奇数求和计算了1+3+5,source保存的偏移量为5。假设在奇数求和只计算了1+3,5还在路上的时候保存了快照到Storage中,系统故障后进行了快照重放,那么source中是要重放为5呢,还是继续读下一条数据呢?如果预先设计,重放的时候原创 2021-03-04 17:01:19 · 315 阅读 · 1 评论 -
Flink状态编程
Flink是一个分布式的流处理引擎,而流处理的其中一个特点就是7X24。那么,如何保障Flink作业的持续运行呢?Flink的内部会将应用状态(state)存储到本地内存或者嵌入式的kv数据库中,由于采用的是分布式架构,Flink需要对本地生成的状态进行持久化存储,以避免因应用或者节点机器故障等原因导致数据的丢失。Flink是通过checkpoint(检查点)的方式将状态写入到远程的持久化存储,从而就可以实现不同语义的结果保障。什么是状态我们看两段程序,第一段是spark的wordcount程序:原创 2021-02-25 16:48:42 · 396 阅读 · 0 评论 -
Flink 时间语义和Watermark
时间语义Flink有三种时间语义,即Event Time(事件时间):事件创建的时间Ingestion Time(摄入时间): 数据进入Flink集群的时间Window Processing Time(处理时间):执行操作算子时的本地系统时间,与机器相关。理想情况下事件时间和处理时间是没有延迟的,即事件产生即被处理,如同下图虚线所示,但是现实中因为网络波动,设备故障等会出现延迟,就如同下图的红线一样。不同的时间语义有不同的应用场合,但是有波动的处理时间用起来肯定很麻烦,所以我们最关心的是原创 2021-02-19 11:17:36 · 288 阅读 · 1 评论 -
Flink Window API
Window 概述 Streaming 流式计算是一种被设计用于处理无限数据集的数据处理引擎,而无限数据集是指一种不断增长的本质上无限的数据集,而 window 是一种切割无限数据为有限块进行处理的手段。 Window 是无限数据流处理的核心,Window 将一个无限的 stream 拆分成有限大小的”buckets”桶,我们可以在这些桶上做计算操作。Window 类型Window可以分为两类:ConutWindow:按照指定的数据条数生成一个Window,与时间无原创 2021-01-08 17:54:45 · 253 阅读 · 0 评论 -
Flink 流处理API
流处理API分为四部分,分别是enviroment(创建执行环境),source(获取数据源),transform(转换算子,逻辑处理),sink(数据输出)。EnviromentgetExecutionEnvironment创建一个执行环境,表示当前执行程序的上下文。如果程序是独立调用的,则此方法返回本地执行环境;如果从命令行客户端调用程序以提交到集群,则此方法放回此集群的执行环境。总结:他会根据查询运行的方式决定返回什么样的环境,是最常用的一种创建执行环境的方式。// 创建执行环境Execu原创 2021-01-05 10:14:46 · 451 阅读 · 0 评论 -
Flink运行架构
四大组件作业管理器(JobManager)控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager所控制执行。JobManager会先接收到要执行的应用程序,这个应用程序会包括:作业图、逻辑数据流图和打包了所有的类、库和其他资源的JAR包。JobManager会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“执行图”,包含了所有可以并发执行的任务。JobManager会向资源管理器请求执行任务必要的资源,也就是任务管理器上的插槽slot、一旦它获取原创 2020-12-31 09:36:53 · 218 阅读 · 0 评论 -
Flink1.10安装部署(Standalone、Standalone HA、Flink on Yarn)
Standalone 模式standalone模式可以快速搭建起flink集群,但是生产环境中不会用。将flink-1.10.0-bin-scala_2.11.tgz传输到虚拟机中。下载地址:https://archive.apache.org/dist/flink/flink-1.10.0/环境要求:jdk8.221以上scala2.11ssh免密登录# 解压缩[root@ha1 hdk]# tar -zxvf flink-1.10.0-bin-scala_2.11.tgz[roo原创 2020-12-30 16:42:10 · 964 阅读 · 0 评论 -
Flink批处理和流处理程序例子
批处理import org.apache.flink.api.scala.{ExecutionEnvironment, createTypeInformation}object WordCount { def main(args: Array[String]): Unit = { // 先创建执行环境 val env = ExecutionEnvironment.getExecutionEnvironment // 从文件中读取数据原创 2020-12-23 11:27:31 · 490 阅读 · 1 评论 -
Flink入门
Flink是什么Apache Flink 的前身是柏林理工大学一个研究性项目 Software Foundation, 在 2014 被 Apache 孵化器所接受,2015年更名为Flink并成为了Apache的顶级项目之一。Flink在德语的意思中是灵巧,敏捷的意思,所以Flink的logo是个松鼠。在Flink官网中对Flink的定义为:Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。Flink的特点事件驱动基于流的时间观在Flink的时间原创 2020-12-23 11:25:59 · 256 阅读 · 0 评论