
flink
文章平均质量分 87
L13763338360
这个作者很懒,什么都没留下…
展开
-
flink并行度和cpu使用率
1 问题描述1.1 业务描述 最近上线一个任务,拓扑大概是这样:从几个kafka集群读取数据做简单处理加工,union成一个数据流 读取并广播配置信息 将前两者数据流connect后过滤一部分数据,并再加工处理 数据流根据三个类型的key进行keyby和窗口操作 最后将结果sink到kafka1.2 资源配置CPU核心数据:10核 单核内存:4g taskmanager.numberOfTaskSlots:4 全局并行度:401.3 问题现象...原创 2021-09-19 18:31:39 · 2741 阅读 · 0 评论 -
flink广播变量太大问题
问题背景flink广播变量适用于解决活动配置、白名单等应用场景,根据活动配置或者白名单过滤数据后再做后续加工处理。广播出去的变量存在于每个节点的内存中,所以这个数据集不能太大。如果海量数据中,需要过滤出几百万甚至上亿的白名单用户数据,用广播变量广播大量用户uid,显然不合适。另外,实际的场景,白名单用户可能会增删,增加了要能检查出来,删除了不一定需要,宁可放过,不能错过。解决方案根据前面问题描述,布隆过滤器是一个很好的解决方案。标准布隆过滤器使用标准布隆过滤器,任务启动时候先将白名单原创 2021-08-06 21:53:38 · 1104 阅读 · 0 评论 -
flink报错:incompatible types for field cpuCores
现象一个flink项目,flink版本1.9.2,对自己写的代码还是比较有数,但在本地测试环境提交任务运行的时候,报错如下,有些莫名其妙org.apache.flink.client.program.ProgramInvocationException: Could not retrieve the execution result. (JobID: 030a3c303bbf7a5082b9d303057f7f12) at org.apache.flink.client.program.r..原创 2021-04-15 15:58:36 · 1866 阅读 · 0 评论 -
flink并行度设置问题
之前写过一篇文章,介绍flink的并行度问题:https://blog.youkuaiyun.com/L13763338360/article/details/106632612并行度的设置有几种,按优先级先后依次是:算子级别 执行环境级别 命令行级别 配置文件级别公司用的flink是基于开源改造的,跟开源还是有些区别,使用过程中也碰到一些问题,这里简单总结下。有两个跟并行度相关的配置taskmanager.numberOfTaskManagers:taskManager数量 taskmana原创 2021-02-04 11:07:33 · 3177 阅读 · 0 评论 -
flink定时器使用问题
时间模型flink在streaming程序中支持三种不同的时间模型event time:事件发生时间。根据事件时间处理,可能需要等待一定时间的延迟事件和无序事件,事件时间也常常跟处理时间操作一起使用。 ingestion time:进入flink的时间(source operator分配的时间)。不能处理任何无序事件或者延迟事件,但是程序无需指定如何产生水印。 processing time:flink执行window操作的时间。处理时间最简单,有最好的性能和最低的延迟,但无法处理事件乱序问题。原创 2021-01-29 10:00:21 · 3224 阅读 · 0 评论 -
kafka版本冲突导致taskexecutor启动异常
问题描述本地部署过两套flink环境,分别是1.9.1和1.9.2版本。最近在1.9.1版本下启动flink任务时,taskmanager日志正常,但taskexecutor疯狂打印日志,如下2021-01-23 09:38:41,743 INFO org.apache.kafka.common.utils.AppInfoParser - Kafka version : 0.9.0.12021-01-23 09:38:41,743 INFO org.apa...原创 2021-01-23 10:15:05 · 1085 阅读 · 2 评论 -
flink实时任务因jedis连接池导致的任务阻塞问题
问题现象有个flink实时任务,读kafka和redis,处理完后写redis。flink实时任务运行一段时间后,就阻塞了,有时间几个小时,有时一两天后。任务看起来正常是正常的,但已经不读kafka了,checkpoint也失败。看日志,kafka一直WARN,提示Marking the coordinator xxx dead.原因分析第1步刚开始以为是kafka的问题,导致了任务阻塞。于是寻找解决办法,也有人遇到类似的问题,但办法不管用。后面了解到kafka集群版本之前是原创 2020-12-08 15:39:52 · 2061 阅读 · 0 评论 -
flink日志问题
flink实时任务,使用了debug,但taskManager上运行的任务一直没有debug级别的日志,只有info日志。最终回到flink配置,弄清flink/conf下面的日志配置文件作用log4j.properties:在yarn模式下,jobManager和taskManager上用的log配置都依赖于它!log4j-cli.properties:flink run启动时的日志依赖于该配置log4j-yarn-session.properties:用yarn-session.sh启原创 2020-10-21 10:47:23 · 4389 阅读 · 0 评论 -
flink任务读取资源文件问题
问题描述写一个flink实时任务,任务启动时解析资源目录下的xml文件。代码写好了,测试代码运行也ok,但一提交到集群运行的时候,就提示找不到文件。目录结构如下示例代码如下try { SAXReader saxReader = new SAXReader(); URL url = this.getClass().getResource("/cjm.xml"); File inputXml = new File(url.getFile());原创 2020-09-23 10:28:36 · 2884 阅读 · 1 评论 -
实时任务数据丢失
1. 背景描述flink实时任务:从kafka集群读取源数据 从redis定期全量拉取用户白名单,然后进行广播 源数据connect白名单数据,源数据根据白名单数据进行过滤处理 过滤处理完后的数据,http推送、写redis、写log等2. 问题分析上线验证的时候,有些数据丢失,而且比较频繁,分析可能原因:kafka源数据丢失。这个有可能,但是小概率事件,不应该那么频繁出现。 redis拉取白名单后广播操作。这个有可能,需要重点排查。 过滤以及数据处理。这个不太可能,可以添加日志原创 2020-09-16 14:46:10 · 478 阅读 · 0 评论 -
解决java和scala的Tuple混用问题
背景简述平时日常数据开发主要用idea,确实挺强大。近日写了个flink任务,非广播流和广播流合并,然后过滤处理。处理逻辑都很通用,大概是这样:BroadcastConnectedStream的process调用了WhitelistBroadcastProcess类,该类继承BroadcastProcessFunction,并实现processElement和processBroadcastElement方法,分别处理广播流和非广播流。问题描述上图中红色波浪线提示错误Cannot原创 2020-09-11 09:04:56 · 1939 阅读 · 0 评论 -
编译flink1.11版本问题总结
1.解决npm问题1.1 报错如下[ERROR] Failed to execute goal com.github.eirslett:frontend-maven-plugin:1.6:npm (npm install) on project flink-runtime-web_2.11: Failed to run task: 'npm ci --cache-max=0 --no-save --registry=https://registry.npm.taobao.org' failed..原创 2020-08-17 13:56:07 · 2719 阅读 · 0 评论 -
flink任务重启原因分析
有个flink实时任务,上周升级了版本,早上过来看下任务,发现任务凌晨4点左右的时候重启了。flink ui查看异常日志如下异常日志2020-08-10 04:07:23org.apache.flink.runtime.io.network.netty.exception.RemoteTransportException: Connection unexpectedly closed by remote task manager '/9.150.12.175:39365'. This m.原创 2020-08-10 17:41:00 · 13279 阅读 · 1 评论 -
watermark知识点
1. watermark定义watermark是一种特殊的时间戳,用于表示eventTime小于watermark的事件已经全部落入到相应的窗口中,此时可进行窗口操作。2. watermarks类型有序流的watermarks无序的流的watermarks多并行流的watermarks注意:多并行度的情况下,watermark对齐会取所有channel最小的watermark3. watermark生成时机通常,在接收到source的数据后,应该立刻生成wat...原创 2020-06-16 10:59:25 · 1126 阅读 · 0 评论 -
flink并行度知识点
Flink的基本构建流(Stream):流是对当前数据流向的记录(流也可能是永无止境的) 转换(Transform):转换是将一个或多个流作为输入,根据需要求转换成我们要的格式的流的过程。 当程序执行时,Flink程序会将数据流进行映射、转换运算成我们要的格式的流。每个数据流都以一个或多个源(Source)开始,并以一个或多个接收器(Sink)结束,数据流类似于任意有向无环图(DAG)。Flink 中的程序本质上是并行的。在执行期间,每一个算子(Transformation)都有一个或多个算.原创 2020-06-09 12:34:00 · 4253 阅读 · 0 评论 -
Checkpoint的问题总结
Checkpoint的原理Flink checkpoint是一种容错恢复机制,保证 Flink 任务运行突然失败时,能够从最近 Checkpoint 进行状态恢复启动,进行错误容忍,是在Chandy–Lamport算法的基础上实现的一种分布式快照算法,其内部使用分布式数据流轻量级异步快照。Checkpoint流程JobManager触发checkpoint Source 收到 trigger checkpoint,自己开始做 snapshot,并往下游发送 barrier 下游接收 barr原创 2020-06-08 21:35:04 · 4219 阅读 · 0 评论 -
flink的state总结
state有哪些分类KeyedState:表示和key相关的一种state,只能用于KeyedStream类型数据集对应的Functions和Operators之上。Keyed State是Operator State的特例,区别在于Keyed State事先按照key对数据集进行了分区,每个Key State仅对应一个Operator和Key的组合。Keyed State可以通过Key Groups进行管理,主要用于当算子并行度发生变化时,自动重新分布 Operator State:与Keyed S原创 2020-06-08 10:14:56 · 1286 阅读 · 0 评论 -
flink内存模型介绍
内存模型概览内存组成部分堆内存 框架堆内存(Framework Heap Memory):用于 Flink 框架的 JVM 堆内存(进阶配置)。 任务堆内存(Task Heap Memory):用于 Flink 应用的算子及用户代码的 JVM 堆内存。 堆外内存 托管内存(Managed memory):由 Flink 管理的用于排序、哈希表、缓存中间结果及 RocksDB State Backend 的本地内存。 框架堆外内存(Framework Off-heap Memor原创 2020-06-02 14:45:24 · 673 阅读 · 0 评论 -
flink任务提交流程和调度原理
flink任务提交流程1. Client向HDFS上传Flink的Jar包和配置。2. Client向Yarn ResourceManager提交任务。3. ResourceManager分配Container资源并通知对应的NodeManager启动ApplicationMaster,ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager。4. ApplicationMaster向ResourceManager申请资源启动Ta.原创 2020-06-02 14:18:15 · 1947 阅读 · 1 评论 -
flink的窗口分类及窗口函数
Flink 提供了非常完善的窗口机制,是Flink 最大的亮点之一(其他的亮点包括消息乱序处理,和 checkpoint 机制等)。经典的窗口划分为几类:时间窗口、事件窗口、会话窗口、自定义窗口;其中时间窗口和事件窗口又可以划分为滚动窗口和滑动窗口;滚动窗口和滑动窗口的区别在于滚动窗口没有重叠,滑动窗口有重叠。1. 时间窗口(Time Window)1.1滚动窗口(Tumbling Window)// Stream of (userId, buyCnt)val buyCnts: Da..原创 2020-06-01 16:21:03 · 3214 阅读 · 0 评论 -
flink常用算子介绍
Flink中的算子是将一个或多个DataStream转换为新的DataStream,可以将多个转换组合成复杂的数据流拓扑。在Flink中,有多种不同的DataStream类型,他们之间是使用各种算子进行的。如下图所示:flink中常用的算子 map DataStream --> DataStream:输入一个参数产生一个参数,map的功能是对输入的参数进行转换操作。 flatMap DataStream --> DataStream:输入一个参数,产生0、1或.原创 2020-06-01 14:44:05 · 3867 阅读 · 0 评论