
Flink
文章平均质量分 71
GOD_WAR
喜欢钻研大数据、python、机器学习、人工智能...
展开
-
Flink几个性能调优
flink性能优化原创 2023-10-24 10:56:32 · 1151 阅读 · 0 评论 -
Flink stop 和 cancel停止 job 的区别
Flink stop 和 cancel停止 job 的区别原创 2023-06-28 15:08:02 · 3584 阅读 · 2 评论 -
Flink CDC 经典13 问
flinkcdc 内容原创 2022-12-05 16:52:52 · 1733 阅读 · 0 评论 -
Flink经典的生产问题和解决方案
Flink经典的生产问题和解决方案原创 2022-10-24 08:00:00 · 1607 阅读 · 0 评论 -
flink 异步IO AsyncFunction
flink使用AsyncFunction在流式处理的过程中, 在中间步骤的处理中, 如果涉及到一些费事的操作或者是外部系统的数据交互, 那么就会给整个流造成一定的延迟. 在 flink 的 1.2 版本中引入了 Asynchronous I/O, 能够支持异步的操作, 以提高 flink 系统与外部数据系统交互的性能及吞吐量.在使用 Flink 的异步 IO 时, 主要有两个 API可以使用, 一个是AsyncDataStream.unorderedWait( ), ...原创 2022-03-19 09:33:21 · 1350 阅读 · 0 评论 -
Flink broadcast的用法
在Flink中,同一个算子可能存在若干个不同的并行实例,计算过程可能不在同一个Slot中进行,不同算子之间更是如此,因此不同算子的计算数据之间不能像Java数组之间一样互相访问,而广播变量Broadcast便是解决这种情况的.在 flink 中, 针对某一个算子需要使用公共变量的情况下, 就可以把对应的数据给广播出去, 这样在所有的节点中都可以使用了. 典型的代码结构如下所示:在一个算子中使用广播变量主要有两个步骤: 广播变量 (一般写在算子的后面即可) 使...原创 2022-03-18 16:39:47 · 4447 阅读 · 0 评论 -
Flink Savepoint 和 Checkpoint 使用
flink Savepoint 和 Checkpoint 使用checkpoint 应用定时触发,用于保存状态,会过期 内部应用失败重启的时候使用,特点是作业容错自动恢复,轻量,自动周期管理 savepoint 用户手动执行,是指向Checkpoint的指针,不会过期 在升级的情况下使用,特点关注状态数据可以移植性,状态数据生成和恢复成本高,用户手动管理 注意:为了能够在作业的不同版本之间以及 Flink 的不同版本之间顺利升级,强烈推荐程序员通过 uid(String) 方法手动的给原创 2022-03-17 10:54:53 · 5055 阅读 · 0 评论 -
FLINK提交任务的两种方式
FLINK提交任务的两种方式1、命令行提交bin/flink run -m hadoop:8081 -c cn.test.day01.StreamWordCount -p 4 /test/flink-java-1.0.jar-m 指定jobmanager的位置 -c 程序的全类名 -p 指定并行度更多参数参考:Flink 命令行提交参数2、web页面提交这里上传jar包实际上是传到了JobManager所在的节点...原创 2022-03-17 10:03:29 · 9483 阅读 · 0 评论 -
Flink 命令行提交参数
Flink 命令行提交参数:1 参数必选 : -n,--container <arg> 分配多少个yarn容器 (=taskmanager的数量) 2 参数可选 : -D <arg> 动态属性 -d,--detached 独立运行 -jm,--jobManagerMemory <arg> JobManager的内存 [i原创 2022-03-17 09:58:51 · 13367 阅读 · 0 评论 -
Flink operator-state 和 keyed-state 两者的区别
operator-state 和 keyed-state 两者的区别详细描述一下上面的问题:operator-state 和 keyed-state 两者的区别?最大并行度又和它们有什么关系?举个生产环境中经常出现的案例,当用户停止任务、更新代码逻辑并且改变任务并发度时,两种 state 都是怎样进行恢复的?总结如下:operator-state: 状态适用算子:所有算子都可以使用 operator-state,没有限制。 状态的创建方式:如果需要使用 op...原创 2022-03-12 10:03:31 · 697 阅读 · 0 评论 -
Flink 反压问题
一、反压有哪些危害? 任务处理性能出现瓶颈:以消费 Kafka 为例,大概率会出现消费 Kafka Lag。 Checkpoint 时间长或者失败:因为某些反压会导致 barrier 需要花很长时间才能对齐,任务稳定性差。 整个任务完全卡住。比如在 TUMBLE 窗口算子的任务中,反压后可能会导致下游算子的 input pool 和上游算子的 output pool 满了,这时候如果下游窗口的 watermark 一直对不齐,窗口触发不了计算的话,下游算子就永远无法触发窗口计算了。原创 2022-03-12 09:54:52 · 8844 阅读 · 0 评论 -
Embedded metastore is not allowed. Make sure you have set a valid value for hive.metastore.uris
flink集成hive 启动:flink-sql 报错:./sql-client.sh embedded报错如下:2021-12-18 17:49:42,129 INFO org.apache.hadoop.hive.conf.HiveConf [] - Found configuration file file:/home/hadoop/apps/hive-3.1.2/conf/hive-site.xmlException in thr...原创 2021-12-24 09:18:52 · 3638 阅读 · 1 评论 -
flinkHive com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
flink集成hive 启动:flink-sql 报错:./sql-client.sh embedded报错如下:Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue. at org.apache.flink.table.client.SqlClien...原创 2021-12-24 09:12:31 · 1619 阅读 · 3 评论 -
Flink集成Hive ClassNotFoundException: org.apache.hadoop.conf.Configuration
Apache Hive 是基于 Hadoop 之上构建的, 所以还需要 Hadoop 的依赖,配置好HADOOP_CLASSPATH即可。这一点非常重要,否则在使用FlinkSQL Cli查询Hive中的表时,会报如下错误:Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an i原创 2021-12-24 08:58:28 · 7579 阅读 · 0 评论 -
Flink集成Hive 步骤
使用Hive构建数据仓库已经成为了比较普遍的一种解决方案。目前,一些比较常见的大数据处理引擎,都无一例外兼容Hive。Flink从1.9开始支持集成Hive,不过1.9版本为beta版,不推荐在生产环境中使用。在Flink1.10版本中,标志着对 Blink的整合宣告完成,对 Hive 的集成也达到了生产级别的要求。值得注意的是,不同版本的Flink对于Hive的集成有所差异,本文将以最新的Flink1.12版本为例,阐述Flink集成Hive的简单步骤Flink集成...原创 2021-12-24 08:52:44 · 3304 阅读 · 1 评论 -
Flink任务提交给Yarn,web界面显示slot 为0,运行程序显示只有一个Taskmanager
使用yarn-session在yarn集群上启动一个flink集群:./yarn-session.sh -n 4 -jm 1024 -tm 1024 -s 2此时,在master:8088的界面看到多了一个application,但是running containers数量为1;【为何不是分配的4】然后,继续在yarn上提交flink的jar包运行:./flink run -p 4 /home/hadoop/proj/wordcount.jar点开8088界面的Tracking原创 2021-11-30 11:50:12 · 2771 阅读 · 1 评论 -
Flink 1.12 以 upsert 的方式读写 Kafka 数据
在某些场景中,比如GROUP BY聚合之后的结果,需要去更新之前的结果值。这个时候,需要将 Kafka 消息记录的 key 当成主键处理,用来确定一条数据是应该作为插入、删除还是更新记录来处理。在Flink1.11中,可以通过flink-cdc-connectors项目提供的changelog-json format来实现该功能。关于该功能的使用,在Flink1.12版本中, 新增了一个upsert connector(upsert-kafka),该 connector 扩展自现有的 Kafka...原创 2021-11-09 11:32:21 · 3565 阅读 · 2 评论 -
Flink Sql Append 、 Retract 和 Upsert 流区别
Append-only 流:仅通过 INSERT 操作修改的动态表可以通过输出插入的行转换为流。Retract 流:retract 流包含两种类型的 message: add messages 和 retract messages 。通过将INSERT 操作编码为 add message、将 DELETE 操作编码为 retract message、将 UPDATE 操作编码为更新(先前)行的 retract message 和更新(新)行的 add messag...原创 2021-11-09 11:23:33 · 4796 阅读 · 0 评论 -
实时数仓架构图总结
基于Flink的滴滴实时数仓实践分享嘉宾:潘澄,滴滴基础平台 资深研发工程师实时OLAP,从0到1分享嘉宾:高正炎,比特大陆腾讯基于Flink + Iceberg 全场景实时数仓的建设实践分享嘉宾:苏舒,腾讯平台 高级研发工程师腾讯看点基于Flink构建万亿数据量下的实时数仓及实时查询系统分享嘉宾:王展雄,腾讯看点数据团队高级工程师龙逸尘-Flink在顺丰的应用实践分享嘉宾:龙逸尘,顺丰科技..原创 2021-10-24 10:28:15 · 793 阅读 · 0 评论 -
Flink 作业的问题定位
Flink 作业的问题定位1.问题定位口诀“一压二查三指标,延迟吞吐是核心。时刻关注资源量 , 排查首先看GC。”一压是指背压,遇到问题先看背压的情况,二查就是指 checkpoint ,对齐数据的时间是否很长,state 是否很大,这些都是和系统吞吐密切相关的,三指标就是指 Flink UI 那块的一些展示,我们的主要关注点其实就是延迟和吞吐,系统资源,还有就是 GC logs。 看反压 :通常最后一个被压高的 subTask 的下游就是 job 的瓶颈之一。 看 Checkp原创 2021-04-29 11:42:17 · 422 阅读 · 0 评论 -
Flink checkpoint 优化
Checkpoint 调优1.什么是 checkpoint 简单地说就是 Flink 为了达到容错和 exactly-once 语义的功能,定期把 state 持久化下来,而这一持久化的过程就叫做 checkpoint ,它是 Flink Job 在某一时刻全局状态的快照。当我们要对分布式系统实现一个全局状态保留的功能时,传统方案会引入一个统一时钟,通过分布式系统中的 master 节点广播出去给每一个 slaves 节点,当节点接收到这个统一时钟时,它们就记录下自己当前的状态即可。但是统一原创 2021-04-29 11:40:14 · 449 阅读 · 0 评论 -
Flink优化总结
Flink优化总结配置内存操作场景Flink是依赖内存计算,计算过程中内存不够对Flink的执行效率影响很大。可以通过监控GC(Garbage Collection),评估内存使用及剩余情况来判断内存是否变成性能瓶颈,并根据情况优化。监控节点进程的YARN的Container GC日志,如果频繁出现Full GC,需要优化GC。GC的配置:在客户端的"conf/flink-conf.yaml"配置文件中,在“env.java.opts”配置项中添加参数:-Xloggc:<LO原创 2021-04-29 11:27:26 · 1672 阅读 · 0 评论 -
Flink1.12.1 通过Table API / Flink SQL读取HBase2.4.0
1. 环境废话不多说,这里用到的环境如下(不确定是否都必要,但是至少我是这个环境) zookeeper 3.6.2 Hbase 2.4.0 Flink 1.12.1 2. HBase表# 创建表create 'u_m_01' , 'u_m_r'# 插入数据put 'u_m_01', 'a,A', 'u_m_r:r' , '1'put 'u_m_01', 'a,B', 'u_m_r:r' , '3'put 'u_m_01', 'b,B', 'u_m_r:r'原创 2021-04-23 21:01:24 · 899 阅读 · 0 评论 -
Flink 的广播变量
Flink 支持广播变量,就是将数据广播到具体的 taskmanager 上,数据存储在内存中,这样可以减缓大量的 shuffle 操作;比如在数据 join 阶段,不可避免的就是大量的 shuffle 操作,我们可以把其中一个 dataSet 广播出去,一直加载到 taskManager 的内存中,可以直接在内存中拿数据,避免了大量的 shuffle,导致集群性能下降;广播变量创建后,它可以运行在集群中的任何 function 上,而不需要多次传递给集群节点。另外需要记住,不应该修改广播变量,这样原创 2021-04-06 15:45:58 · 332 阅读 · 0 评论 -
flink 1.12 tEnv.createTemporaryView(“dspClick“, dspClickTable,$(“id“))
使用Stream 转table api 中的fromDataStream的java和scala写法(需要引入flink的$符号)1.下面是官网的scala和java写法2、我引入了import org.apache.flink.table.api.Expressions.$ ,上面是1.10写法,使用官网1.11版本的scala编程还是报错:采用官网scala写法报错3、最终scala的编程引用java的方式可以了!import org.apache.fl...原创 2021-03-24 23:57:21 · 2914 阅读 · 1 评论 -
Flink 1.11.2 实现kafka到mysql
添加pom <properties> <flink.version>1.11.2</flink.version> </properties> <dependencies> <dependency> <groupId>org.apache.flink</groupId> <artifactId>原创 2021-01-12 17:16:14 · 408 阅读 · 1 评论 -
Flink CEP 实现动态更新规则
规则引擎通常对我们的理解就是用来做模式匹配的,在数据流里面检测满足规则要求的数据。有人会问为什么需要规则动态变更呢?直接修改了规则把服务重启一下不就可以了吗,这个当然是不行的,规则引擎里面通常会维护很多不同的规则,例如在监控告警的场景下,如果每个人修改一下自己的监控阈值,就重启一下服务,必然会影响其他人的使用,因此需要线上满足规则动态变更加载。本篇基于Flink-Cep 来实现规则动态变更加载,同时参考了Flink中文社区刘博老师的分享(https://developer.aliyun.com/articl原创 2020-12-14 22:29:00 · 4149 阅读 · 4 评论 -
Flink 1.11 Checkpoint 原理及优化
一、什么是 checkpoint上次发文,提到了 Flink 可以非常高效的进行有状态流的计算,通过使用 Flink 内置的 Keyed State 和 Operator State,保存每个算子的状态。默认情况下,状态是存储在 JVM 的堆内存中,如果系统中某个环节发生了错误,宕机,这个时候所有的状态都会丢失,并且无法恢复,会导致整个系统的数据计算发生错误。此时就需要 Checkpoint 来保障系统的容错。Checkpoint 过程,就是把算子的状态周期性持久化的过程。在系统出错后恢复时原创 2020-12-14 11:34:06 · 1625 阅读 · 0 评论 -
Flink 1.11.2 SQL 读写 MySQL
FlinkSQL读取MySQL大多用作维表关联,聚合结果写入MySQL,简单记录一下用法。JDBC SQL Connector添加依赖 <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-jdbc_2.12</artifactId> <v...原创 2020-12-06 18:53:22 · 1532 阅读 · 3 评论 -
Flink广播变量broadcast
Flink广播变量broadcastBroadcast 广播变量:可以理解为是一个公共的共享变量,我们可以把一个dataset 或者不变的缓存对象(例如map list集合对象等)数据集广播出去,然后不同的任务在节点上都能够获取到,并在每个节点上只会存在一份,而不是在每个并发线程中存在。如果不使用broadcast,则在每个节点中的每个任务中都需要拷贝一份dataset数据集,比较浪费内存(也就是一个节点中可能会存在多份dataset数据)。import org.apache.flink.api.原创 2020-12-05 11:53:07 · 1046 阅读 · 0 评论 -
Flink-Cep实现规则动态更新
Flink-Cep实现规则动态更新规则引擎通常对我们的理解就是用来做模式匹配的,在数据流里面检测满足规则要求的数据。有人会问为什么需要规则动态变更呢?直接修改了规则把服务重启一下不就可以了吗,这个当然是不行的,规则引擎里面通常会维护很多不同的规则,例如在监控告警的场景下,如果每个人修改一下自己的监控阈值,就重启一下服务,必然会影响其他人的使用,因此需要线上满足规则动态变更加载。本篇基于Flink-Cep 来实现规则动态变更加载,同时参考了Flink中文社区刘博老师的分享(https://develope转载 2020-11-30 21:47:42 · 6251 阅读 · 2 评论 -
Flink 1.11 的Watermark机制
在使用eventTime的时候如何处理乱序数据?我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的。虽然大部分情况下,流到operator的数据都是按照事件产生的时间顺序来的,但是也不排除由于网络延迟等原因,导致乱序的产生,特别是使用kafka的话,多个分区的数据无法保证有序。所以在进行window计算的时候,我们又不能无限期的等下去,必须要有个机制来保证一个特定的时间后,必须触发window去进行计算了。这个特别的机制,就是watermark。Watermark原创 2020-11-05 11:01:30 · 518 阅读 · 0 评论 -
Error: Static methods in interface require -target:jvm-1.8
https://blog.youkuaiyun.com/yongdaime/article/details/108586263Error:(55, 92) Static methods in interface require -target:jvm-1.8 .assignTimestampsAndWatermarks(WatermarkStrategy.forBoundedOutOfOrderness[LogEvent](Duration.ofSeconds(2))<...原创 2020-11-05 10:58:20 · 1358 阅读 · 4 评论 -
flink报错 java.lang.IlleagalStateException: No ExecutorFactory found to execute the application
idea中flink的代码再1.10版本的时候可以正常运行,但是当把flink版本改成1.11的时候运行就报错flink报错 java.lang.IlleagalStateException: No ExecutorFactory found to execute the application报错如下:很是郁闷,究其原因是少依赖,1.11版本需要引入flink-clients 依赖具体看flink官网https://ci.apache.org/projects/flink/flink-docs原创 2020-11-04 10:54:40 · 1639 阅读 · 2 评论 -
flinkSQL 追加模式(toAppendStream)与缩进模式(toRetractStream)的区别
追加模式(toAppendStream)与缩进模式(toRetractStream)简介 使用flinkSQL处理实时数据当我们把表转化成流的时候,需要使用toAppendStream与toRetractStream这两个方法。稍不注意可能直接选择了toAppendStream。这个两个方法还是有很大区别的,下面具体介绍。toAppendStream与toRetractStream的区别:追加模式:只有在动态Table仅通过INSERT更改修改时才能使用此模式,即它仅附加,并且...原创 2020-11-03 12:12:06 · 2877 阅读 · 1 评论 -
flink Caused by: java.net.BindException: Could not start rest endpoint on any port in port range 808
flink 启动,standalone 模式StandaloneSessionClusterEntrypoint 进程起不来查看log日志文件org.apache.flink.runtime.entrypoint.ClusterEntrypointException: Failed to initialize the cluster entrypoint StandaloneSessionClusterEn at org.apache.flink.runtime.entrypoint.Clus.原创 2020-10-28 19:05:53 · 2747 阅读 · 0 评论 -
基于Flink+ClickHouse打造轻量级点击流实时数仓
前言Flink和ClickHouse分别是实时计算和(近实时)OLAP领域的翘楚,也是近些年非常火爆的开源框架,很多大厂都在将两者结合使用来构建各种用途的实时平台,效果很好。关于两者的优点就不再赘述,本文来简单介绍笔者团队在点击流实时数仓方面的一点实践经验。点击流及其维度建模所谓点击流(click stream),就是指用户访问网站、App等Web前端时在后端留下的轨迹数据,也是流量分析(traffic analysis)和用户行为分析(user behavior analysis)的基础。点击原创 2020-10-05 22:02:37 · 319 阅读 · 1 评论 -
Flink 实现Locality 模式调度
背景在计算与存储一体化的情况,spark任务在调度task时会优先将其调度在数据所在的节点上或者相同的rack上,这样可以减少数据在不同节点或者不同rack上移动所带来的性能消耗;目前在Flink on yarn模式下,TaskExecutor的资源位置完全由yarn自主控制的,那么就可能会造成任务所在的节点与kafka数据所在的节点不在同一个机房,从而产生跨机房的流量消耗,在这样的一个环境背景下,需要将任务调度在数据所在机房,以减少流量消耗。(注:基于Flink-1.10.1)Flink on Y原创 2020-10-05 21:56:59 · 1829 阅读 · 0 评论 -
基于 Flink + Hive 构建流批一体准实时数仓
基于 Flink + Hive 构建流批一体准实时数仓基于 Hive 的离线数仓往往是企业大数据生产系统中不可缺少的一环。Hive 数仓有很高的成熟度和稳定性,但由于它是离线的,延时很大。在一些对延时要求比较高的场景,需要另外搭建基于 Flink 的实时数仓,将链路延时降低到秒级。但是一套离线数仓加一套实时数仓的架构会带来超过两倍的资源消耗,甚至导致重复开发。想要搭建流式链路就必须得抛弃现有的 Hive 数仓吗?并不是,借助 Flink 可以实现已有的 Hive 离线数仓准实时化。本文整理自 Apa.原创 2020-09-27 23:07:27 · 2211 阅读 · 2 评论 -
Flink SQL 1.11 新功能
本文整理自 Apache Flink PMC,阿里巴巴技术专家伍翀(云邪)的分享,旨在帮助用户快速了解新版本 Table & SQL 在 Connectivity 和 Simplicity 等方面的优化及实际开发使用的最佳实践,主要分为以下四个部分: 简要回顾 Flink 1.8 ~ Flink 1.11 版本在 Apache 社区的发展趋势,其中国内开发者的积极参与和中文社区的蓬勃发展对 Flink 在社区和 GitHub 的活跃度做出了重要贡献。 详细解读 Flink SQL 1原创 2020-09-23 21:58:36 · 514 阅读 · 0 评论