自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 海量数据实时关联优化:基于Flink+Redis+MySQL的双层异步IO查询架构实现百万级维度表毫秒级响应

本方案基于Flink CDC实现MySQL投诉数据的实时采集,通过缓存+数据库双层异步查询架构设计,确保高并发场景下的低延迟处理,采用“降级”设计模式,即使在Redis宕机不可用时,自动切换到MySQL查询逻辑。采用冷热数据隔离策略,Redis中存放热点维度数据,MySQL存放全量维度数据,提速的同时降低Redis和MySQL的负载。描述:电商平台根据用户的行为数据(如浏览、点击、搜索等)关联 用户的历史偏好和购买记录,生成个性化推荐。价值:快速识别潜在风险,及时预警,降低欺诈带来的损失。

2025-06-20 11:05:45 415

原创 jdk1.8正常运行,而高版本jdk17运行报错 java.lang.reflect.InaccessibleObjectException

jdk1.8正常运行,而高版本jdk运行报错 java.lang.reflect.InaccessibleObjectException: Unable to make field transient java.util.HashMap$Node[] java.util.HashMap.table accessible: module java.base does not “opens java.util” to unnamed module @200a570f,

2025-05-19 14:29:13 406

原创 WPS 调整多级编号

选中文字,选择编号->自定义编号->多级编号。级别为1的初始编号设置为2。

2025-05-15 16:01:21 1038

原创 FlinkCDC采集MySQL8.4报错

MySQL8.4版本中弃用show MASTER STATUS语法。改为:SHOW BINARY LOG STATUS。1、降MySQL版本。

2025-05-06 13:41:06 712

原创 HBase批量写入优化

2.数据缓冲:在进行批量写入时,可以使用缓冲区来存储数据。1.批量写入操作:使用HBasef的批量写入操作可以显著提高性能。这样可以减少网络通信开销和减少多次写入操作的开销。3.批量操作参数调优:在进行批量写入时,可以调整一些参数来优化性能。4.预分区和预分配Region:在设计HBase表时,可以进行预分区和预分配Region。.将数据均匀分布在多个Region中,可以提高写入性能和负载均衡。以上是一些常见的HBas批量写入性能优化的方法,根据具体的场景和需求,可以选择适合的方法进行优化。

2024-09-30 09:21:21 789

原创 谈谈Flink消费kafka的偏移量

Filnk checkpointing开始时就进入到pre-commit阶段,具体来说,一旦checkpoint开始,Flink的JobManager向输入流中写入一个checkpoint barrier将流中所有消息分隔成属于本次checkpoint的消息以及属于下次checkpoint的消息,barrier也会在操作算子间流转,对于每个operator来说,该barrier会触发operator的State Backend来为当前的operator来打快照。

2024-06-24 17:17:20 1991

原创 Hive函数汇总

一、关系运算1. 等值比较: =2. 不等值比较: 3.小于比较: =7. 空值判断: IS NULL8. 非空判断: IS NOTNULL9. LIKE比较: LIKE10. JAVA的LIKE操作: RLIKE11. REGEXP操作: REGEXP二、数学运算1. 加法操作: +2. 减法操作: -3. 乘法操作: *4. 除法操作: /5. 取余操作: %6. 位与操作: &

2024-06-20 17:48:02 620

原创 flink cdc,读取datetime类型

需要注意的是,如果您使用的是Flink 1.13或以上版本,可以直接使用Flink的内置Debezium插件来实现CDC任务,无需安装其他插件。Flink CDC读取MySQL的datetime类型时会转换为时间戳的问题,可以通过在Flink CDC任务中添加相应的转换器来解决。- 使用 Flink DataStream API:如果你更喜欢使用 Flink DataStream API,可以通过创建 CDCSourceFunction 并配置相应的参数来创建 Flink CDC 数据源。

2024-05-10 11:41:22 2035 1

原创 shell脚本echo打印错位

Unix系统里,每行结尾只有“”,即“\n”,Windows系统里面,每行结尾是“”,即“\n\r”,Mac系统里,每行结尾是“”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行,而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。因此,\r就是return回到本行行首,这就会把这一行以前的输出覆盖掉。经过测试,发现获取到的返回值是没问题的,但可能带了某些不可见的字符。

2024-04-11 13:40:34 1158

原创 Hudi小文件压缩

为了避免这种情况的发生,flink离线压缩hudi表每次只压缩一个commit,这样可以保证每个commit的数据都被完整地压缩,同时也减小了故障发生的概率,提高了数据的可靠性。此外,这种方式还可以实现增量压缩,只压缩新增或者修改的数据,而不需要重新压缩整个数据集,可以提高压缩效率。当我们压缩多个commit时,会先将这些commit的数据合并到一个新的commit里面,然后再进行压缩,但是如果在合并的过程中发生了故障,就有可能导致合并后的数据丢失,这样就会导致数据不完整或者出现错误。

