- 博客(67)
- 收藏
- 关注
原创 数据湖:大数据时代的新型数据管理体系
(Raw Data at Scale),允许企业存储结构化、半结构化(JSON/XML)、非结构化(图片/视频)等全量数据,典型案例如Netflix每日PB级的视频元数据存储。定位在已有存储(S3, OSS,ADLS, GCS, HDFS)基础上构建湖仓架构。定位流式数据湖平台,基于增量数据管道和数据管理层构建实时数据湖。引擎支持Spark,Flink等,偏重于平台的建设。定位大数据集分析格式,分析引擎支持Spark,Flink,Trino,Hive。以数据格式角度出发,强调开放被集成,希望做成框架。
2025-05-14 01:52:45
889
原创 数据仓库:企业数据管理的核心引擎
1991年,Bill Inmon在《Building the Data Warehouse》中首次明确定义了数据仓库:"面向主题的、集成的、非易失的且随时间变化的数据集合,用于支持管理决策"。概念的诞生源于企业对数据价值的深度挖掘需求。在1980年代,随着OLTP(联机事务处理)系统在企业中的普及,传统关系型数据库在处理海量数据分析时显露出明显瓶颈:事务处理与分析查询的冲突、数据孤岛现象严重、历史数据利用率低下等问题日益突出。集中式架构,MPP并行处理。分布式计算,高扩展性。流批一体,亚秒级响应。
2025-05-14 01:50:43
818
原创 多维行为数据有效整合到ALS推荐系统中
在实际场景中,用户与评分对象的交互行为远不止单一的评分(rating),还包括例如点击、加购、购买、停留时长等多种行为。而ALS算法通常只提供三个参数,user, item, rate。通常有两种解决办法,一种是将多个行为通过权重的方式整合成一个rate;另一种是为每个item都构建一个ALS算法。
2025-05-12 11:50:16
1022
原创 用户画像设计与实现
通过整合多源数据(如行为日志、交易记录、用户属性等),用户画像能够将抽象的用户特征转化为可量化、可分析的标签体系,进而支撑精准营销、产品优化、风险控制等场景。然而,构建一个高效、可扩展的用户画像系统涉及复杂的技术链路,本文将从设计到实现,系统解析其核心技术环节。etl_json_table_config, ETL从表数据配置表, fileName 该表所在的HDFS文件名, configId,上面配置的信息。tag_base_type 以树结构的形式,描述了数据类型,除了基本类型,还包括复合类型。
2025-05-07 01:48:57
995
原创 Flink 的状态机制
灵活性:算子状态与键控状态的组合满足多样化需求。可靠性:检查点与重启策略保障故障恢复的一致性。扩展性:RocksDBStateBackend 支持 TB 级状态存储。智能化:自动状态清理和增量检查点降低运维成本。小状态优先:优先使用内存状态后端,配合 Checkpoint 提升性能。大状态优化:采用 RocksDBStateBackend,启用增量检查点和状态 TTL。监控与调优:通过 Flink Web UI 监控状态大小、检查点耗时,结合 Prometheus 实现异常预警。
2025-05-03 18:23:42
1005
原创 Flink Table API与SQL技术详解
标量函数(Scalar Function):如 ABS (), SUBSTRING (), CURRENT_TIMESTAMP ()聚合函数(Aggregate Function):如 SUM (), COUNT (), HAVING ()表值函数(Table Valued Function):如 CROSS JOIN LATERAL TABLE ()
2025-05-03 18:22:35
1412
原创 Flink流式计算核心:DataStream API与时间语义深度解析
时间类型定义适用场景事件时间(Event Time)数据本身携带的时间戳(如日志的生成时间、订单的创建时间)需基于真实业务时间计算(如“当日销量”“15分钟内的支付成功率”)处理时间(Processing Time)数据被Flink算子处理的系统时间(即服务器当前时间)对实时性要求极高但精度要求低(如“近似实时监控”)摄入时间(Ingestion Time)数据进入Flink系统的时间(由Source算子记录)介于事件时间和处理时间之间,避免处理时间的不稳定性,但无法应对严重乱序最佳实践。
2025-05-01 21:11:13
1696
1
原创 企业经营系统分类及功能详解
在企业经营活动中,企业级系统(Enterprise Systems)是支撑核心业务流程、数据管理和决策的关键技术平台。但对于软件开发来说,互联网只是一小部分,企业级系统软件开发,虽然不如互联网大起大落,但重在稳定,加班也不多。近年来互联网行业下行,招聘少,要求离谱,年龄+学历+背景已经卡的死死的,技术再突出也没用。企业通常会根据自身规模(如中小型企业可能使用一体化云ERP)和行业需求选择系统组合,并通过。(ESB、API网关)打破数据孤岛。数字化转型中,系统逐渐向。
2025-05-01 20:55:21
602
原创 AI驱动的决策智能系统(AIDP)和自然语言交互式分析
在当今快速变化的商业环境中,以下几个企业级系统领域最有可能成为新的热点,其驱动力来自以及的叠加将生成式AI(如GPT、多模态模型)与企业数据结合,实现(如动态定价、供应链风险预测)、(员工直接用语音/文字查询数据)。满足全球碳监管(如欧盟CSRD)、供应链ESG审计需求,整合碳排放核算、绿色供应链追踪、社会责任报告。通过模拟地缘政治、自然灾害等风险对供应链的影响,动态优化供应商网络和库存策略。让业务部门(非IT人员)快速搭建应用(如HR绩效模块、销售仪表盘),解决传统IT开发瓶颈。
2025-04-30 23:29:28
1025
原创 Apache Flink的架构设计与运行流程说明
Apache Flink的架构设计通过“分层解耦+模块化”的思想,实现了高可靠、高吞吐、低延迟的实时计算能力。其运行流程的关键在于“将用户逻辑转换为分布式任务,并通过资源管理与任务调度高效执行”。云原生支持:深度集成K8s,实现更细粒度的资源弹性(如基于指标自动扩缩容);AI与流计算融合:通过内置的机器学习推理能力(如Flink ML),在流处理过程中实时执行模型预测;统一批流处理:Flink 1.12+版本通过“流批一体”架构,让用户以流处理的方式编写批处理任务,进一步降低开发门槛。
2025-04-29 20:05:13
1907
原创 Spark GraphX 机器学习:图计算
这些以“节点(Vertex)”和“边(Edge)”为核心的非结构化数据,正成为挖掘复杂关系的关键。Spark GraphX作为分布式图计算的“瑞士军刀”,凭借其与Spark生态的深度集成(支持从数据加载、图处理到机器学习的全流程),已成为处理大规模图数据的首选工具。GraphX是Spark专为图计算设计的分布式框架,其核心设计哲学是“将图数据与集合数据统一抽象”,既支持传统图操作(如邻接遍历、子图提取),又能无缝集成Spark的RDD、DataFrame等数据结构,实现图计算与机器学习的端到端流水线。
2025-04-29 17:31:08
1011
原创 Spark Mllib 机器学习
通过这个模型可以对输入对象的特征向量预测或对对象的类标进行分类。2、从通信的角度讲,如果使用 Hadoop 的 MapReduce 计算框架,由于是通过heartbeat 的方式来进行的通信和传递数据,会导致非常慢的执行速度,而 Spark 具有出色而高效的 Akka 和 Netty 通信系统,通信效率极高。线性回归是利用称为线性回归方程的函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析方法,只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归,在实际情况中大多数都是多元回归。
2025-04-27 23:54:33
980
原创 分布式队列对消息语义的处理
Broker端则会针对每个\维护一个序列号(SN),只有当对应的SequenceNumber = SN+1时,Broker才会接收消息,同时将SN更新为SN+1。通过预分配ID就容易避免,客户端每次提交订单都需要携带一个提前获取的订单id,当服务端检查有重复的订单id时,就可以拒绝。如果改为提前分配好ID, 客户端将ID与数据一同发送给服务端,服务端进行ID验证,检查这个ID是否已经处理过了。这个PID对用户是不可见的。这么做的后果是客户端每次提交都会得到一个新的ID,即使客户端提交了重复的数据。
2025-04-25 23:16:25
865
原创 微服务治理技术
注册中心推送的实例列表为空,节点如果替换了本地缓存列表,那就会无实例可用no provider,注册中心推空,很可能是网络问题导致的, 所以节点不能完全信任注册中心,当注册中心推空时,忽略本次推送,尝试继续通过本地缓存访问实例列表,如果访问失败,再做健康检查。业务方依赖一个接口sdk,主要逻辑全部写在agent包中,在部署时,只需要加载agent即可,中间件升级时,替换agent,而不用频繁更新sdk。存活探针,探测容器是否真的存活,有问题则重启容器,防止容器进程存活,但已经无法对外服务,死锁等。
2025-04-25 01:10:55
952
原创 数据库在线迁移方案
离线数据库迁移简单的原因是在数据库做切换的时候,系统是离线的,也就不会有新数据写入,此时进行数据库切换,不会有数据一致性的问题。企业级项目还可以在半夜停机同步,但如果数据量非常大,一晚上的时间可能也不够,还是需要做好随时回滚,双库随意切换以保障数据安全。然后离线进行数据库切换,只需要短暂的停机,就可以实现切换。回滚操作:由于一直保留着旧库,并做了新库同步到旧库,所以旧库的数据依然是完整的,可以随时切换回旧库。canal数据同步,停掉binlog同步,改为数据补偿, 如新库写入失败的, 需要补偿程序弥补。
2025-04-23 15:39:40
813
原创 灰度发布的各类实现
在客户端请求的header中增加一个标识, 标识为灰度版本的请求, 在网关路由中,如果检测到灰度标识, 就将该请求转发到拥有同样灰度标志的服务。客户端向注册中心拉取实例时,注册中心要提供标记筛选接口,或是返回实例列表时,同时携带标记,让客户端自己筛选。给服务实例打上版本或灰度标记,网关入口或上游服务访问下游服务时,可以依据服务标记选择合适的服务实例。类似链路追踪组件,请求要从前端或网关开始,携带标记条件,在所有服务路径中都要保持。客户端负载均衡或服务端负载均衡器,要根据请求标记, 匹配实例列表的标记。
2025-04-21 00:11:39
336
原创 人工智能、机器学习、神经网络、深度学习、AI大模型的区别
AI方向的专用名词特别多,很容易混在一起,文本梳理下从机器学习到AI大模型发展历程和专业名词。下面按照概念的层次关系依次梳理。
2025-04-20 01:20:16
908
原创 Spark Streaming
Spark Streaming是Spark核心API的一个扩展,用于可扩展、高吞吐量、容错的实时数据流处理。为什么是一个扩展?因为Spark本身实现的是一个批处理计算,批处理计算存在延迟高,数据集还是有界的,所以只能处理离线计算。Spark Streaming利用Spark核心,实现了微批处理micro batch,使延迟降低到0.5-2秒内,可以完成对实时性要求不高的流式计算。支持多种数据源,包括Kafka、Flume、Twitter、TCP等。
2025-04-19 00:44:33
999
原创 Spark SQL
2 Spark是线程级并行,而Mapreduce是进程级并行,因此Shark在兼容Hive的实现上存在线程安全问题,导致Shark不断给Hive打补丁。完全兼容Hive,但仅依赖HiveQL解析和Hive的元数据,从HQL被解析成AST抽象语法树后,后面的部分完全由SparkSQL自己实现。Spark早期的SQL查询实现,即Hive on Spark,为了兼容Hive,重用了Hive除了MapReduce以外的几乎所有部分。RDD是分布式的java对象集合,而集合中对象的内部信息RDD是无法知道的。
2025-04-18 10:48:16
748
原创 Spark Core
分片的策略很多,使用hash分片策略的目的是因为这是一个去重计算,而hash分片会将重复的数据分到一个区。通过读取一个文件,然后经过一系列的转换操作,就产生了一系列有关系的RDD,这个关系图,就叫做DAG有向无环图,Spark就根据DAG进行依次执行。spark面向用户的使用接口,这是我们要使用Spark的入口,分为了四大模块,分别对应各个使用场景,他们的的实现都是基于spark核心RDD。RDD由于分区组成, 每个分区来自一个文件, 在HDFS中,如果将副本数设置为2,每个分区,会有两个实际的存储位置。
2025-04-18 10:46:39
553
原创 HBase
以HDFS角度来看,一个列簇等于一个目录,如果列簇过多,会造成文件夹多,加上LSM树结构特性,文件会频繁拆分合并,导致文件偏小,这不符合HDFS的优化方向。LSM树不会直接在树上做更新和删除操作,所有操作以插入的形式完成,最新插入的数据具有最高版本,然后通过不断的合并,最终将修改的数据合并到树结构中。HBase的设计是偏向写数据的,写数据流程十分简洁,但读数据要复杂的多,而且由于LSM树结构的分散问题,读取的性能是不如mysql的B+树。WAL是通过磁盘顺序写实现的,写入效率接近写内存,效率很高。
2025-04-10 01:06:58
1020
原创 Hive(3)-调优与融合
hive.exec.reducers.bytes.per.reducer 每个reduce最大处理数据量,默认256Mb,如果是1G的文件,会产生4个reduce。HBase同样也是基于Hadoop之上的数据库引擎,HBase是一个列式数据库,他管理数据的效率非常高,但由于是列式存储的数据库,造成数据检索并不规范。将Hive的计算引擎更换为Spark,但配置复杂,使用较少,通常是Spark整合Hive,以Spark为入口。
2025-04-10 01:00:55
452
原创 Hive(2)-数据管理与查询
Hive自定义函数有三类:针对单行字段数据处理,输入单个数据, 输出单个数据针对统计数据, 输入一列数据, 输出一个数据针对生成数据, 输入一个数据,输出一列数据引入依赖创建函数为系统引入自定义函数#引入jar包#查看引入的jar包list jars;#创建函数#使用。
2025-04-10 00:59:29
1182
原创 Hive(1)-基础
在没有Hive的情况下,如果要对Hadoop进行数据级的查询和统计,需要编写mapReduce输出结果,不同的统计,需要编写不同的mapReduce,工作量很大且重复。有了Hive的情况下,通过编写sql,就可以对Hadoop的HDFS数据进行统计查询,Hive会根据sql自己组装mapReduce。数据源:数据存储系统(HDFS),Hive主要实现了对数据源的查询统计,数据的管理只提供了简单的操作。元数据:由Hive自己维护(通常存于mysql),用于对数据源的数据进行描述,包括库、表、字段等信息。
2025-04-09 23:59:31
475
原创 Hadoop(3)-YARN
application master 执行任务的管理者,相当于application的组长,针对具体任务向resource manager申请所需要的资源, 跟踪任务执行状态和执行进度。容量调度为了满足分配资源,需要提前获取任务所需的资源,这样就增加了一步操作,对性能产生影响,导致大任务执行速度会比FifoScheduler调度慢。不同的地方是队列内分配资源的方式, 容量调度是计算任务所需资源,按需分配,而公平调度不计算所需资源,先对队列内的任务平均分配平均分配 1/num)。
2025-04-09 23:54:22
1259
原创 Hadoop(2)-MapReduce
而在合并过程中,为了将相同的key快速合并到一起,ReduceTask 还会对数据再进行一次排序,排序之后的数据针对相同的key,局部有序。shuffle阶段会对数据进行分区处理,在分区时,一旦分区不均衡,就会导致下个阶段的各个reduce任务不均衡,造成部分reduce空闲。Mapper阶段输出的数据,会经过Partition进行分区,分区的目的是为了将mapper输出的数据保存到哪个文件。每个Reduce接收到的数据是按key局部有序的,但是多个Reduce任务之间的key并不能保证是有序的。
2025-04-09 23:53:20
820
2
原创 Hadoop(1)-HDFS
通过流程可知,nameNode是HDFS的核心,但nameNode却是单点的,一旦nameNode宕机,整个集群就不可用2NameNode也无法切换成nn。Hadoop是基于文件级别计算的,文件的个数会影响计算的效率,HDFS文件以128M进行块存储,所以要让每个块接近128存储资源利用率最高的策略。不适合处理大量小文件,小文件会导致文件块的数量过多,不仅增加了元数据,同时过多的文件处理也会浪费计算资源,大量花费在文件检索,而文件读取时间很短。不支持并发写,只能追加写,不支持文件修改。
2025-04-09 23:52:23
634
原创 智能体设计
智能体是一种能够自主感知环境、做出决策并执行行动的软件或硬件实体。具备自主性、适应性、交互能力。根据自身学习到的知识进行判断决策,然后执行动作,影响环境。
2025-03-27 13:06:18
736
原创 SQL Agent架构 NL2SQL
SQL Agent的作用就是将自然语言,转成sql语句,然后执行得到结果,又叫NL2SQL。其中主要的问题是大模型不知道数据库结构,但企业的数据库信息又不能暴露出去。就需要将企业数据库信息以提示词的形式发送给大模型。其中会有个最大的问题: 这个问题涉及哪些表,这些表的关系是什么,如何让大模型理解一些特定的统计术语?
2025-03-27 13:03:28
173
原创 RAG架构
对文章做摘要后,就可以通过RAG检索到总结性的Chunk,避免检索总结时,搜到无关内容适用场景:解决“这篇文章说了什么” “总结一下XXX”等全局性问题实现:通过mapreduce等方式分段抽取,通过模型为每段Chunk提取摘要信息。
2025-03-27 13:01:32
904
原创 spring boot2项目升级到spring boot3 jdk8升级到17
spring boot2项目升级到spring boot3 jdk8升级到17
2023-10-04 21:32:39
941
原创 基于redis的分布式锁
若给节点增加从节点,从而提高可用性, 但主从同步时仍然可能出现不一致的情况, 如主加锁成功,但在同步前宕机, 从节点变为主,没有锁。锁续命:在获得锁后, 增加一个定时任务,定期检测任务线程是否已执行完成,若未完成,则延长锁的过期时间。解决:加锁时候,value添加唯一标识(uuid), 解锁的时候判断是否是自己加的锁,然后删除锁。问题2:在删除锁逻辑中, 判断是否自己锁和删锁并非原子操作,还是会出现超时后删别人锁的情况。当为了性能,节点部署不多时,节点宕机容易造成半数锁失败,红锁 red lock。
2023-04-12 17:01:41
169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人