![](https://img-blog.csdnimg.cn/direct/2d2316d6527441dcb48c99ef4db34993.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Flink 内容分享
文章平均质量分 92
Apache Flink的数据流编程模型在有限和无限数据集上提供单次事件(event-at-a-time)处理。在基础层面,Flink程序由流和转换组成。
Apache Flink的API:有界或无界数据流的数据流API、用于有界数据集的数据集API、表API。
之乎者也·
机车疾驰在路上,代码飞舞在指尖,热血与逻辑交织,创造属于我的数字世界。
展开
-
数据仓库内容分享(七):Flink CDC 实现海量数据实时同步转换
在 Flink CDC 1.x 版本中,如果想实现 exactly-once 同步,需要配合 Flink 提供的 checkpoint 机制,全量阶段没有做切片,则只能在一个 checkpoint 里完成,这会导致一个问题:每个 checkpoint 中间要将这张表的全量数据吐给下游的 writer,writer 会将这张表的全量数据混存在内存中,会对其内存造成非常大的压力,作业稳定性也特别差。保障实时性,因为类似 binlog 的日志文件是可以流式消费的,提供的是实时数据。链路短,组件少,运维友好。原创 2024-01-28 19:56:52 · 2235 阅读 · 0 评论 -
Flink 内容分享(三十):Flink8种分区策略及源码解读
基于上下游Operator的并行度,将记录以循环的方式输出到下游Operator的每个实例。举例: 上游并行度是2,下游是4,则上游一个并行度以循环的方式将记录输出到下游的两个并行度上;上游另一个并行度以循环的方式将记录输出到下游另两个并行度上。若上游并行度是4,下游并行度是2,则上游两个并行度将记录输出到下游一个并行度上;这种分区器会根据上下游算子的并行度,循环的方式输出到下游算子的每个实例。下游并行度为4,编号为1,2,3,4。假设上游并行度为4,编号为A,B,C,D。下游并行度为2,编号为1,2。原创 2024-01-22 08:38:33 · 1050 阅读 · 0 评论 -
Flink 内容分享(二十九):Flink on Yarn运行模式之详细解析
与Per-Job-Cluster的区别:就是Application Mode下, 用户的main函数式在集群中执行的,并且当一个application中有多个job的话,per-job模式则是一个job对应一个yarn中的application,而Application Mode则这个application中对应多个job。一个Job会对应一个Flink集群,每提交一个作业会根据自身的情况,都会单独向yarn申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。原创 2024-01-21 21:40:06 · 1263 阅读 · 0 评论 -
Flink 内容分享(二十八):深度解析 Flink 是如何管理好内存的?
如今,许多用于分析大型数据集的开源系统都是用 Java 或者是基于 JVM 的编程语言实现的。最着名的例子是 Apache Hadoop,还有较新的框架,如 Apache Spark、Apache Drill、Apache Flink。基于 JVM 的数据分析引擎面临的一个常见挑战就是如何在内存中存储大量的数据(包括缓存和高效处理)。合理的管理好 JVM 内存可以将 难以配置且不可预测的系统 与 少量配置且稳定运行的系统区分开来。原创 2023-12-31 14:35:16 · 923 阅读 · 0 评论 -
Flink 内容分享(二十七):Hadoop vs Spark vs Flink——大数据框架比较
大数据开发离不开各种框架,我们通过学习 Apache Hadoop、Spark 和 Flink 之间的特征比较,可以从侧面了解要学习的内容。众所周知,Hadoop vs Spark vs Flink是快速占领 IT 市场的三大大数据技术,大数据岗位几乎都是围绕它们展开。本文,将详细介绍三种框架之间的区别。原创 2023-12-31 14:31:35 · 1442 阅读 · 0 评论 -
Flink 内容分享(二十六):Flink任务综合调优(Checkpoint/反压/内存)
通过最小时间间隔参数配置,可以降低Checkpoint对系统的性能影响,但需要注意的事,对于非常大的状态数据,最小时间间隔只能减轻Checkpoint之间的堆积情况。在这种情况下,如果大状态数据确实需要很长的时间来进行Checkpoint,那么只能对Checkpoint的时间间隔进行优化,可以通过Checkpoint之间的最小间隔参数进行配置,让Checkpoint之间根据Checkpoint执行速度进行调整,前面的Checkpoint没有完全结束,后面的Checkpoint操作也不会触发。原创 2023-12-31 14:29:18 · 1083 阅读 · 0 评论 -
Flink 内容分享(二十五):Flink的时间类型和WaterMark机制
我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部 分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络延迟等原 因,导致乱序的产生,特别是使用kafka的话,多个分区的数据无法保证有序。所以在进行window计算 的时候,我们又不能无限期的等下去,必须要有个机制来保证一个特定的时间后,必须触发window去 进行计算了。这个特别的机制,就是watermark,watermark是用于处理乱序事件的。原创 2023-12-31 14:22:39 · 857 阅读 · 0 评论 -
Flink 内容分享(二十四):Flink 中的 Window 机制
flink-window 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们的网页。在这种情况下,我们必须定义一个窗口,用来收集最近一分钟内的数据,并对这个窗口内的数据进行计算。 Flink 认为 Batch 是 Streaming 的一个特例,所以 Flink 底层引擎是一个流式引擎,在上面实现了流处理和批处理。而窗口(window)就是从 Streaming原创 2023-12-31 14:20:21 · 926 阅读 · 0 评论 -
Flink 内容分享(二十三):Doris Connector 结合 Flink CDC 实现 MySQL 分库分表 Exactly Once精准接入
并使用增量快照算法逐个读取每个chunk的数据。在分布式系统中,为了让每个节点都能够感知到其他节点的事务执行状况,需要引入一个中心节点来统一处理所有节点的执行逻辑,这个中心节点叫做协调者(coordinator),被中心节点调度的其他业务节点叫做参与者(participant)。Flink CDC 基于数据库日志的Change Data Caputre 技术,实现了全量和增量的一体化读取能力,并借助 Flink 优秀的管道能力和丰富的上下游生态,支持捕获多种数据库的变更,并将这些变更实时同步到下游存储。原创 2023-12-31 14:07:58 · 2214 阅读 · 0 评论 -
Flink 内容分享(二十二):Flink两阶段提交之关系型数据库
最近在一边学习,一边将Flink流处理技术应用到公司的业务场景中。目前会通过采集方式将数据库的数据变更写入到Kafka,后面通过Flink处理后,落地到数仓中,因为目前数仓对外提供的是一些接口服务,所以目前还是以Oracle为主,其他的数据存放在Greenplum中。当前主要任务是将Kafka中的数据通过Flink落地到Oracle中。因为是一些交易数据,所以对数据的准确性非常敏感,Flink的强大之处就在于帮我们实现了方式来保证数据仅一次处理(Exactly-once)。原创 2023-12-31 14:04:33 · 889 阅读 · 0 评论 -
Flink 内容分享(二十一):通过Flink CDC一键整库同步MongoDB到Paimon
通过上面的操作你感受到了吗,通过 Paimon CDC 的入湖程序可以让你全自动的同步业务数据库到 Paimon 里,数据、Schema Evolution、新增表,全部被自动完成,你只用管好这一个 Flink 作业即可。这套入湖程序已经被部署到各行各业,各个公司里,给业务数据带来非常方便的镜像到湖存储里面的能力。上图是使用 Paimon CDC 工具来同步数据,可以看到,当源表发生列的新增后,流作业会自动新增列的同步,并传导到下游的 Paimon 表中,完成 Schema Evolution 的同步。原创 2023-12-31 13:59:15 · 1412 阅读 · 0 评论 -
Flink 内容分享(二十):这三种场景,建议使用Flink
在这种架构下,数据和计算分离,而且在存取数据时需要进行远程访问。从传统的BI系统到早期大数据场景下的数据分析型应用架构,始终存在着一个问题,那就是整个过程中所有的抽取、转换、加载(Extract-Transform-Load, ETL)逻辑都是离线进行的,导致整个分析流程具有较高的延迟。对Kappa架构来说,可以直接选用Flink作为其中的流处理引擎,但此时设计两套环境的主要目的不再是保证数据的准确性,而是当Flink业务代码发生变动时可以执行新的作业,待数据消费到相同位置时及时完成服务的切换。原创 2023-12-31 11:47:12 · 1067 阅读 · 0 评论 -
Flink 内容分享(十九):理想汽车基于Flink on K8s的数据集成实践
我们的解决方法是,首先获取 OB 的数据结构,分析主键及分区选择分片字段,计算出这个字段的最大值、最小值,以及这一批次的数据量,然后使用这三个信息,合理设置拉取这个数据的 size。我们对每一个任务都给用户提供了配置告警的方式,当用户启动任务的时候,任务会把相应的指标上报到 Prometheus,Prometheus 会周期性地去采集和运算,如果告警指标没有被触发,就会处于静默的状态。因此,在数据集成平台上,我们把数据源的类型映射成 Flink 类型,把数据目标的类型也映射成 Flink 类型。原创 2023-12-31 11:42:25 · 901 阅读 · 0 评论 -
Flink 内容分享(十八):基于Flink+Iceberg构建企业数据湖实战
Flink还支持通过指定catalog-impl属性来加载自定义的Iceberg Catalog实现。原创 2023-12-31 11:09:22 · 1321 阅读 · 0 评论 -
Flink 内容分享(十七):基于Flink的“批处理”尝试
Flink可以说是当下最流行的分布式流数据处理引擎。但我最近在尝试基于Flink实现数据的“微批处理”的过程中却屡屡碰壁,结果并不完美,但也对于Flink的keyBy,snapshot等机制有了更进一步的的体会,聊以记录下。需要优化的流处理作业(下称作业)中的消息处理需要满足以下几点:至少一次(at least once)的处理语义;按key保序;秒级时延。第一点基于Flink的checkpoint机制和kafka可设置消费offset的特性即可实现。原创 2023-12-31 10:08:06 · 1114 阅读 · 0 评论 -
Flink 内容分享(十六):Flink中的容错机制
Flink 作为一个大数据分布式流处理框架,必须要考虑系统的容错性,主要就是发生故障之后的恢复。Flink 容错机制的核心就是检查点,它通过巧妙的分布式快照算法保证了故障恢复后的一致性,并且尽可能地降低对处理性能的影响。本文中我们详细介绍了 Flink 检查点的原理、算法和配置,并且结合一致性理论与Flink-Kafka 的实际互连系统,阐述了如何用 Flink 实现流处理应用的端到端exactly-once 状态一致性。这既是 Flink 底层原理的深入,也与之前的状态管理、水位线机制有联系和相通之处。原创 2023-12-31 09:36:00 · 800 阅读 · 0 评论 -
Flink 内容分享(十五):FlinkCEP模式API
FlinkCEP是一种基于动态环境中事件流的分析技术,事件在这里通常是有意义的状态变化,通过分析事件间的关系,利用过滤、关联、聚合等技术,根据事件间的时序关系和聚合关系制定检测规则,持续地从事件流中查询出符合要求的事件序列,最终分析得到更复杂的复合事件。d"(或者"a",后面跟着一个或者多个"b",再往后可选择的跟着一个"c",最后跟着一个"d"),a,c?对每个模式你可以指定一个条件来决定一个进来的事件是否被接受进入这个模式,例如,它的value字段应该大于5,或者大于前面接受的事件的平均值。原创 2023-12-31 00:12:01 · 910 阅读 · 0 评论 -
Flink 内容分享(十四):美团 Flink 资源调度优化实践
一个简单有效的思路就是冗余申请,通过申请过量资源的方式,使作业所需的资源全部就绪,从而规避节点故障导致的资源就绪慢或者无法就绪的问题。与此同时,我们打通了 Yarn 的健康检查机制,因为一些人力和成本的原因,我们使用了基于 zk 的共享存储,黑名单服务发布异常节点信息,Yarn 监听并完成异常节点的处理。右侧是黑名单的处理部分,我们通过维护一个外围的黑名单服务,统一接受上一步识别出的异常节点,并把它们发送给资源管理服务或 Flink 作业来处理。通过这样的策略,我们在资源就绪时效性和资源成本中,取得平衡。原创 2023-12-30 22:58:14 · 912 阅读 · 1 评论 -
Flink 内容分享(十三):Flink在汽车行业的应用
以下内容来自蔚来汽车Flink架构师的分享蔚来是一家公司,于2014年11月成立。蔚来致力于通过提供高性能的智能电动汽车与极致用户体验,为用户创造愉悦的生活方式。实时计算在蔚来汽车的发展主要经历了如下几个阶段:2018年5月份,蔚来汽车开始接触实时计算,并采用做一些简单的流式计算数据的处理;2019年9月份,蔚来汽车,包括管理整个作业的生命周期;2021年1月份,蔚来汽车上线了实时计算平台 1.0,并开始进行 2.0 版本的开发。蔚来汽车实时计算平台 1.0 的生命周期如上图。原创 2023-12-30 22:53:13 · 983 阅读 · 0 评论 -
Flink 内容分享(十二):Flink在金融行业的应用
目录众安保险用户背景平台概况应用场景未来规划蚂蚁集团主要挑战架构方案核心技术介绍1.热启动技术编辑 2.K8S集群模式编辑3.流批一体技术以下内容来自众安保险的Flink架构师的分享众安在线财产保险股份有限公司是中国首家互联网保险公司,众安总部位于上海,不设任何分支机构,完全通过互联网展业。由"保险+科技"双引擎驱动,众安专注于应用新技术重塑保险价值链,围绕健康、数字生活、消费金融、汽车四大生态,以科技服务新生代,为其提供个性化、定制化、智能化的新保险。上图是众安保险的实时计算整体架构图,最下层是数据源原创 2023-12-30 22:41:17 · 1035 阅读 · 0 评论 -
Flink 内容分享(十一):Flink面试题总结(二)
Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。并且 Flink 提供了数据分布、容错机制以及资源管理等核心功能。, 对静态数据进行批处理操作,将静态数据抽象成分布式的数据集,用户可以方便地使用Flink提供的各种操作符对分布式数据集进行处理,支持Java、Scala和Python。,对数据流进行流处理操作,将流式的数据抽象成分布式的数据流,用户可以方便地对分布式数据流进行各种操作,支持Java和Scala。Table API。原创 2023-12-30 21:07:33 · 859 阅读 · 0 评论 -
Flink 内容分享(十):Flink面试题总结(一)
2、当某个source算子收到一个barrier时,便暂停数据处理过程,然后将自己的当前状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自己快照制作情况,同时向自身所有下游算子广播该barrier,恢复数据处理。3、下游算子收到barrier之后,会暂停自己的数据处理过程,然后将自身的相关状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自身 快照情况,同时向自身所有下游算子广播该barrier,恢复数据处理。原创 2023-12-30 20:39:47 · 841 阅读 · 0 评论 -
Flink 内容分享(九):Flink生产环境相关问题
如上图所示,当创建一个Tuple 3 对象时,包含三个层面,一是 int 类型,一是 double 类型,还有一个是 Person。Person对象包含两个字段,一是 int 型的 ID,另一个是 String 类型的 name。原创 2023-12-30 20:32:40 · 962 阅读 · 0 评论 -
Flink 内容分享(八):Flink CDC的概览和使用
CDC(Change Data Capture)是一种用于跟踪数据库中数据更改的技术。它用于监视数据库中的变化,并捕获这些变化,以便实时或定期将变化的数据同步到其他系统、数据仓库或分析平台。CDC 技术通常用于数据复制、数据仓库更新、实时报告和数据同步等场景。CDC 可以捕获数据库中的以下类型的数据变化:插入(Insert):当新数据被插入到数据库表中时。更新(Update):当数据库表中的现有数据被修改时。删除(Delete):当数据从数据库表中被删除时。原创 2023-12-30 20:05:34 · 1249 阅读 · 0 评论 -
Flink 内容分享(七):Flink 读写 HBase 总结
总结 Flink 读写 HBase本文总结了Flink SQL 读写 HBase 的参数配置,解决了在kerberos环境下因 hudi 包 hbase-site.xml 配置冲突引起的异常,学习总结了 Flink SQL 读写 HBase 时加载 HBase 配置的优先级,但是没有详细的分析源码中的逻辑,可能会在后面的文章中补充相关的源码分析~原创 2023-12-30 13:49:30 · 2140 阅读 · 0 评论 -
Flink 内容分享(六):Fink原理、实战与性能优化(六)
用户可以在Table API中自定义函数类,常见的抽象类和接口是:// 注册UDF// 使用UDF这段代码创建了自定义函数(UDF)并使用它。首先,它设置了 Flink 的环境,并通过 Blink Planner 以批处理模式运行。然后,它注册了一个名为 "UpperCase" 的 UDF,该函数将输入字符串转换为大写。最后,它在 SQL 查询中使用了这个 UDF,将 "myTable" 中的 "myField" 字段的值转换成大写形式。原创 2023-12-30 13:21:38 · 906 阅读 · 0 评论 -
Flink 内容分享(五):Fink原理、实战与性能优化(五)
窗口函数根据处理的方式可以分为两类原创 2023-12-30 11:20:24 · 1027 阅读 · 0 评论 -
Flink 内容分享(四):Fink原理、实战与性能优化(四)
然后,它打印出结果。请注意,与其他一些数据处理框架中的 Union 操作相比,例如 Spark 中的 Union 会根据某些条件去除重复的元素,Flink 的 Union 行为更接近于数学上的集合联合理论。需要注意的是,此示例只是为了演示 Global Partition 的工作原理,实际上并不推荐在负载均衡很重要的应用场景中使用这种分区策略,因为它可能导致严重的性能问题。根据数据流中指定的字段来分区,相同指定字段值的数据一定是在同一个分区中,内部分区使用的是HashPartitioner。原创 2023-12-30 11:14:08 · 1168 阅读 · 0 评论 -
Flink 内容分享(三):Fink原理、实战与性能优化(三)
将 operators 链接成 task 是非常有效的优化:它能减少线程之间的切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量。如果你已经有了一个运行Hadoop/YARN的大数据平台,选择这个模式可以方便地利用已有的资源,这是企业中用的比较多的方式。怎样实现算子并行呢?另外,Spark Streaming中的流计算其实是微批计算,实时性不如Flink,还有一点很重要的是Spark Streaming不适合有状态的计算,得借助一些存储如:Redis,才能实现。原创 2023-12-30 10:39:09 · 1533 阅读 · 0 评论 -
Flink 内容分享(二):Fink原理、实战与性能优化(二)
Override自定义Source,从0开始计数,将数字发送到下游在主逻辑中调用这个Source。原创 2023-12-30 10:05:25 · 1031 阅读 · 0 评论 -
Flink 内容分享(一):Fink原理、实战与性能优化(一)
它支持多种数据源和数据目的地,并且提供了丰富的流处理操作,如窗口化、聚合、过滤、连接和转换等。支持多种数据源和数据目的地:Flink能够从多种数据源中读取数据,并将处理结果输出到多种数据目的地中,如Kafka、Hadoop、Cassandra、ElasticSearch等。这些优化手段可以提高Flink的性能和稳定性,保证Flink的高吞吐量和低延迟处理。高吞吐量和低延迟:Flink采用了基于内存的流处理方式,可以实现毫秒级别的低延迟和高吞吐量处理。原创 2023-09-12 09:32:20 · 6002 阅读 · 1 评论