2024-03-07 10:01:17 1259

原创 Hudi配置参数优化

3.数据去重:一批增量数据中可能会有重复的数据,Hudi会根据主键对数据进行去重避免重复数据写入Hudi 表。4.数据fileId位置信息获取:在修改记录中可以根据索引获取当前记录所属文件的fileid,在数据合并时需要知道数据update操作向那个fileId文件写入新的快照文件。8.hive元数据同步:hive 的元素数据同步这个步骤需要配置非必需操作,主要是对于hive 和presto 等查询引擎,需要依赖hive 元数据才能进行查询,所以hive元数据同步就是构造外表提供查询。

2024-02-28 10:34:28 976

原创 hudi系列- mor表写过程

每个分区下的桶数量为是bucket_assigner算子的并行度,每个桶始终由多个assigner中固定的一个生成和分配,桶(fileId)与assigner之间存在映射关系,通过fileId可以判断是否。基于状态索引的tagLocation过程,即确定第条记录应该写到哪个fileId。这个过程做了小文件优化,避免产生过多的小文件(重用fileId),判断文件。参考WriteProfile</id1,parition1>如何为记录分配Location?该assigner.

2024-02-27 18:39:35 1147

原创 flink - sink - hive

hive的依赖,此依赖应该放在flink-shaded-hadoop后面,让工程优先访问flink-shaded-hadoop的依赖。dataStream转为flink table,再通过hive catalog写入到hive表中。以下依赖均可以放到flink lib中,然后在pom中声明为provided。没有hadoop环境时可以用此依赖代替。flink对hive的核心依赖。

2024-02-27 17:34:07 836

原创 Hudi程序导致集群RPC偏高问题分析

即根据提交的次数,默认为1,可以通过设置参数hoodie.clean.max.commits​进行修改,在flink job的每次checkpoint时都会进行触发策略的条件判断,所以在两次chekpoint之间发生过1次或n次提交,都会触发清理动作。清理旧文件需要考虑数据查询的情况,有些长查询会占用着旧版本的文件,需要设置合适的清理策略来保留一定数量的commit或者文件版本,以提高系统的容错性。清理逻辑的流程,主要包含有三个步骤:生成清理计划、刷新ActiveTimeline、执行清理计划。

2024-02-22 13:45:35 1011

原创 数据湖Paimon入门指南

如果用户建表时指定'merge-engine' = 'partial-update',那么就会使用部分更新表引擎,可以做到多个 Flink 流任务去更新同一张表,每条流任务只更新一张表的部分列,最终实现一行完整的数据的更新,对于需要拉宽表的业务场景,partial-update 非常适合此场景,而且构建宽表的操作也相对简单。这种方式的成本相对较高,同时官方不建议这样使用,因为下游任务在 State 中存储一份全量的数据,即每条数据以及其变更记录都需要保存在状态中。流式查询将不断产生最新的更改。

2024-02-04 16:43:18 2879 1

原创 FlinkCDC中文乱码问题

flink-conf.yaml文件中添加两个参数。注意添加位置在最后,防止被覆盖。

2024-01-31 16:33:22 639

原创 Flink集成Hive之Hive Catalog

流程流程:Flink消费Kafka,逻辑处理后将实时流转换为表视图,利用HiveCataLog创建Hive表,将实时流 表insert进Hive,注意分区时间字段需要为 yyyy-MM-dd形式,否则抛出异常:java.time.format.DateTimeParseException: Text '20240111' could not be parsed。

2024-01-12 09:34:10 2140

原创 Canal采集配置

2、common参数定义,比如可以将instance.properties的公用参数,抽取放置到这里,这样每个instance启动的时候就可以共享. 【instance.properties配置定义优先级高于canal.properties】aliyun账号的ak信息 (如果不需要在本地binlog超过18小时被清理后自动下载oss上的binlog,可以忽略该值)2、instance.properties (instance级别的配置文件,每个instance一份)是否开启binlog并行解析模式。

2024-01-10 09:15:49 1111

原创 FlinkOnYarn 监控 flink任务(RestAPI)

通俗的说就是一个能够接受json,处理json,输出json的程序,反正很好用。获取线运行job任务,记录到日志文件。这里shell脚本也只记录,flink-on-yarn 这种部署方式任务监控。只需要监控实时yarn 任务有没有处于RUNNING,达到监控的目的。Flink任务一般为实时不断运行的任务,如果没有任务监控,Flink任务监控(基于API接口编写shell脚本)这里通过调用API接口方式来获取参数,实现任务监控。shell脚本水平有限,大家多多谅解,欢迎指导。获取这个任务单个信息。

2024-01-08 14:06:19 1973

原创 FlinkRestAPI

