大数据-flink
文章平均质量分 72
可免费问问题,可以一次订阅,终身免费问问题。Flink是我主攻的大数据框架从搭建到运维到优化,到源码,以及工作多年遇到的问题,与一些总结,注意事项等,内容详细。最值得订阅的专栏
优惠券已抵扣
余额抵扣
还需支付
¥99.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
九师兄
可免费问问题,可以一次订阅,终身免费问问题。工作多年遇到的问题,与一些总结,注意事项等,有些是源码级别的讲解,同时整个博客是成体系的,里面有很多连接互相连接,问题都是拆开的,能让大家遇到问题的时候方便的解决问题,或者提供思路。也可以单独找我解决问题。
展开
-
【Flink】FLink session yarn kerberos认证报错 PortUnreachableException: ICMP Port Unreachable
本篇博客是在上一篇博客:【Flink】FLink session yarn kerberos认证报错 KrbException: Cannot locate default realm还没找到原因的时候做的一次尝试。因为项目需要,我们需要对接华为认证的yarn集群,运行flink任务,我们的任务分为两种,yarn pre-job模式和flink session模式。我们在配置文件中配置如下# kerberos认证需要的东西提交任务的脚本如下。原创 2023-05-01 10:46:20 · 863 阅读 · 1 评论 -
【Flink】Flink消费kafka数据时不自动解压缩数据
在 Flink 中,Kafka 消费者的配置是通过 Flink Kafka Consumer 的属性进行的。具体来说,你可以在 Properties 中设置 Kafka 消费者的属性,以便在 Flink 作业中使用。如果你想在 Flink 消费 Kafka 数据时禁用自动解压缩,你可以通过配置 Kafka 消费者的参数来实现。在上面的示例中,关键是设置了 auto.decompress 属性为 false,这样就禁用了 Kafka 消费者的自动解压缩功能。确保你的处理逻辑能够正确处理数据的压缩格式。原创 2024-05-21 00:45:00 · 559 阅读 · 0 评论 -
【Flink】flink启动任务,taskmanager.out 文件增涨非常快
flink启动任务,taskmanager.out 文件增涨非常快,这个文件大小怎么限定?测试了很多办法发现都不起作用。但是后面我发现不是这个导致的是slf4j依赖冲突,jar包删除就可以了。原创 2024-04-25 00:30:00 · 257 阅读 · 4 评论 -
【Flink】flink metric 如何获取yarn applicationId
flink metric 如何获取yarn applicationId。原创 2024-04-26 00:30:00 · 140 阅读 · 0 评论 -
【FLink】Flink报错误could only written 1 minReplication nodes datanode(s) running node(s) are excluded
flink 消费kafka数据,idea能正常消费,但是提交flink的jar包运行还是报这个错。(这是flink webui界面的logs提示)这个报错原因是因为没有资源了。解决方案:显示写入文件时无法满足hdfs要求的最小副本数,datanode节点故障或者不可写入导致su hdfst # 查看hdfs报告,查看对应datanode节点是否都live# 如果存在异常需要到对应datanode节点查看datanode的详细日志进行处理。原创 2024-04-26 00:15:00 · 435 阅读 · 0 评论 -
【Kafka】flink消费kafka报错 rebalanced and assigned the partitions to another member
场景:消费kafka写入hdfs时,要从spark任务迁移为flink任务消费,为保证不丢数据,用同一个groupid消费数据flink消费数据,提交不了offset到kafka,报错如下原因:kafka的消费模式分为此种场景会发生standalone consumer(assign()消费模式)与consumer group冲突。原创 2024-04-18 06:15:00 · 611 阅读 · 1 评论 -
【Flink】为什么FLINK在CREATE阶段,会申请超过限制的队列核数
在CREATE阶段,FLINK会进行作业图的构建、任务分配、资源申请等操作,这些操作可能需要使用大量的CPU资源来完成。这种行为的原因是为了在作业开始运行之前,预留足够的资源。在CREATE阶段,Flink会为作业请求并分配所需的资源,以确保作业能够在运行时获取到足够的计算资源。在Flink的CREATE阶段(作业创建阶段),Flink会根据作业的配置和资源需求来进行资源的申请和分配。当实际使用的核数减少时,队列中的核数就会相应地减少,以便其他作业或任务可以使用这些闲置的资源。原创 2024-03-27 07:30:00 · 361 阅读 · 0 评论 -
【Flink】Flink如何覆盖系统类、优先加载用户类、child-first使用技巧
一个问题,关于类加载的,就是我使用了的依赖,但是我改了这个类,和任务在一个jar包里面,和Flink的lib中的jar在hdfs上,Flink on yarn的方式提交作业,但是我改的这个类不生效(还是用的flink-sql-connector-kafka里面的类),但是在我本地环境idea中能生效,有啥解决方案吗?原创 2024-03-25 19:21:13 · 429 阅读 · 0 评论 -
【Flink】Flink 运行到yarn 队列资源不足,导致无法运行
后面突然想到以前遇到的问题,我们提交的任务队列被占满了,导致我们的任务一直提交不上去,界面上看着是running状态,实际上还没有运行呢?然后看看flink监控,发现监控室空白的,流计算正常,数据有lag, 日志里面没有报错,但是就是不消费了 界面这里也不显示 速度 等。然后现场决定把所有的别人的任务都干掉,这个本来就是给我们用的,他们却偷偷的用。这个命令可以看到我们运行的队列是哪个,但是发现有别人跟我们运行的队列一样。杀掉所有任务后,发现队列果然空了,然后我们启动我们的任务,启动后我们的果然都有数据了。原创 2024-03-23 07:45:00 · 295 阅读 · 1 评论 -
【Flink】flink-runtime版本冲突报错 SubtaskStateMapper.UNSUPPORORTED
这样还是报错一样的,百思不得琪姐,然后后面突然想到我们的yarn-session事B服务启动的,然后B服务是1.12,这样他启动yarn-session的里面是不是也是1.12呢?我们原先只有一个B服务,使用的flink版本是Flink 1.12 ,然后后面因为某些原因,从B服务中迁移出来部分功能形成了A服务,然后在A服务中也有相关提交任务的版本以及相关的web.这第一个原因就找到了,以前是相同的版本,所以Put上去是没有问题的,大家都一样,但是现在是不同的版本了,所以会有异常。下面说一下我们的架构。原创 2024-03-22 05:00:00 · 95 阅读 · 2 评论 -
【Flink】FLink的DefaultOperatorCoordinatorHandler源码解读
DefaultOperatorCoordinatorHandler 是 Apache Flink 中的一个类,它是默认的操作协调处理程序,用于协调 Flink 作业中的操作符之间的协作和通信。在 Flink 分布式流处理作业中,通常会有多个操作符(算子)并行执行,它们之间需要进行协作和通信,以实现数据的传输和一致性处理。这些协作和通信的任务由操作符协调器(Operator Coordinator)负责管理和调度,而 DefaultOperatorCoordinatorHandler 就是其中的一个实现。原创 2024-03-22 05:00:00 · 203 阅读 · 2 评论 -
【Flink】Flink 窗口操作的 processElement 和 onTimer 方法是如何保证线程安全的
需要注意的是,如果 processElement 方法中更新了状态(例如修改状态中的某个值),而该状态在 onTimer 方法中被引用,那么 onTimer 方法中引用的状态将会是更新后的状态。具体怎么实现 当 onTimer 方法正在处理时,如果 processElement 方法中有新的数据进入,那么这些新数据的处理需要等待当前的 onTimer 方法完成后才能被处理。处理processElement 方法中的数据不会直接影响正在进行的 onTimer 方法的状态或数据。原创 2024-03-21 05:30:00 · 690 阅读 · 2 评论 -
【Flink】Flink 使用Arthas的trace命令排查问题 不打印方法栈
Flink 使用Arthas的trace命令排查问题,不打印方法栈,只打印了如下 Affect class count 1 method count 1。后面突然想我们这个流任务是没开启规则是不消费数据的,如果不消费数据,那么方法就不会执行,然后这里就无法监控到。开始遇到这个问题,我第一眼以为是我打错字了,然后来来回回排查了好几次都是正常的。然后有的迷糊了,后面我尝试其他pipline的类,执行发现是可以的。然后我尝试把所有的机器都测试一遍,发现结果是一样的。再次确认了,我找的机器确实是对的呀。原创 2024-03-19 23:30:00 · 189 阅读 · 0 评论 -
【Flink】Flink Session 任务报错 StreamTaskExecutor Cannot instantiate user function
20230706 九师兄笔记。flink yarn session模式下,流计算任务报错详情信息如下但是我是可以保证这个类是没有变化过的后面我同事说他遇到过这个问题,重启一下flink sesssion 就好了,然后在重启任务就没事了。验证过,果然如此。原创 2024-03-16 06:00:00 · 341 阅读 · 0 评论 -
【Flink】Flink 使用 JobListener 监听 任务状态
flink程序运行起来,需要获取flink的任务状态,我们有几种方式获取。下面我们来主要介绍如何使用JobListener监听任务状态。原创 2024-03-15 13:18:19 · 610 阅读 · 1 评论 -
【flink】flink 提交任务报错 Ship file lib does not exist
然而,根据您提供的日志片段,我注意到命令中的 -yt 参数可能存在问题。正常情况下,应该是 -yt 参数而不是 -C 参数。请尝试将该参数更正为 -yt。根据您提供的提交命令和日志信息,看起来依赖库的指定是正确的,并且目录和文件路径也正确。flink 提交任务报错 Ship file lib does not exist。提交脚本我这样写的,lib下面我放了相关依赖,target下面是我代码的主类。提交后看着打印的日志,目录是对的。原创 2024-03-14 06:30:00 · 154 阅读 · 0 评论 -
【Flink】Batch Shuffle
请移步到官网:Batch Shuffle原创 2024-03-08 06:45:00 · 55 阅读 · 0 评论 -
【Flink】Flink Blocklist Mechanism、过滤清单机制、黑白名单
负责管理集群级别的块列表。当请求新的任务管理器时,阻塞列表也会生效,详细信息将在ResourceManagerDriver中描述。目前,我们对UI集成有了初步的想法,包括改进槽位信息的显示,增加一个页面来显示区块列表信息。当启动SlotManager时,BlockedTaskManagerChecker将被传入,以检查注册的任务管理器是否位于阻塞的节点上。,并覆盖了一些方法来实现上面描述的与块列表相关的函数,并且块列表信息将在构造函数中传递。)的推测执行,我们需要一种机制来阻塞慢速任务所在节点上的资源。原创 2024-02-26 23:00:00 · 187 阅读 · 1 评论 -
【Flink】Flink Committing offsets to Kafka takes longer than the checkpoint interval
一个flink程序在运行之后,重检查点恢复的时候报错这个错误看起来是增量的检查点,然后被删除了如果你彻底删掉了文件, 那就没得解决,如果删除的文件,垃圾箱还有,可以恢复一下 ,否则只能重新开始了。但是后面一直waring,信息如下详情如下根据报错找到报错的位置/*** 告诉这个线程提交一组偏移量。此方法不阻塞,提交操作将异步发生。* 任何时候只能有一个提交操作挂起。如果提交所花费的时间比调用此方法的频率要长,* 那么一些提交可能会由于被新的提交所取代而被跳过。*/原创 2022-01-26 13:08:41 · 2198 阅读 · 0 评论 -
【Flink】flink报错LeaderRetrievalHandler Cannot resolve path parameter (jobid) from value “null“
一个flink环境报错 2.源码首先在类中: 方法。LeaderRetrievalHandler它封装了REST端点的leader检索逻辑。Leader Retrieval 的意思是领袖检索,这里应该是无论你如果开启HA那么可能走ZK那一套程序,如果你没有开启,那么leader只有一个,但是都是在界面或者程序内部通讯的时候找到这个leader.respond As Leader 的意思是 ,这里应该是leader回应信息。回应消息的时候,构建HandlerRequest的时候报错了在遍历getPat原创 2024-02-22 13:16:10 · 120 阅读 · 0 评论 -
【Flink】NumberQuotaExceedException: KeeperErrorCode = Nodes number exceed quota limit
本次flink报错如下问题:zk quota超限制数,导致高可用时zk的相应路径下不可再生成节点维护信息,使保存任务失败。关键是我的任务在/flink2/下有正常的,也有不正常的,怎么删除呢?没有发现有模糊删除。现在解决是写个客户端循环遍历删除。原创 2024-02-20 23:00:00 · 499 阅读 · 0 评论 -
【Flink】Flink On Yarn 任务 杀不死
中间还发现zk出问题了,zk在ambari界面上,看到是心跳丢失,并且无法再ambari上重启。今天遇到一个问题,flink路径不能访问 ,而且flink任务无法杀死的问题。在最新版本发布中,我们搞了一个定时任务,专门来清理这个目录,防止过大或者满了。然后界面点击重启任务 他才消失,然后后面新任务就运行起来了。后来运维处理了这个问题,但是因为日志找不到了,也没找到原因。无论是姐妹尝试杀死任务,还是后端杀死任务都报错。然后查看yarn任务如下,界面也是一样状态。路径访问如下,无法访问。原创 2024-02-20 23:15:00 · 296 阅读 · 0 评论 -
【Flink】Flink 2023 我的 Flink 作业出了什么问题?如何做平台侧的智能诊断
在实际的现场值班的时候,我们经常遇到一个问题?我的 Flink 作业出了什么问题?Flink定位问题其实是很难的。我们先看看FLink的基本概念。Flink根据作业需求会申请一个到多个TM,然后会根据TM的规格划分一个或者多个的Slot,每个Slot中又部署了一个或者多个task,这些task可能是chain到一起的,这里的每个subtask都是一个线程,当我们发现一个task发生问题的时候,可能是性能问题,也可能是发生了异常。此时我们第一个要定位这个subtask运行在哪个TaskManger上面。原创 2024-01-20 19:42:07 · 143 阅读 · 0 评论 -
【Flink】Flink 2023 Flink 自动化运维的大规模落地实践
视频地址:对应的中文后面有空补充。我们先看看问题背景,目前我们环境的业务规模很大了,暴露了很多问题我们把问题梳理了一下,主要分成2部分问题,配置问题和环境问题。原创 2024-01-20 15:39:13 · 164 阅读 · 0 评论 -
【docker】docker tail -f 查看最后几行日志
另外,如果 ailpha-init 容器的日志输出被缓冲到文件中,你也可以通过 tail 命令查看容器内部的日志文件。这将在容器内查看指定路径下日志文件的最后10行。确保替换 /path/to/your/log/file.log 为实际的日志文件路径。docker容器的日志 有时候很多,我们想看最新的日志,该怎么处理?这将只显示最后的10行日志,并且仍然保持实时刷新。原创 2024-01-15 21:35:05 · 796 阅读 · 0 评论 -
【Flink】Flink HA leader lost的一种解决方案
当JobMaster失败的时候或者发生主备切换的时候,那么Yarn或者K8s是能感知到JobMaster宕机行为的。让啊他会立即拉起一个新的JobMaster。与此同时我们的所有TM会感知到JobMaster leader lost,那么会把所有的TM failed掉,然后会等待新的JobMaster拉起,然后注册到新的JobMaster上面,JobMaster拉起后会从最开始的DAG图然后会重新部署所有的Task。这里有个问题就是切换的时候,会导致数据的断流以及任务的失败。原创 2024-01-15 21:33:14 · 129 阅读 · 0 评论 -
【Flink】Flink 2023 如何高效接入 Flink:Flink Connector / Catalog API 核心设计
在介绍之前Flink Connector,我们先看看目前的API分层最下层是DataStream API,然后上层是Table 和SQL API,如果我们想开发Catalog API 那么也是一个自底向上的过程,在最下面是Source API和SInk API,为了支持Table,因此我们在上面开发了DynamicTableSource和DynamicTableSink,然后最上面是Catalog API。原创 2024-01-15 01:00:00 · 200 阅读 · 0 评论 -
【未解决】Flink : Error notifying leader istener about new leader && The RPC connection is already closed
这个报错意味着在Flink任务执行器中发生了一个问题,导致无法通知任务执行器的领导者监听器关于新的领导者的信息。寻求专业支持:如果上述步骤无法解决问题,你可以寻求Flink社区或官方支持渠道的帮助,例如在官方论坛上发布你的问题或与他们的技术支持团队联系。检查任务执行器日志:查看更详细的日志,尤其是在报错之前和之后的日志,以获取更多上下文信息,帮助诊断问题的根本原因。更新Flink版本:检查你正在使用的Flink版本,并尝试更新到最新的稳定版本,以确保任何已知的问题都得到修复。相关的日志,实际上没有打印。原创 2020-07-03 19:28:08 · 1663 阅读 · 3 评论 -
【Flink】Flink 写入 kafka 报错 Unable to write to Kafka in appender [Kafka]
这个Sink到kafka 都是调用公用的方法 还会有啥问题,不知道啥原因 应该是环境问题吧 之前一直没问题。后面查看 flink-conf.yml 文件也没有配置写入kafka相关的东西。我总感觉我log4j有问题,后来排查还真的是log4j版本问题。降到2.8.2版本够没有报了,原先是2.15.0版本。今天使用flink写入报错。跑了两个小时不到又死了。原创 2024-01-10 00:15:00 · 505 阅读 · 0 评论 -
【Flink】Flink进行keyby以后每个流的状态和定时器是独立的吗?
需要注意的是,当使用keyBy进行分区时,确保选择适当的键以保持状态和定时器的独立性。在Apache Flink中,通过keyBy操作对流进行分区后,每个分区将拥有独立的状态和定时器。这是因为Flink的状态和定时器是根据键(Keyed State)进行管理的,每个键都有自己的状态和定时器。具体来说,keyBy操作将根据指定的键对流进行分区,确保具有相同键的元素都被发送到相同的任务槽中。问题:Flink进行keyby以后,每个流的状态和定时器是独立的,还是共享同一个状态和定时器?原创 2023-12-20 19:47:01 · 447 阅读 · 0 评论 -
【Flink】更快更稳更易用: Flink 自适应批处理能力演进 推测执行,自适应批调度、分区裁剪
同时,偶发的机器异常也会导致同样的问题。其中一个主要思路是根据运行时信息,比如数据量、数据模式、执行时间、可用资源等,自适应地优化作业执行,包括根据数据量自动为作业节点设置合适的并发度,通过预测执行来发现与缓解慢节点对作业的影响,引入自适应数据传输方式来提高资源利用率与处理性能,对多分区表进行动态分区裁剪来提高处理效率。基于灵活的数据分区与分配方式,能够采集各个数据分区的实际数据量,从而在比如有数据倾斜导致各个分区大小不一的情况下,可以将小分区合并,交给同一个下游处理,使下游节点处理的数据比较均衡。转载 2023-11-20 23:30:00 · 241 阅读 · 0 评论 -
【kubernetes】The LocalStreamEnvironment cannot be used when submitting
但是如果我们的机器没有kubectl命令,我们改怎么提交任务到flink呢?在这个文章中,我们知道了如何使用demo提交flink任务。这是因为我开始想的是本地运行设置如下。这个是不行的,后来改成如下就可以了。原创 2024-08-24 00:30:00 · 260 阅读 · 0 评论 -
【Flink】Mac下使用flink-kubernetes-operator本地运行flink程序
flink-kubernetes-operator是由Java实现的,它允许用户通过kubectl等原生k8s工具管理Flink应用程序及其生命周期,描述如下:。。flink-kubernetes-operator 可以将 Flink 作业定义为 Kubernetes 资源,这样可以更容易地将 Flink 作业作为 Kubernetes 基础架构的一部分管理。原创 2024-04-28 23:30:00 · 72 阅读 · 1 评论 -
【Flink】Not all slot managed memory is freed slow garbage collection
某次遇到。看起来说的是和Java版本有关。。所以你可能要升级 java版本。原创 2023-11-09 23:30:00 · 94 阅读 · 0 评论 -
【Flink】Flink 消费 kafka流任务界面不显示指标,一直处于loading状态
今天使用docker构建了一个kafka单节点,脚本如下然后使用本地的简单代码的生产者和消费者是能处理数据的。然后准备运行flink程序。flink 1.13.0版本,我们的原先都是正常的,现在升级kafka版本从1.0 升级到3.6版本然后使用三个简单算子,现在输出算子都打印数据了,证明消费 是没问题的,但是界面指标 12分钟了,还是在转圈查看接口调用发现接口都正常但是返回值都是无属性但是目前还不清楚是什么原因。升级了一下FLink,然后就好了。原创 2024-04-18 07:30:00 · 280 阅读 · 2 评论 -
【Flink】Flink 1.13版本升级到Flink 1.17版本
我是从Flink 1.13版本升级到Flink 1.17版本,因为flink 1.13版本是好的,各种任务都能运行,本次升级主要是包的问题,最主要的是Flink去掉了很多scala的依赖。这些包一定要引入,同时注意版本信息,建议打开flink源码,然后找到这个类,然后看看类的版本是什么。本章主要介绍Flink 1.13版本升级到Flink 1.16版本 中间遇到的问题。可以看到从1.15版本开始去掉scala依赖的,本次升级大问题没有多少的。然后是引入的kafka相关的包。后面记录一下,要引入的包信息。原创 2024-04-13 07:00:00 · 518 阅读 · 0 评论 -
【Flink】Flink 1.17 报错 Failed to load web based job submission extension
我是从Flink 1.13版本升级到Flink 1.17版本,因为flink 1.13版本是好的,各种任务都能运行,本次升级主要是包的问题,最主要的是Flink去掉了很多scala的依赖。然后因为已经能运行起来了,我就想再次复现这个问题,然后将web.submit.enable改成true,然后也是能运行的,后面把最后加入的依赖也重新搞一下,结果发现无法复现了。关闭后我继续做后面的验证,然后主要是缺少包信息,后面把下图中的所有的包都引入之后,然后就不报错了。然后我找到这个控制参数,然后是否可以关闭呢?原创 2024-04-10 07:15:00 · 653 阅读 · 2 评论 -
【Flink】Flink 使用 RocksDb 状态后端报错 File name too long
Flink 使用 RocksDb 状态后端,实现mongo数据整库写hudi,采用RocksDBStateBackend状态后端,checkpoint产生的文件名太长报错报错 File name too long,然后再往下我们发现报错的不是flink的包了,是RocksDb的包,而我们的路径是没有问题的,虽然长,但是也应该支持,因此可能是RocksDb的问题。注意截图中的RocksDb版本只是案例,不是本次报错的版本。后面升级了RocksDb就好了。原创 2024-04-10 07:00:00 · 219 阅读 · 1 评论 -
【Flink】Flink 1.17 报错 RpcLoaderException: could not load RpcSystem
我是从Flink 1.13版本升级到Flink 1.17版本,因为flink 1.13版本是好的,各种任务都能运行,本次升级主要是包的问题,最主要的是Flink去掉了很多scala的依赖。我是从Flink 1.13版本升级到Flink 1.17版本,因为flink 1.13版本是好的,各种任务都能运行,本次升级主要是包的问题,最主要的是Flink去掉了很多scala的依赖。可以看到从1.15版本开始去掉scala依赖的,本次升级大问题没有多少的。然后到源码中看看,然后看到源码中是有实现类的。原创 2024-04-08 08:30:00 · 370 阅读 · 4 评论 -
【Flink】Flink 1.17 报错 No ExecutorFactory found to execute the application
我是从Flink 1.13版本升级到Flink 1.17版本,因为flink 1.13版本是好的,各种任务都能运行,本次升级主要是包的问题,最主要的是Flink去掉了很多scala的依赖。可以看到compatibleFactories为空的时候就会报错,然后这个集合是遍历loader加入的,因此看loader就好了。这就是类加载,加载PipelineExecutorFactory这个的实现类,在项目中我的是没有实现类的。然后我们看看yarn运行是哪个包,可以看到是在flink-yarn包中。原创 2024-04-02 06:00:00 · 798 阅读 · 0 评论