Flink
文章平均质量分 86
꧁꫞ND꫞꧂
每一天都值得期待与认证对待
展开
-
Flink1.15发布更新
Apache Flink 核心概念之一是流 (无界数据) 批 (有界数据) 一体。流批一体极大的降低了流批融合作业的开发复杂度。在过去的几个版本中,Flink 流批一体逐渐成熟,Flink 1.15 版本中流批一体更加完善,后面我们也将继续推动这一方向的进展。目前大数据处理的一个趋势是越来越多的业务和场景采用低代码的方式进行数据分析,而 Flink SQL则是这种低代码方式数据分析的典型代表。越来越多的用户开始采用 Flink SQL 来实现他们的业务,这也是 Flink 用户和生态快速增长的重要原因之一。转载 2022-05-06 14:43:55 · 3508 阅读 · 0 评论 -
Flink-CDC 1.X 源码分享
1.FlinkCDC介绍1.1定义:CDC 是变更数据捕获 (Change Data Capture) 技术的缩写,它可以将源数据库 (Source) 的增量变动记录,同步到一个或多个数据目的 (Sink)。在同步过程中,还可以对数据进行一定的处理,例如分组 (GROUP BY)、多表的关联 (JOIN) 等。简单来说就是对于数据库的变更进行一个探测,因为数据库的更改对于客户端来说是没有感知的,你需要开启线程去查询,才知道数据有没有更新。主流的CDC机制有以下两种基于查询CDC,如果是.原创 2022-01-12 15:09:37 · 1604 阅读 · 0 评论 -
Flink- CDC2.X源码分享
8月份 FlinkCDC 发布2.0.0版本,相较于1.0版本,在全量读取阶段支持分布式读取、支持checkpoint,且在全量 + 增量读取的过程在不锁表的情况下保障数据一致性。 详细介绍参考 Flink CDC 2.0 正式发布,详解核心改进。Flink CDC2.0 数据读取逻辑并不复杂,复杂的是 FLIP-27: Refactor Source Interface 的设计及对Debezium Api的不了解。本文重点对 Flink CDC 的处理逻辑进行介绍, FLIP-27 的设计及 Debe转载 2022-01-12 15:10:11 · 1961 阅读 · 0 评论 -
Access denied; you need (at least one of) the RELOAD privilege(s) for this operation Error code: 122
Flink在使用cdc读取mysql数据库的时候,如果是刚开始使用的默认的mysql,那么有如下几个操作需要检查:异常1:Change the MySQL configuration to use a binlog_format=ROW and restart the connector.1.查看mysql的service方式:1.进入mysql查看服务方式:show variables like "binlog_format%";2.如果不是row,需要修改:vim /etc/m.原创 2022-01-12 13:03:21 · 2969 阅读 · 0 评论 -
Flink 1.14 新特性预览
转载来自Apache flink 官网,便于查找阅读发到CSDN转载 2022-01-05 10:41:27 · 389 阅读 · 0 评论 -
Flink-cdc 2.1
CDC (Change Data Capture) 是一种用于捕捉数据库变更数据的技术,Flink 从 1.11 版本开始原生支持 CDC 数据(changelog)的处理,目前已经是非常成熟的变更数据处理方案。link CDC Connectors 是 Flink 的一组 Source 连接器,是 Flink CDC 的核心组件,这些连接器负责从 MySQL、PostgreSQL、Oracle、MongoDB 等数据库读取存量历史数据和增量变更数据。Flink CDC Connectors 是转载 2021-11-18 11:00:18 · 862 阅读 · 0 评论 -
Flink 1.12的CDC
基于Flink构建流批一体的实时数仓是目前数据仓库领域比较火的实践方案。随着Flink的不断迭代,其提供的一系列技术特性使得用户构建流批一体的应用变得越来越方便。本文将以Flink1.12为例,一一介绍这些特性的基本使用方式,主要包括以下内容: Flink集成Hive Hive Catalog与Hive Dialect Flink读写Hive Flink upsert-kafka连接器 Flink CDC的connector 尖叫提示:本文内容转载 2021-08-18 13:59:33 · 1568 阅读 · 0 评论 -
Flink on yarn日志收集
背景在 Flink on yarn 的模式下,程序运行的日志会分散的存储在不同的 DN 上,当 Flink 任务发生异常的时候,我们需要查看日志来定位问题,一般我们会选择通过 Flink UI 上面的 logs 来查看日志,或者登录到对应的服务器上去查看,但是在任务日志量非常大的情况下,生成的日志文件就非常多,这对于我们排查问题来说,就造成了很大的不便,所以,我们需要有一种统一的日志收集,检索,展示的方案来帮忙我们快速的分析日志,定位问题.那么我们很容易就能想到 ELK 分布式日志收集解决方案 EL转载 2021-08-18 13:55:50 · 1962 阅读 · 1 评论 -
Flink的watermark理解
摘要对于Flink来说,Watermark是个很难绕过去的概念。本文将从整体的思路上来说,运用感性直觉的思考来帮大家梳理Watermark概念。1 问题关于Watermark,很容易产生几个问题Flink 流处理应用中,常见的处理需求/应对方案是什么? Watermark究竟应该翻译成水印还是水位线? Watermark本质是什么? Watermark是如何解决问题?下面我们就来简要解答这些问题以给大家一个大致概念,在后文中,会再深入描述。问题1. Flink 流处理应用中常见的转载 2021-05-17 20:36:39 · 696 阅读 · 0 评论 -
基于Mysql的Flink-cdc
flink-cdc解析要想深入学习,先去哥的GitHub上去下载源码:https://github.com/BaronND/flink-cdc-connectors起源背景数据库的更改对于客户端来说是没有感知的,你需要开启线程去查询,才知道数据有没有更新,但是就算是查询,如果是直接select * from ....,这样获取的结果还要和上次获取的结果对比,才知道数据有没有发生变化,耗时大。要想实时监控mysql数据,要用到mysqlbinlog日志处理流程,binlog里保存了mysql的DD.原创 2021-04-16 11:45:20 · 2469 阅读 · 0 评论 -
yarn application日志查看
Yarn application 日志查看方式一:正在运行任务,可以在任务启动后或者在yarn application UI页面找到applicationId,然后在服务器上查看:yarn logs -applicationId ***方式二:已完成任务点击applicationId进去查看log方式三:在yarn-site.xml配置文件里查看log的位置,然后可以直接在浏览器上看log详情Flink任务日志查看方式一:任务启动后直接在linux上看打印出...原创 2021-04-12 13:36:55 · 8855 阅读 · 0 评论 -
Flink的反压机制
Flink 流处理为什么需要⽹络流控? Flink V1.5 版之前⽹络流控介绍 Flink V1.5 版之前的反压策略存在的问题 Credit的反压策略实现原理,Credit是如何解决 Flink 1.5 之前的问题? Flink 如何在吞吐量和延迟做权衡? Flink 反压相关 Metrics 介绍 基于 Flink 的流控机制和反压如何定位 Flink 任务的瓶颈。或者说,如果⼀个平时正常的 Flink 任务突然出现延迟了,怎么来定位问题?到底是 Kafka 读取数据慢,还是中间某原创 2021-04-08 18:01:23 · 651 阅读 · 0 评论 -
腾讯基于Flink的优化扩展
一、背景及现状1.三种模式的分析Flink 作业目前有三种创建方式:JAR 模式、画布模式和 SQL 模式。不同的提交作业的方式针对的人群也是不一样的。■ Jar 模式Jar 模式基于 DataStream/DataSet API 开发,主要针对的是底层的开发人员。 优点: 功能灵活多变,因为它底层的 DataStream/DataSet API 是 Flink 的原生 API,你可以用它们开发任何你想要的算子功能或者 DAG 图; 性能...转载 2021-03-16 20:29:14 · 543 阅读 · 0 评论 -
flink 保证一致性的 barrier对⻬齐
barrier对⻬齐什什么是barrier对⻬齐?⼀一旦Operator从输⼊入流接收到CheckPoint barrier n,它就不不能处理理来⾃自该流的任何数据记录,直到它从其他所有输⼊入接收到barrier n为⽌止。否则,它会混合属于快照n的记录和属于快照n + 1的记录接收到barrier n的流暂时被搁置。从这些流接收的记录不不会被处理理,⽽而是放⼊入输⼊入缓冲区。上图中第2个图,虽然数字流对应的barrier已经到达了了,但是barrier之后的1、2、3这些数据只能放到b.原创 2021-02-10 16:59:44 · 1786 阅读 · 0 评论 -
FlinkX数据同步
Flink数据同步先行者-FlinkX最近在学习Flink,看到目前的Connector支持还较少,联想到之前的DataX与FlinkX,由感而发。从我个人的理解上,Connector是连接各个数据源的连接器,它屏蔽了一系列的组件兼容问题,实现统一的数据源连接与数据实体的抽象,就是为了数据通道而生的基础设施,而目前数据通道做的比较全的就是DataX。DataX是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、F...转载 2021-01-07 18:16:31 · 1767 阅读 · 0 评论 -
flink1.12.0发布了,他来了他来了
Apache Flink 社区很荣幸地宣布 Flink 1.12.0 版本正式发布!近 300 位贡献者参与了 Flink 1.12.0 的开发,提交了超过 1000 多个修复或优化。这些修改极大地提高了 Flink 的可用性,并且简化(且统一)了 Flink 的整个 API 栈。其中一些比较重要的修改包括: 在DataStream API上添加了高效的批执行模式的支持。这是批处理和流处理实现真正统一的运行时的一个重要里程碑。 实现了基于Kubernetes的高可用性(HA)方案,...转载 2020-12-11 10:27:57 · 5191 阅读 · 5 评论 -
flink数据写入hive实现demo
首先呢,flink写入hive已经在1.10就实现了,但是我们这么用呢,其实是大多数公司不得已的情况,也是慢慢转型而来的一个适中的使用情况,Apache也为我们考虑提供了支持,帮我们再分布式环境、流计算的今天提供了更好的帮助。感谢这些社区贡献者和大佬的们研究分享。以下是实现的一个小demo,大家共同分析学习,有问题交流学习。注意: 在本地环境读数据要是可以的话,写数据就一定可以的。写的时候需要注意服务器上的环境,主要是权限和jar依赖。1.代码实现1.先来个最基本的测试demo,...原创 2020-11-30 11:14:27 · 2311 阅读 · 1 评论 -
flink JdbcParameterValuesProvider
flink 可以支持传入参数的时候public class FlinkReadMysql { public static void main(String[] args) { ExecutionEnvironment env =ExecutionEnvironment.getExecutionEnvironment(); Map<String, Object> pam=new HashMap<>(); pam.put("m原创 2020-11-27 11:19:08 · 406 阅读 · 0 评论 -
flink 读写hive注意细节
Linux环境下安装FLink1.11.1并启动SQL-client读取Hive数据首先去官网下载Flink1.11.1的tgz的包,教程如上篇文章上半部分流程一样,然后配置一下FLINK_HOME/conf/sql-client-defaults.yaml:catalogs: - name: myhive #自己定个名字就行 type: hive hive-conf-dir: /etc/hive/conf # hive-site.xml的路径 hive-原创 2020-11-13 09:30:46 · 421 阅读 · 0 评论 -
网易云音乐基于Flink实时数仓实践
背景介绍截止到今天为止,网易云音乐实时计算平台的机器数量有150多个,运行任务有700个,数据峰值的QPS有400万。李涵淼透露道,“大概有180多个开发者在用这个实时计算平台。”在业务覆盖层面,跟实时有关的基本是全覆盖,包括实时报表、实时特征、实时索引,以及实时业务等。实时计算平台是从2018年上半年开始做的,期间经历了两个版本的迭代,直到2020上半年,任务增长了将近200%。网易云是基于1.7的版本,做的实时计算平台version-1设计。大家都知道,Flink已经更新到1.11版本了..转载 2020-11-12 15:34:04 · 565 阅读 · 0 评论 -
Flink SQL CDC 上线
01 项目背景本人目前参与的项目属于公司里面数据密集、计算密集的一个重要项目,需要提供高效且准确的 OLAP 服务,提供灵活且实时的报表。业务数据存储在 MySQL 中,通过主从复制同步到报表库。作为集团级公司,数据增长多而且快,出现了多个千万级、亿级的大表。为了实现各个维度的各种复杂的报表业务,有些千万级大表仍然需要进行 Join,计算规模非常惊人,经常不能及时响应请求。随着数据量的日益增长和实时分析的需求越来越大,急需对系统进行流式计算、实时化改造。正是在这个背景下,开始了我们与 Flink S转载 2020-11-12 15:30:25 · 613 阅读 · 0 评论 -
flink读取kafka
flink1.11.读取kafka数据Watermark的核心本质可以理解成一个延迟触发机制。在 Flink 的窗口处理过程中,如果确定全部数据到达,就可以对 Window 的所有数据做 窗口计算操作(如汇总、分组等),如果数据没有全部到达,则继续等待该窗口中的数据全 部到达才开始处理。这种情况下就需要用到水位线(WaterMarks)机制,它能够衡量数据处 理进度(表达数据到达的完整性),保证事件数据(全部)到达 Flink 系统,或者在乱序及 延迟到达时,也能够像预期一样计算出正确并且连续的结果。原创 2020-11-10 18:38:14 · 973 阅读 · 0 评论 -
Flink job 优化
1.代码层优化1.没有必要的变量直接使用2.多个地方用到的配置文件提取到公共的地方3.用集合处理多个变量修改为4.冗余代码换个写法改为:5.规范注释的书写6.对于异常类的处理,如果捕捉到一定要处理,不然任务报错没有查询的地方7.配置信息从类里抽出来,直接写到配置文件里,方便查找统一修改如下:2.流程优化: 对于任务算子的并行度单独设置, 2.Hbase落地表分区写入,超过100W数据的加缓存,...原创 2020-11-05 10:27:39 · 572 阅读 · 0 评论 -
Flink CEP计算商品订单流失量
假设有个需求需要实时计算商品的订单流失量,规则如下: 用户点击商品 A,但购买了同类商品 B,则商品 A 记为一次订单流失量; 点击商品 A 到购买同类商品 B 的有效时间窗口应该小于 12 个小时; 有效窗口内多次点击商品 A 视为一次订单流失。 第三条规则可以理解为数据流去重,我在上一节已经介绍过了。为了更加专注于计算商品的订单流失量,本篇文章不再关注数据去重。看到这个需求,想到可以用上一节的 ProcessFunction 进行状态管理,比如说基于用户进行分流,然后每转载 2020-10-30 11:11:43 · 399 阅读 · 0 评论 -
Could not complete the operation. Number of retries has been exhausted.
Flink任务失败,其实是个小问题,但是看不到真正的日志误导,你都不会发现是哪里除了问题,直到你怀疑自己。由于通过跳转机登录的一个服务器,然后无法查看Flink运行的task日志,只有在flink目录下的log,但是这个log只有部分日志,代码输出日志级别不够也是看不到,而且还是通过flink-per-job的方式提交的。解决:切换到yarn-session方式,这样就算是跳转机的那个,只要能访问的那个IP上可以看到flink的运行日志就可以确定异常问题是什么原因造成的,最后是数据源硬编码改了,原创 2020-10-10 16:56:15 · 6183 阅读 · 3 评论 -
Flink的部分原理图谱
Flink的生命周期作业图Flink的SQL和tableAPIFlink的托管模式上下游数据图谱原创 2020-09-27 17:01:49 · 127 阅读 · 0 评论 -
2020-09-14
Flink 原理与实现:Session WindowFlink 一些内建的窗口,包括滑动窗口、翻滚窗口。本文将深入讲解一种较为特殊的窗口:会话窗口(session window)。当我们需要分析用户的一段交互的行为事件时,通常的想法是将用户的事件流按照“session”来分组。session 是指一段持续活跃的期间,由活跃间隙分隔开。通俗一点说,消息之间的间隔小于超时阈值(sessionGap)的,则被分配到同一个窗口,间隔大于阈值的,则被分配到不同的窗口。目前开源领域大部分的流计算引擎都有窗口的.转载 2020-09-14 11:09:37 · 120 阅读 · 0 评论 -
Savepoint 和 Checkpoint 不同
什么是 Savepoint 和 CheckpointSavepoint 是用来为整个流应用程序在某个“时间点”(point-in-time)的生成快照的功能。该快照包含了输入源的位置信息,数据源读取到的偏移量(offset),以及整个应用的状态。借助 Chandy-Lamport 算法的变体,我们可以无需停止应用程序而得到一致的快照。Savepoint 包含了两个主要元素:首先,Savepoint 包含了一个目录,其中包含(通常很大的)二进制文件,这些文件表示了整个流应用在 Checkpoint/S转载 2020-09-14 10:42:45 · 814 阅读 · 0 评论 -
Flink上线运行job应该考虑的事情
本文阐述了使 Flink 应用达到生产就绪状态所需要的一些配置步骤。在以下部分中,我们概述了重要的配置参数,这些参数是技术领导、DevOps、工程师们在将 Flink 应用程序上线生产之前都需要仔细考虑的。Apache Flink 为大多数配置都提供了开箱即用的默认选项,在许多情况下,它们是POC阶段(概念验证)或探索 Flink 不同 API 和抽象的很好的起点。然而,将 Flink 应用程序投入生产还需要额外的配置,这些配置可以高效地调整应用的规模,使其达到生产就绪状态,并能与不同系统之间保持兼容,转载 2020-09-14 10:40:46 · 434 阅读 · 0 评论 -
Blink和Flink社区近况
聊聊Blink开源和Flink社区近况前几天 Blink 开源的消息刷了朋友圈,因为笔者一直关注着社区的发展。所以今天想从我个人的角度来聊聊 Blink 开源,社区 merge Blink 的计划,以及最近发生的一些很有意义的事情。Blink 开源这次 Blink 开源的主要目的是让社区的开发者们能尽早地尝试一些他们感兴趣的功能与改进。我觉得最核心的贡献包括:Stream SQL 的新功能和性能优化:如维表Join、TopN、支持迟到数据和提早输出的Window、有效解决Agg数据倾斜问题等转载 2020-09-14 09:32:51 · 859 阅读 · 0 评论 -
Flink 读取hdfs数据和hbase数据对比
摘要:小数据量就没必要使用这些比较重的插件或者开源框架,反而拖慢速度。直接读取hdfs反而会快些的,然后就是使用过滤的时候,hbase本身的escan是比数据读取后在flink层面做过滤要快的。1000W数据量在HBASE和hdfs上的对比,在flink per-job的模式下如下:在yarn session上会快一些,是因为有些数据第二次跑的时候会缓存。一、flink读取Hbase主要过滤的部分val FAMILY = Bytes.toBytes("info") // hbas..原创 2020-09-11 14:15:08 · 1132 阅读 · 0 评论 -
flink中和数据共享和参数传递
Flink中参数传递和数据共享众所周知,flink作为流计算引擎,处理源源不断的数据是其本意,但是在处理数据的过程中,往往可能需要一些参数的传递,那么有哪些方法进行参数的传递?在什么时候使用?这里尝试进行简单的总结。使用configuration 在main函数中定义变量// Class in Flink to store parametersConfiguration configuration = new Configuration();configuration.setStrin转载 2020-09-08 15:25:02 · 4214 阅读 · 1 评论 -
Flink 任务提交失败 Could not deploy Yarn job cluster
1.Flink提价任务,读取Hbase数据和hdfs数据,需要单独倒入一些hbase的依赖jar,所以加入了maven依赖,本地能正常测试运行,但是发布到yarn上运行报错,所以测试读取hdfs文件的时候,去掉依赖就可以了。2.加入打包依赖的时候,注意加入过滤不需要的文件,不然会报错。org.apache.flink.client.program.ProgramInvocationException: The main method caused an error: Could not depl.原创 2020-09-08 14:45:22 · 10843 阅读 · 6 评论 -
Flink升级到1.11.1
1.如果由其他版本升级1.11.1后报错No ExecutorFactory found to execute the application,加入以下依赖<!--flink升级到1.11.1 需要添加依赖--> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-clients_${scala.binary.version}</art..原创 2020-09-07 13:18:49 · 539 阅读 · 0 评论 -
Flink的dataset读取文件
最近对比flink的批处理,读取文件和读取hbase数据的时候,到底是哪种方式好,读取hbase的之前已经发过了,但是读取hdfs的没有,所以又写了一个测试了一下,其实根本不用考虑,如果是直接把文件数据整体读取过来,一定是直接读hdfs快,因为它不会增加一些scheme信息,而且也不用和zookeeper啊,Regionsever交互什么,这些事最根本的逻辑,不知道的自己去看hbase的存储原理。但是要是把这些数据拿过来计算,或者对数据做ETL,请问 我们的大数据这些组件是用来干嘛的?反思一...原创 2020-09-06 16:32:44 · 614 阅读 · 0 评论 -
Flink kafkaConsumer on kafka
Flink kafkaConsumer要想自定义一个source,在flink里面无非就两种情况:1.通过实现sourceFunction接口来自定义并行度为1的数据源;2.通过实现ParallelSourceFunction接口或者继承RichParallelSourceFuncion来自定义具有并行度的数据源。使用的FlinkKafkaConsumer011 其实也是继承了FlinkKafkaConsumer10 然后FlinkKafkaConsumer10 又继承了RichParal.原创 2020-09-05 10:26:53 · 253 阅读 · 0 评论 -
了解Flink 的状态管理和检查点机制
从状态说起状态 (State) 是 Flink 程序中构建复杂逻辑的基本组件。流处理中的状态可以视作算子上的记忆能力,可以保留和已经处理完的输入相关的信息,并对后续输入的处理造成影响。与之相反,流处理中的无状态操作只会考虑到当前处理的元素,不会受到处理完毕的元素的影响,也不会影响到后续待处理的元素。简单来说,假定一个 source stream 中的事件消息都符合e = {event_id:int, event_value:int}这种模式。如果我们的目标是提取出每一条消息中的event_va...原创 2020-09-03 17:39:09 · 614 阅读 · 0 评论 -
Flink的流处理状态管理
1.这是一个普通的flink流处理任务,读取kafka的数据,然后输出。package com.flink.java.project;import org.apache.flink.api.common.functions.MapFunction;import org.apache.flink.api.common.serialization.SimpleStringSchema;import org.apache.flink.api.java.tuple.Tuple;import org.转载 2020-09-02 10:01:48 · 393 阅读 · 0 评论 -
深入理解 Flink 容错机制
作为分布式系统,尤其是对延迟敏感的实时计算引擎,Apache Flink 需要有强大的容错机制,以确保在出现机器故障或网络分区等不可预知的问题时可以快速自动恢复并依旧能产生准确的计算结果。事实上,Flink 有一套先进的快照机制来持久化作业状态[1],确保中间数据不会丢失,这通常需要和错误恢复机制(作业重启策略或 failover 策略)配合使用。在遇到错误时,Flink 作业会根据重启策略自动重启并从最近一个成功的快照(checkpoint)恢复状态。合适的重启策略可以减少作业不可用时间和避免人工介入处理转载 2020-08-31 14:51:37 · 485 阅读 · 0 评论 -
flink在Linux的运行方式
普通的jar:主类入口是普通的类,监控kafka,但是里面又创建了flink批环境nohup java -jar -Xmx8192m -Xms2048m k4.jar &flink jar:主类就是flink的入库监控bin/flink run -m yarn-cluster -p 3 -c flinkonkafka-yjm 2048m -ytm 8192m /test/flink_test.jar报错:Flink Could not resolve substitutio...原创 2020-08-24 14:58:10 · 1312 阅读 · 0 评论