自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spark 运行流程核心组件(一)作业提交

1、Client触发 SparkContext初始化向 Master注册应用3、Master调度 Worker启动 Executor4、Worker进程启动 Executor将作业分解为Stage分配Task到Executor。

2025-08-12 11:42:28 180

原创 Spark Memory 内存设计的核心组件、对比Flink内存配置

Spark内存管理摘要 Spark内存分为Driver和Executor两部分,采用堆内和堆外内存结合的方式。Driver内存主要用于存储元数据和任务调度状态,Executor内存则负责任务执行和数据处理。内存配置通过参数如spark.driver.memory和spark.executor.memory控制,包含统一内存池、用户内存和系统开销内存。估算内存消耗可使用RDD缓存观察或SizeEstimator工具。Executor中每个Task由独立的TaskMemoryManager管理内存生命周期。关键

2025-08-07 16:46:48 1055

原创 Flink 可插拔的 shuffle 服务实现

分区服务工厂创建 ShuffleMaster(JM 侧)和 ShuffleEnvironment(TE 侧)。JM 进程会根据配置的工厂在每个集群中创建 ShuffleMaster,并负责其生命周期。:如果消费者任务失败或 TE 崩溃,JM 会尝试重用生产者的分区。如果分区对于消费是可用的,生产者任务可能不需要重新启动,这将缩小故障转移的区域,从而减少故障转移的成本。:当所有消费者任务都完成(处于 FINISHED 状态)时,生产者的分区可以手动从 ShuffleMaster 中注销以清理资源。

2025-08-04 17:16:38 850

原创 Flink Memory 内存设计的核心组件和源代码实现

本文摘要: 堆外内存对比:DirectByteBuffer由JVM自动管理,适用于NIO传输和缓存;Unsafe需手动管理,适合高频计算和自定义数据结构。 Flink内存架构:核心组件包括MemorySegment(基本内存单元)、MemoryManager(托管内存)和NetworkBufferPool(全局网络缓冲池)。内存分为框架堆/堆外内存、任务堆内存、托管内存和网络内存等区域。 内存管理流程:从NetworkBufferPool分配缓冲区,通过LocalBufferPool供任务使用,任务结束后回

2025-07-31 15:49:15 857

原创 Flink 算子链设计和源代码实现

Flink的算子链机制通过ChainingStrategy确定算子连接方式,在JobGraph生成阶段构建ChainedDriver链表。执行时分为三层:JobManager生成JobGraph,ExecutionGraph拆解并行子任务,TaskManager运行物理执行计划。OperatorChain管理链式结构,通过StreamOperatorWrapper处理数据流转。链化策略包括ALWAYS(默认)、HEAD(仅下游)和NEVER(独立)。该机制通过合并算子减少线程和网络开销提升性能,但需平衡链长

2025-07-30 17:12:33 226

原创 Flink Table/SQL 执行流程解析

本文概述了Flink SQL从解析到执行的整体流程。首先通过Calcite解析SQL生成逻辑关系代数树(Logical RelNode),然后经过两阶段优化:基于规则的优化(RBO)重写计划,基于代价的优化(CBO)选择最优方案。最后转换为Flink物理算子(Transformation)并生成执行管道(Pipeline)。核心组件包括CatalogManager元数据管理、QueryOperationConverter转换器,以及Flink特有的优化规则和代价模型。流程涵盖SQL解析、逻辑优化、物理计划生

2025-07-29 16:22:19 519

原创 深入解析 Apache Flink FLIP-511:优化 Kafka Sink 事务处理,减轻 Broker 负载