如果输出结果为空,则说明 Flink 客户端没有安装在系统路径中。在这种情况下,您可以通过设置。which flink 找到Flink客户端地址。环境变量来指定 Flink 客户端的路径。

2024-01-08 10:10:02 1074

原创 FlinkSQL处理Canal-JSON数据

在正常的操作环境下,Canal能够以exactly-once的语义投递每条变更事件,Flink能够正常消费Canal产生的变更事件。此时,Canal可能会投递重复的变更事件到Kafka中,当Flink从Kafka中消费的时候就会得到重复的事件,可能导致Flink query的运行得到错误的结果或者非预期的异常。ISO-8601:解析yyyy-MM-ddTHH:mm:ss.s{precision}格式的输入时间戳,例如2020-12-30T12:13:14.123,并以相同的格式输出时间戳。

2024-01-04 10:06:09 2048

原创 Hudi介绍

在数据不断写入 Hudi 期间,Hudi 会不断生成 commit、deltacommit、clean 等 Instant 记录每一次操作类型、状态及详细的元数据,这些 Instant 最终都会存到 .hoodie 元数据目录下,为了避免元数据文件数量过多,ActiveTimeline 越来越长,需要对比较久远的操作进行归档(archive),将这部分操作移到 .hoodie/archive 目录下,单独形成一个 ArchivedTimeline。Clean文件的存在可以确保数据的清理操作被记录和跟踪。

2023-12-16 16:26:59 549

原创 Flink-Hudi连接器

hudi连接器_实时计算Flink版-阿里云帮助中心 (aliyun.com)

2023-10-24 10:20:21 149

原创 Hive的文件合并

背景:Flink数据写入到stage层,然后再入ods层,中间导致hive数据实时性不强,随后做优化,Flink之间以orc格式写入到hive。3.stg 和 ods 的 tb_bu_dc_monitor_day 是外部表,其他层的表都是内部表;/_SCRATCH0 这些目录是sqoop 把mysql数据导入hive时生成的临时目录,可以删除。使用hive concatenate (外部表不可用,内部表可用,orc可用,分桶表不可用)1.stg层是把flink应用程序写入的数据load进入的;

2023-10-11 17:06:24 834

原创 HBase表更改压缩方式后的数据大合并

major_compact会重新读写数据,在这个流程中,对原有的数据进行压缩,但是如果表数据很大执行major_compact对hbase集群会有比较大的影响。alter 'table', NAME => 'info', COMPRESSION => 'SNAPPY' //修改表属性,指定压缩方式为SNAPPY。1.在执行alter之后,hbase表已经启用压缩,但是对于原来表里已有的数据并不会进行压缩,后续再写入的数据才会执行压缩(可以到hdfs验证)enable 'table' //启用表。

2023-08-10 09:15:42 342

原创 hdfs中的租约机制及Flink写hdfs文件未关闭及RPC

主租约是由文件的创建者持有的,它控制着文件的写入和编辑权限。主租约的持有者可以选择将租约延长,以延续对文件的写入和编辑权限。在HDFS中,租约机制的主要目的是确保并发写入时的数据一致性和文件的完整性。通过租约机制,HDFS可以保证在同一时间只有一个用户可以对文件进行写入或编辑操作,从而避免了数据冲突和一致性问题的发生。3、文件资源限制,hdfs系统对同时打开的文件数量有限制,如果某个任务没有关闭文件,会占用文件资源位置,当文件资源达到。上限,其他任务无法打开新的文件进行写入,只能等待上一个文件的租约释放。

2023-07-14 16:11:37 1479

原创 HBase写入性能太低

HBase 是基于 LSM tree 数据结构实现的,在写入时需要进行数据排序、合并等操作,相比 HDFS 的追加写入来说,延迟会更高。可以通过优化 HBase 的配置或者选择其他的 NoSQL 数据库来提升性能,同时也可以考虑在 Flink 中增加缓存等方式,提高写入效率。而 HBase 是分布式数据库,每个 RegionServer 只负责一部分数据,写入时可能存在热点问题,导致性能较差。Flink 在写入 HBase 时,默认只有一个并发度,如果数据量较大,可能会导致写入过慢。

2023-04-18 17:01:56 1364

原创 数字化转型

【数字化转型之路】深度解析中国联通的“四天”体系 - 知乎 (zhihu.com)

2023-02-09 09:35:04 167

原创 Kafka生成者/消费组详解

什么是KafkaKafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区、多副本,基于的分布式消息流平台,它同时也是一款开源的基于发布订阅模式的消息引擎系统。

2023-02-06 15:01:28 3260

原创 Flink天级别窗口聚合的时区问题

