- 博客(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
原创 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关注的人