![](https://img-blog.csdnimg.cn/2021070113545187.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Flink
文章平均质量分 60
围绕Flink展开的学习及笔记专栏
大Null
Alias:一位木带感情的码农。
因CSDN过于商业化,博主已转战Github,所有资源均已迁移至Github个人网站,具体地址请查看详细资料。
展开
-
Flink保证状态一致性的原理
目录什么是状态一致性端到端的状态一致性检查点(checkpoint)Flink+Kafka 如何实现端到端的 exactly-once 语义什么是状态一致性有状态的流处理,内部每个算子任务都可以有自己的状态,对于流处理器内部来说,所谓的状态一致性,其实就是我们所说的计算结果要保证准确。一条数据不应该丢失,也不应该重复计算。在遇到故障时可以恢复状态,恢复以后的重新计算,结果应该也是完全正确的。在流处理中,一致性分为三个级别:at-most-once(最多一次):这其实是没有正确性保障的委婉说法—原创 2021-07-01 15:47:43 · 1113 阅读 · 1 评论 -
Flink的状态后端(State Backends)
State Backends 的作用有状态的流计算是Flink的一大特点,状态本质上是数据,数据是需要维护的,例如数据库就是维护数据的一种解决方案。State Backends 的作用就是用来维护State的。一个 State Backend 主要负责两件事:Local State Management(本地状态管理) 和 Remote State Checkpointing(远程状态备份)。Local State Management(本地状态管理)State Management 的主要任务是确保原创 2021-07-01 15:04:25 · 730 阅读 · 0 评论 -
Flink的状态管理
目录Flink中的状态管理状态的原因Flink的状态分类Managed State和Raw StateOperator StateKeyed State状态一致性Flink中的状态由一个任务维护,并且用来计算某个结果的所有数据,都属于这个任务的状态可以认为状态就是一个本地变量,可以被任务的业务逻辑访问Flink 会进行状态管理,包括状态一致性、故障处理以及高效存储和访问,以便开发人员可以专注于应用程序的逻辑管理状态的原因有状态的计算是流处理框架要实现的重要功能,因为稍复杂的流处理场景都需要原创 2021-07-01 12:47:45 · 955 阅读 · 1 评论 -
Flink1.12.4 配置文件详解
目录flink-conf.yamlmastersworkerszoo.cfg日志配置flink-conf.yaml# Jobmanager的地址,taskmanager必须要识别并能连上。# 只有standalone的集群模式起作用,当执行bin/jobmanager.sh --host<hostname>的时候将被覆盖# 在YARN或者Mesos的集群模式下将自动替换为jobmanager所在节点的hostname# JobMaster节点IP地址jobmanager.rpc.ad原创 2021-06-09 16:21:07 · 1697 阅读 · 0 评论 -
Flink1.12.4 RocksDBStateBackend优化
在使用RocksDB作为state存储之后,发现性能被严重影响,吞吐能力下降了几倍不止,所以根据网上的几篇调优文档做了自己的优化,感谢下面这些博客做出的贡献:https://www.jianshu.com/p/2e61c2c83c57https://blog.csdn.net/wangshuo2019/article/details/107250801/https://blog.csdn.net/huang358468/article/details/115221066https://github.原创 2021-06-09 11:32:17 · 2652 阅读 · 0 评论 -
Flink1.12.4 TaskManager的内存调优(standalone模式)
这篇博客是对上篇《基于Flink&Kafka完成的流式模块》的补充,在上一篇里已经做了很多优化以及详细的注释,这里要补充一下内存方面的优化。因为在生产环境中实际部署之前,还是没有考虑到同时消费多个topic记录的偏移量是很大的,同时模拟的数据量并没有达到实际生产环境的数据量,所以在部署的时候因为TaskManager内存不足,一直处理内存中的数据导致没有及时发送心跳让JobManager以为TaskManager已经挂掉(实际上后来确实是会挂掉),所以就针对内存方面进行了优化。我们可以通过修改原创 2021-06-06 18:22:46 · 2288 阅读 · 1 评论 -
Flink1.12.4 Standalone模式部署
这里用三台机器测试,需要jdk1.8支持,没有的可以自己去下载安装下,我就不放教程了准备好安装包,官网下载地址:https://flink.apache.org/zh/downloads.html依次上传到服务器上解压tar -zxvf flink-1.12.4-bin-scala_2.12.tgz依次修改conf目录下的flink-conf.yaml文件jobmanager.rpc.address: JobManager的主机名修改conf下的masters主节点ip:.原创 2021-06-03 13:33:04 · 803 阅读 · 0 评论 -
Flink实时消费多个topic数据
package com.demoimport java.utilimport java.util.Propertiesimport org.apache.flink.api.common.serialization.SimpleStringSchemaimport org.apache.flink.streaming.api.environment.StreamExecutionEnvironmentimport org.apache.flink.streaming.connectors.ka.原创 2021-06-02 22:27:11 · 5815 阅读 · 8 评论 -
基于Flink&Kafka完成的流式模块
没错,这是基于下面几篇博客完成的功能:Flink基于MapState实时去重Flink接收kafka source数据Java通过UDP端口发送数据我也是在边开发边写博客呀(心累),这篇就是之前说的“flink对接kafka去重加细节优化”的博客,加入了优化部分,解决了kafka丢失数据的问题,当然UDP也会丢少量数据,大概不到千分之一吧,业务不允许的可以通过TCP发送,代码我也会加到下面。等会看到那详细的注释你们就明白我有多细心了(嘿嘿),给个关注我就不心累了-。-不多哔哔了,上代码:pac原创 2021-06-01 18:13:00 · 873 阅读 · 1 评论 -
Flink基于MapState实时去重
我这里的业务背景比较复杂,数据是非结构化的且类型很多,更致命的是数据没有唯一ID字段!!!,所以只能基于整条数据去分区去重,本来打算用布隆过滤器来实现,可是布隆过滤器的误判太搞人了,业务不允许,所以还是用MapState来做,这里去掉了flink优化的代码,便于学习和观看,后面我会写一个flink对接kafka去重加细节优化的博客,感兴趣的可以给个关注。object Kafka2flink { def main(args: Array[String]): Unit = { // 创建流处原创 2021-06-01 17:32:30 · 1703 阅读 · 1 评论 -
Flink提交任务的两种方式(非flink on yarn)
Flink提交任务有web页面提交和命令行提交两种方式程序打包按照下面的步骤把程序打包即可到第三步的路径下面找到自己的包即可web页面提交到自己的flink web页面,按照下面的步骤依次点击上传自己的程序包再按照下面的步骤提交jar包...原创 2021-06-01 17:14:52 · 1280 阅读 · 0 评论 -
Flink在Linux上单机部署教程
首先需要JDK1.8版本以上的支持,我这里就不放教程了先去官网下载flink安装包,官网地址:https://flink.apache.org/zh/downloads.html我这里下载的是flink-1.12.4,scala2.12的版本,不同需求可以下载不同版本,安装步骤都一样把包上传到服务器目录下使用下面的命令解压tar -zxvf flink-1.12.4-bin-scala_2.12.tgz然后进入解压后的flink目录下,用下面的命令执行启动脚本./bin/star.原创 2021-05-29 21:36:22 · 2089 阅读 · 0 评论 -
Flink发送数据到Kafka sink
前期准备好kafka环境,我这里是1.12.0版本的Flink,Kafka对应版本官方推荐2.4.1,Scala版本2.12,demo里用的是socket文本流做数据源在kafka目录下启动zookeeper(我这里用的是kafka自带的)./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties启动kafka./bin/kafka-server-start.sh -daemon config/server.pro原创 2021-05-21 12:49:36 · 2230 阅读 · 0 评论 -
Flink接收kafka source数据
前期准备好kafka环境,我这里是1.12.0版本的Flink,Kafka对应版本官方推荐2.4.1,Scala版本2.12在kafka目录下启动zookeeper(我这里用的是kafka自带的)./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties启动kafka./bin/kafka-server-start.sh -daemon config/server.properties别忘了添加Kafka连接原创 2021-05-21 12:06:11 · 954 阅读 · 0 评论 -
Flink:从入门到放弃
文章目录前言一、Flink简介1. Flink组件栈2. Flink基石前言待补充一、Flink简介Apache Flink 是一个框架和分布式处理引擎,用于对无界和有界数据流进行状态计算。1. Flink组件栈每一层所包含的组件都提供了特定的抽象,用来服务于上层组件:物理部署层: Flink 支持本地运行、能在独立集群或者在被 YARN 管理的集群上运行, 也能部署在云上,该层主要涉及Flink的部署模式,目前Flink支持多种部署模式:本地、集群(Standalone、YARN)、云(G原创 2021-05-19 17:22:47 · 2128 阅读 · 11 评论