比如首先,我们的时区是东八区,在我们的视野中时间应该减去8小时的offset,才是我们看到的时间,所以在使用flink的窗口的时候往往比我们当前的时间少8小时。也是1970年1月1日,实际上时分秒是0点0分0秒,这里打印出来的时间是8点而非0点,原因是存在系统时间和本地时间的问题,其实系统时间依然是0点,只不过我们的电脑时区设置为东8区,故打印的结果是8点。时区的问题是,在处理数据的时候我们是东八区,要对当前要处理的时间加上8小时,才是符合我们预期的。说java纪元跟本文将的flink时间问题有啥关系呢?

2023-01-31 11:10:00 925

原创 HBase的site.xml配置(分区策略)

flush:将写缓存中的数据,上传到hdfs上,每次flush后,每个写缓存中的列族文件都会在hdfs上产生一个存储文件。MemStore 刷写时机:1.当某个 memstroe 的大小达到了hbase.hregion.memstore.flush.size(默认值 128M),其所在 region 的所有 memstore 都会刷写。当 memstore 的大小达到了。

2022-10-27 10:02:53 1020

原创 有关flink数据消费速度的问题

1、反压产生的场景反压经常出现在促销、热门活动等场景。短时间内流量陡增造成或者。Flink会因为数据堆积和处理速度变慢超时,而checkpoint是Flink保证数据一致性的关键所在,最终会。

2022-10-12 10:11:13 5460

原创 性能优化:一个 Flink 参数节省了 50% 的 CPU 消耗

Flink 大并发任务(超过 500 并发)在使用 keyBy 或者 rebalance 的情况下,将 bufferTimeout 设置为 1s 可以节省 30~50% 的 CPU 消耗。中等并发任务也会有不少收益。

2022-09-26 17:23:53 2368

原创 HBase shell常用命令

scan '表名',{STARTROW=>'start_row_key',STOPROW=>'stop_row_key'}scan '表名', { COLUMNS => [ 'info:regioninfo'] }在扫描的时候在stoprow=>rowkey前缀后面加一个z。根据rowkey模糊查询。

2022-09-16 11:05:11 1894

原创 CkeckPoint优化

如果在配置的 Checkpoint 时间间隔之内,一个 Checkpoint 正在生产,另一个 Checkpoint 也需要开始生产,那么,第二个 Checkpoint 将会等到第一个 Checkpoint 生产完成才会开始。比如,你配置最小停顿时间是一分钟,那么在一个 Checkpoint 生产完成之后的头一分钟,不会有新的 Checkpoint 被拉起,这仅限于同时最多只有一个 Checkpoint 生产的情况。Checkpoint 的配置需要随着 Flink 应用程序的不同而不同。

2022-09-08 14:43:23 942

原创 JobManager 内存简介

Flink JobManager 内存模型相关配置参数说明。组成部分配置参数描述JVM 堆内存JVM 堆内存堆外内存JobManager 的堆外内存(直接内存或本地内存)默认值:128MBFlink JVM 进程的 Metaspace默认值256mbJVM 开销用于其他 JVM 开销的本地内存,例如栈空间、垃圾回收空间等。该内存部分为基于进程总内存的受限的等比内存部分。

2022-09-07 17:31:42 2327

原创 Flink集群报错误:akka.pattern.AskTimeoutException: Ask timed out on

akka.ask.timeout 默认为10 s,如果你加长了这个超时时长,会发现仍然解决不了,你得修改 web.timeout 为大于10000才行。

2022-09-06 11:10:57 3819

原创 Flink reduce详解

等到整个窗口触发的时候,才把reduce计算的结果发送出去。从代码中可以看到reduce是跟在keyBy后面的,这时作用于reduce的类是一个KeyStream的类,reduce会保存之前计算的结果,然后和新的数据进行累加,所以每次输出的都是历史所有的数据的总和。2、window算子之后的reduce,其实计算的是window窗口内的数据和,每次窗口触发的时候,才会输出一次结果。的方式,一种是正常的reduce,一种是windows窗口的reduce,本文主要介绍两种reduce方式的区别。......

2022-08-30 17:24:17 1522

原创 服务器宕机了,数据会丢失吗

对于Kafka有三个问题:数据丢失、数据重复、数据顺序。

2022-08-30 15:57:39 911

原创 Pulsar与Kafka中消息保留策略

通过保留的消息字节数来判断小是否过期,它的值通过参数log.retention.bytes来指定,作用在每一个分区上,也就是说如果一个包含8个分区的主题,并且log.retention.bytes被设置为1GB,那么这个主题最多可以保留8GB的数据,所以,当主题的分区个数增加时,整个主题可以保留的数据也随之增加。实际上,我们应该避免存在大量未确认消息的情况,因为这可能意味着对磁盘空间的巨大压力。在配置的时间范围之后,Pulsar 会自动确认这些消息,强制移动光标。这也意味着这些消息已准备好被删除。

2022-08-24 16:30:45 755

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除