摘要:Flink Kafka Sink在Exactly-Once模式下存在滞留事务问题,旧方案采用唯一事务ID导致Kafka Broker内存压力大且恢复时间长。FLIP-511提出新方案:1)采用池化ID机制复用有限数量事务ID;2)利用Kafka 3.0+的ListTransactions API精准查询和清理滞留事务。新方案显著减少Broker内存占用(从数万ID降至约3倍并行度),实现快速确定恢复,并通过配置选项支持策略切换。该方案需Kafka 3.0+支持,保持向后兼容性,为未来扩展预留接口。 (

2025-07-29 10:41:23 1563

原创 基于 YARN 的 Node Label 特性实现服务器资源隔离的配置指南

摘要: 本文介绍了YARN Node Label功能的配置与使用。首先在yarn-site.xml中启用标签功能并配置存储路径,通过yarn rmadmin命令添加集群标签(如spark、flink)并绑定到指定节点。然后在capacity-scheduler.xml中配置队列与标签的映射关系,限制特定队列只能访问对应标签节点。最后给出Spark和Flink应用的提交示例,通过参数指定任务使用的节点标签和队列,实现资源隔离与定向调度。该功能适用于需要特定硬件资源的任务场景。

2025-07-28 16:30:11 422

原创 Flink pushGateway监控

Flink监控配置与指标集成指南 本文介绍了Flink监控系统的配置方法和关键指标分类。首先通过修改flink-conf.yaml文件配置Pushgateway上报,添加相应依赖后即可实现指标采集。Flink监控指标分为四大类:作业级指标(如重启次数、检查点相关数据)、任务级指标(处理记录数、延迟)、操作符级指标(水位线、状态大小)以及系统资源指标(CPU/内存使用率)。这些指标通过Grafana仪表盘(如ID:14161)可视化,帮助开发者监控作业稳定性、吞吐量和资源使用情况,为性能优化和故障排查提供数据

2025-07-28 13:54:42 463

原创 Hadoop JMX 配置的完整文档

本文介绍了JMX在Hadoop监控中的应用,包括JMX基础概念及其在Hadoop组件(NameNode、DataNode、ResourceManager、NodeManager)中的关键指标查询方式。通过具体的HTTP JMX接口示例,展示了如何获取各组件运行时的性能数据,如文件系统状态、集群资源、节点活动等。这些接口可用于实时监控Hadoop集群健康状况和性能表现。

2025-07-28 13:40:45 306

原创 JDBC时间类型与Java类型、Flink SQL时间类型与Java类型的对应关系

摘要:本文介绍了JDBC与Flink SQL中时间类型与Java类型的对应关系。JDBC中,TIMESTAMP对应java.sql.Timestamp,DATE和TIME分别对应java.sql.Date和java.sql.Time。Flink SQL中,TIMESTAMP(3)映射为LocalDateTime,TIMESTAMP_LTZ(3)对应Instant,DATE和TIME(0)分别对应LocalDate和LocalTime,时间间隔则用Integer或Long表示。

2025-07-25 18:28:10 267

原创 Flink 流批一体Source架构设计

Flink 新 Source 架构解析 Flink 新 Source 架构采用两级协调机制,由 JobManager 和 TaskManager 协同工作。JobManager 中的 SourceCoordinator 管理 SplitEnumerator,负责数据分片发现和分配;TaskManager 运行 SourceOperator 实例,包含实际读取数据的 SourceReader。该架构支持三种分片处理模式:单分片顺序处理、多分片复用和多分片多线程处理,适用于文件、Kafka、Kinesis 等不

2025-07-23 14:40:59 319

原创 Flink StreamTask详解及单线程Mailbox事件模型

摘要:本文介绍了Flink流处理中的核心执行机制Mailbox模型。该模型借鉴了Actor架构思想,通过优先级队列管理任务执行,确保高优先级事件(如检查点)优先处理。核心组件包括TaskMailbox(事件队列)、MailboxProcessor(事件循环引擎)和MailboxExecutor(任务提交接口)。文章详细分析了该模型在异步状态执行和定时器触发等场景的应用,如通过yield机制实现反压控制,以及FLIP-424提出的异步状态API框架,该框架支持状态操作的并行执行,同时保持记录处理顺序。模型通过

2025-07-22 19:10:11 133

原创 Flink TaskManager之Task触发原理

本文介绍了Flink任务启动流程和数据交换机制。任务启动流程包括JobGraph提交、资源分配和任务部署,涉及JobMaster、ResourceManager等核心组件,以及ExecutionGraph、ExecutionVertex等数据结构。数据交换机制分为远程和本地两种方式,本地交换通过对象引用传递实现高效通信。文章还简要提及了BlobServer架构和Task的生命周期管理,为理解Flink任务执行提供了技术细节。

2025-07-22 14:37:59 624

原创 PaimonSchemaEvolution实现原理

Paimon Schema Evolution 在Flink下的实现机制

2025-07-19 15:22:38 134

原创 FlinkSchemaEvolution实现原理

本文介绍了数据管道中处理Schema变更的配置参数和核心组件。配置参数schema.change.behavior定义了五种处理模式:IGNORE、EXCEPTION、EVOLVE、TRY_EVOLVE和LENIENT(默认值)。核心组件包括: SchemaOperator:接收Schema变更事件,触发协调流程并阻塞数据流; SchemaRegistry:作为中央协调节点,管理Schema版本和变更状态; DataSinkWriterOperator:处理数据写入,响应刷新事件并确认变更完成。系统通过这三

2025-07-19 13:43:41 339

原创 Paimon 字段默认值

Paimon的DefaultValueAssigner组件用于为缺失字段自动填充默认值。其核心实现逻辑包括:首先获取表结构字段定义,然后遍历各字段检查是否存在默认值配置。对于配置了默认值的字段,通过类型转换器将字符串默认值转换为目标字段类型,最终生成包含默认值的行数据。该组件处理了类型兼容性检查,确保默认值能正确转换为目标字段类型。

2025-07-18 16:40:12 226

原创 Flink Broadcast 实现核心组件

Flink广播模式下数据分发流程涉及关键组件协作:BroadcastConnectedStream转换为BroadcastPartitioner标识的ResultPartition,通过RecordWriter序列化数据并写入ResultPartition。ResultPartition管理多个ResultSubpartition(广播模式共享相同数据),ResultSubpartitionView提供异步读取接口。Netty传输中,下游通过RemoteInputChannel请求数据,上游Partitio

2025-07-18 14:31:26 686

原创 Flink CDC Source 实现增量数据读取的核心组件

Flink增量数据源的核心类包括IncrementalSource定义数据源属性,IncrementalSourceReader管理分片流程,IncrementalSourceSplitReader执行数据拉取。初始化时由用户配置并提交作业。JobManager的SplitEnumerator分配分片给Reader,后者通过SplitFetcherManager分发给特定线程。SplitFetcher循环调用fetch()拉取数据,经转换后放入队列,由Reader输出至下游。整个过程实现了高效的分片分配、数

2025-07-18 13:47:57 138

原创 Spark AQE 原理分析

Spark AQE(自适应查询执行)核心由AdaptiveSparkPlanExec和QueryStageExec组成。AQE通过将查询计划拆分为独立阶段(ShuffleMapStage/ResultStage),在每个阶段完成后利用最新统计信息动态优化剩余查询。执行流程包括:解析SQL生成逻辑计划→优化→转换为物理计划→插入AdaptiveSparkPlan节点→分阶段执行优化。AdaptiveSparkPlanExec负责阶段划分和重新优化,当阶段完成时根据物化数据统计调整后续计划。该机制通过实时优化提

2025-07-10 11:36:20 416

原创 Spark Netty RPC实现

Spark RPC系统核心架构与优化要点 摘要:Spark RPC系统采用多层架构设计,核心包含RpcEnv运行时环境、RpcEndpoint通信实体和RpcEndpointRef远程引用三大组件。底层基于Netty实现高效网络传输,通过Dispatcher调度器实现消息路由,并采用Inbox/Outbox机制处理消息队列。系统特别优化了大文件传输,支持零拷贝技术和背压控制,并利用ByteBuf池化降低GC压力。典型应用场景包括Shuffle数据传输和节点间通信,通过案例demo展示了文件分块传输和异步处理

2025-07-08 19:24:36 418

原创 Flink Oracle CDC logminer ogg 对比, PDB logminer CDC 测试

摘要:本文对比了Oracle数据库四种同步方案的特性,重点分析了Flink CDC主/备库、Flink Kafka Connector和ADG在同步机制、架构、数据链路等方面的差异。Flink CDC主库方案实时性最佳但增加主库压力,备库和Kafka方案需通过OGG存在延迟。文中提供了Flink Table API和Debezium的配置示例,以及Oracle用户授权SQL,并指出需确保CDC表可访问以避免"db history topic missing"错误。最后通过流程图展示了Fl

2025-07-07 10:09:33 552

原创 Oracle 19C OGG(Oracle GoldenGate) 存量 增量DDL

OGG部署摘要 本文介绍了Oracle GoldenGate(OGG)在Oracle19c环境下的部署流程。测试环境采用源端和目标端均为Oracle19c数据库,OGG版本为19.1.0.0.0。部署过程包括: 源端和目标端开启归档模式、强制日志和附加日志 静默安装OGG软件并配置TNS连接 创建OGG专用表空间和用户(C##GGUSER)并赋权 配置管理进程(MGR)和全局参数 添加抽取进程(EXTRACT)和投递进程(PUMP) 启用测试表的补充日志 关键配置包括端口设置、进程参数定义和PDB级别的注册

2025-07-03 17:17:18 453

空空如也

空空如也

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

TA关注的人

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