自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(133)
  • 资源 (1)
  • 收藏
  • 关注

原创 深入解析 LSM-Tree

LSM-Tree(Log-Structured Merge-Tree,日志结构合并树)是一种专为高吞吐写入场景设计的存储数据结构,其核心思想是:将随机写转化为顺序写,用空间换取极致的写入性能,再通过周期性的后台合并(Compaction)来控制读放大和空间放大。它由 Patrick O’Neil 等人于 1996 年在论文中提出,是 LevelDB、RocksDB、HBase、Cassandra、TiKV 等几乎所有主流 NoSQL 和 NewSQL 存储引擎的理论基础。

2026-04-01 16:20:11 369

原创 Apache Flink 学习笔记 · Phase 1

本文介绍了大数据处理基础内容(1-4周),重点对比批处理与流处理的差异,并分析大数据架构的演进过程。传统数据库在超大规模数据处理时性能下降,大数据技术通过水平扩展、容错和高吞吐解决这一问题。批处理适用于有界数据(如离线报表),流处理则处理无界数据(如实时监控)。大数据架构从Lambda(批流双系统)、Kappa(统一流处理)演进到现代流批一体(如Flink),实现了单一框架处理各类数据的能力。

2026-04-01 15:17:34 498

原创 Apache Spark 第 13 章 附加篇 · Apache Spark Real-Time Mode 实时计算

实时计算解决了批处理在时效性上的不足,适用于电商秒杀、风控等数据价值快速衰减的场景。Spark采用微批(Micro-Batch)架构,通过将流数据切分为小批次处理,在工程简洁性和延迟之间取得平衡(百毫秒级)。相比纯流引擎(如Flink),Spark牺牲毫秒级延迟,但获得了批流统一的API、容错性和成熟生态。结构化流(Structured Streaming)是Spark主流实时计算方案,适用于秒级延迟要求的场景,而毫秒级需求需选择Flink。

2026-04-01 14:29:15 476

原创 Apache Spark 第 13 章:Real-Time Mode 实时计算

摘要: 本章深入解析Spark实时计算的核心机制,对比两代引擎(Spark Streaming与Structured Streaming)的设计差异。批处理存在时效性局限,而实时计算能即时捕获数据价值。Structured Streaming采用"无界表"模型,通过微批处理实现高吞吐,支持Watermark处理乱序数据,并依赖状态管理实现复杂计算。关键机制包括触发模式(平衡延迟与吞吐)、状态存储(RocksDB优化大状态)及Checkpoint保障容错。生产环境建议优先选用Structu

2026-04-01 14:12:28 479

原创 Apache Spark 第 11 章:Delta Lake 与 Lakehouse

本文深入解析Delta Lake与Lakehouse架构,重点阐述其核心原理和实践应用。Delta Lake通过事务日志机制解决传统数据湖的三大痛点:ACID事务缺失、无法Upsert和小文件问题。核心功能包括MERGE操作、Time Travel历史查询和Schema Evolution模式演进。Lakehouse采用分层架构(Bronze/Silver/Gold),从原始数据到业务聚合逐步提升数据质量。文章提供完整生产代码示例,涵盖流式写入、CDC处理、数据优化等关键操作,展示Delta Lake在数据

2026-03-31 16:28:46 372

原创 Apache Spark 第 9 章:Spark 性能调优

Spark性能调优实战指南 摘要:本文系统介绍Spark性能调优方法论,核心原则是"先诊断后优化"。通过Spark UI定位瓶颈(80%问题来自数据倾斜和Shuffle),提供六大优化方向:资源配置(内存公式与参数配置)、并行度调优(分区数计算与AQE)、Shuffle优化(减少次数与数据量)、数据倾斜(加盐与NULL处理)、缓存广播、SQL与存储格式。每个方向均给出可落地的配置代码和决策流程,强调避免盲目调参,重点解决数据分布不均问题。

2026-03-30 13:41:11 617

原创 Apache Spark 第 8 章:Structured Streaming 流处理

本文深入解析了Structured Streaming的核心机制,包含四大关键部分:1)将流数据抽象为无界表的革命性设计,支持统一批流API;2)微批次执行引擎的Exactly-Once实现原理,通过WAL日志和Checkpoint保证容错;3)Watermark机制处理事件时间乱序,支持三种时间窗口计算;4)生产级状态管理和读写体系,推荐使用RocksDBStateStore和Delta Lake。最后给出了包含Watermark处理、滑动窗口聚合和Delta Lake写入的生产级代码示例。

2026-03-27 16:22:12 568

原创 Apache Spark 解第 8 章附加篇:Structured Streaming 底层机制深度剖析

本文深度剖析了Structured Streaming的底层机制,涵盖微批次执行引擎、Checkpoint三层持久化架构、Watermark语义与边界行为等核心原理。重点解析了执行引擎中Driver的瓶颈问题、StateStore的恢复机制、Watermark的数学定义与迟到数据处理策略,以及流-流Join时的多级Watermark处理。文章还提供了生产环境中的性能调优建议和典型踩坑案例,包括Checkpoint兼容性问题、状态恢复代价、Watermark延迟设置等实践要点。

2026-03-27 16:11:35 62

原创 Apache Spark 详细讲解第 7 章:Shuffle 机制深度解析

Spark中的Shuffle操作是性能瓶颈的关键所在,涉及跨节点数据传输和重新分区。其高成本主要来自磁盘I/O、网络传输、序列化开销和GC压力。Shuffle机制经历了从Hash到Sort的演进,Sort Shuffle通过合并文件减少了I/O消耗。优化策略包括减少Shuffle次数、预聚合、广播小表以及处理数据倾斜问题。核心参数调优如分区数设置和AQE功能启用能显著提升性能。理解Shuffle的机制和优化方法是编写高效Spark程序的基础。

2026-03-26 13:59:36 470

原创 Flink 并行度变更时 RocksDB 状态迁移的关键机制与原理

Flink并行度变更时的状态迁移机制基于key group分片模型,将key空间映射到固定数量的key group,通过调整key group分配实现并行度变更。RocksDB按key group有序存储状态数据,使得扩容时只需分发对应的SST文件,缩容时合并多个SST文件。增量Checkpoint下需回溯完整的SST文件链。maxParallelism一旦设定不可更改,否则会导致恢复失败。OperatorState采用均分或广播策略迁移。该机制的高效性源于key group中间层、RocksDB有序存储和

2026-03-25 13:29:36 889

原创 Apache Flink 中的 RocksDB 大状态存储 深度解析

RocksDB状态后端是Apache Flink中基于LSM-Tree结构的嵌入式KV存储引擎,用于管理算子状态并持久化到本地磁盘。它支持增量快照同步到远程存储,突破JVM堆内存限制,可处理TB级状态数据。核心组件包括MemTable内存缓冲区、SST磁盘文件、列族隔离机制和增量Checkpoint功能。相比HashMapStateBackend,RocksDB具有更大状态容量但读写性能略低,是Flink实现大规模流计算任务的关键基础设施。

2026-03-25 08:13:39 469

原创 Apache Flink Checkpoint 与 Chandy-Lamport 算法深度解析

本文系统梳理了Flink Checkpoint机制的核心原理与实现。Checkpoint作为Flink容错的核心组件,通过周期性全局快照实现Exactly-Once语义。文章详细解析了Checkpoint Coordinator、Barrier传播机制、状态后端等核心概念,并对比了三种Checkpoint模式(对齐/非对齐/Changelog)的适用场景。同时阐述了Checkpoint与Savepoint、两阶段提交等机制的关联关系,为生产环境调优提供了理论基础。通过架构图与流程示例,全面展示了这一分布式快

2026-03-23 17:45:21 1199

原创 Apache Spark 第 6 章 附加篇:Tungsten 引擎深度解析

摘要: Apache Spark的Tungsten引擎通过堆外内存、缓存感知计算、向量化执行和WholeStage CodeGen四大机制,有效解决了JVM在大数据处理中的性能瓶颈。Tungsten采用UnsafeRow内存格式提升访问效率,利用缓存优化算法减少内存随机访问,通过向量化执行发挥CPU SIMD指令优势,并借助运行时代码生成消除虚函数调用开销。实际测试显示,Tungsten将Spark性能提升数倍至数十倍,尤其在高并发场景下效果显著。

2026-03-23 11:04:27 768

原创 Apache Spark 第 6 章:执行计划与 DAG 调度

本文深入解析Spark的执行计划与调度机制。首先介绍SQL执行的四个阶段:逻辑计划→优化→物理计划→代码生成,通过df.explain可查看执行计划。其次阐述DAG调度的三层结构:Job→Stage→Task,其中Stage按宽依赖划分,并行度由分区数决定。重点分析Shuffle机制的性能瓶颈及优化手段,如预聚合和广播。最后详解Spark 3.0的AQE特性,包括自动合并分区、处理数据倾斜和动态Join优化,这些运行时优化大幅提升了执行效率。全文系统性地揭示了Spark的核心执行原理和性能优化方法。

2026-03-20 20:01:03 661 1

原创 Apache Spark 第 5 章:Spark SQL 与 DataFrame

Spark性能优化核心在于Catalyst优化器,它通过逻辑计划转换、规则优化和物理执行计划选择实现自动性能提升。DataFrame操作分为Transformation和Action两类,其中Join策略(Broadcast/Sort-Merge/Shuffle)对性能影响最大。数据读写推荐列式存储格式,Window函数可高效处理分组计算。关键原则:优先Broadcast Join,利用AQE动态优化,选择Delta/Parquet存储格式。

2026-03-20 19:41:55 470

原创 Apache Spark 第 4 章:Spark 整体架构

本文系统解析了Spark作业执行机制,分为五个核心部分:1)作业生命周期七阶段流程,强调Driver的核心调度作用;2)Driver内部组件分工,包括DAG调度、任务执行优化等模块;3)Executor内存划分模型,详解4.6GB统一内存与3.1GB用户内存的用途;4)三种部署模式对比,指出生产环境应选用YARN/K8s的cluster模式;5)数据流与调度流协同工作的全景图。全文通过架构图与关键标注,清晰呈现了Spark从任务提交到结果返回的完整执行链路。

2026-03-18 15:32:49 553 1

原创 Apache Flink 算子(Operator)深度解析

Flink算子(Operator)是流处理程序的基本计算单元,负责数据转换、聚合等操作,构成有向无环图(DAG)。核心概念包括并行度(Parallelism)和算子链(Operator Chain),前者决定并发度,后者优化性能。基础转换算子包含map、flatMap、filter和keyBy等。窗口算子分为Keyed和Non-Keyed两类,支持增量/全量聚合。状态算子(Stateful Operator)通过Keyed State维护状态,ProcessFunction提供底层功能如定时器和侧输出。双流

2026-03-18 09:53:11 1183

原创 Apache Spark 第 3 章:核心概念 RDD / DataFrame

本文阐述了Spark核心概念RDD的血统机制与执行原理。RDD采用懒执行策略,通过血统图记录操作流程,直到Action触发才真正计算,优化了整体性能。文章对比了窄依赖和宽依赖,指出宽依赖会引发Shuffle并划分Stage边界,建议优先使用reduceByKey等优化算子。同时分析了Spark三层抽象,推荐优先使用DataFrame而非RDD以获得更好的性能优化。最后说明了Partition作为并行计算基本单元的重要性,建议分区大小控制在128-256MB,数量为CPU核数的2-4倍。这些原理揭示了Spar

2026-03-18 09:14:22 259

原创 Apache Spark 从入门到精通:完整学习指南

本文系统介绍了Spark大数据处理框架的学习路径与核心概念。课程分为四个阶段:入门(环境搭建、RDD基础)、基础(架构原理、Spark SQL)、进阶(流处理、性能优化)和精通(生产部署)。重点讲解了Spark的内存计算优势、RDD核心机制、DAG调度原理、Shuffle优化策略以及Structured Streaming流处理模型。通过对比Hadoop MapReduce,突出Spark在计算性能、编程模型和生态完整性方面的优势,并提供了环境配置指南和典型代码示例,帮助开发者快速掌握Spark的核心技术要

2026-03-17 15:46:42 554

原创 Apache Spark Real-Time Mode 深度解析:打破微批次壁垒,挑战 Flink 的实时王座

Spark RTM:流处理新突破 本文分析了Spark 4.1推出的Real-Time Mode(RTM)如何突破传统流处理困境。RTM通过三大创新实现了高吞吐与低延迟的统一:1)长周期Epoch+连续数据流,将检查点开销摊薄;2)Stage并发执行,消除上下游等待;3)非阻塞算子实现数据持续流动。相比传统微批次的秒级延迟,RTM可达毫秒级,同时保留Spark的容错优势。与Flink相比,RTM在批流统一、生态兼容性上更优,但在状态管理和Exactly-Once语义上仍有差距。RTM为需要同时处理批流任务的

2026-03-17 10:27:33 481

原创 Kubernetes 进阶学习指南

本文介绍了 Kubernetes(K8s)的核心运维工具与最佳实践,涵盖以下关键内容: Helm:K8s包管理器,通过Chart打包应用资源,支持一键部署、升级和回滚。 RBAC:基于角色的权限控制,定义用户/服务账号对资源的操作权限。 GitOps/ArgoCD:实现持续交付,通过Git仓库管理配置变更。 可观测性:监控、日志和链路追踪确保系统透明性。 NetworkPolicy:网络隔离策略,控制Pod间通信。 Operator模式:扩展K8s功能,自动化复杂应用管理。 多集群与多租户:跨集群部署与资源

2026-03-16 17:52:24 280

原创 Kubernetes(K8s)系统学习指南

Kubernetes(K8s)是Google开源的容器编排平台,用于解决Docker在多机大规模场景下的管理难题。其核心架构分为控制面(API Server、etcd、Scheduler等)和工作节点(kubelet、kube-proxy等),通过声明式YAML文件管理各类资源对象。主要特性包括:Pod自动调度、Service服务发现、滚动更新、存储管理(PV/PVC)、Ingress流量入口、配置管理(ConfigMap/Secret)以及自动扩缩容(HPA)。K8s采用解耦设计,各组件通过监听etcd异

2026-03-16 11:14:11 501

原创 Docker 深入学习指南

本文深入探讨了Docker核心技术与最佳实践。主要内容包括:Dockerfile编写技巧(多阶段构建、缓存优化)、镜像分层原理与体积优化、容器运行机制、网络配置、数据存储管理、Docker Compose进阶用法、安全实践以及CI/CD部署流程。重点解析了多阶段构建如何显著减小镜像体积(85%以上),联合文件系统(UnionFS)的工作机制,以及通过.dockerignore和层缓存优化构建效率。文章为开发者提供了从基础到高级的Docker技术指南,特别强调生产环境中的安全性和性能优化方案。

2026-03-16 10:22:01 350

原创 Docker 基础入门指南

Docker是一个开源容器化平台,通过将应用及其依赖打包成标准化容器,解决环境不一致、依赖冲突等部署痛点。核心概念包括Dockerfile(构建镜像的脚本)、Image(只读模板)、Container(运行实例)和Registry(镜像仓库)。相比虚拟机,容器更轻量(共享宿主机内核)、启动更快(秒级)且资源占用更少。Docker采用Client-Server架构,提供丰富的命令管理镜像和容器生命周期,支持网络配置和存储卷实现持久化数据。主要优势包括环境一致性、隔离性、快速部署和高资源利用率,适用于微服务、C

2026-03-16 09:08:35 396

原创 Flink 运行时架构 & 完整任务提交流程

本文详细解析了Apache Flink分布式流处理引擎的运行时架构和任务提交流程。Flink采用分层架构,包括客户端层(负责作业提交)、主节点JobManager(负责作业调度和管理)、资源管理器(负责资源分配)、任务执行节点TaskManager(负责实际计算)以及外部服务(提供高可用和状态存储支持)。任务提交流程包含8个关键步骤:从用户提交作业开始,经过StreamGraph生成、JobGraph优化、ExecutionGraph展开、资源申请与分配,最终在TaskManager上启动任务执行。Flin

2026-03-03 08:44:58 638

原创 Flink状态后端类型与区别

Flink的状态后端决定了Checkpoint存储方式和状态在TaskManager内存与外部存储间的分布。Flink 1.13+主要支持两种状态后端:HashMapStateBackend(内存存储,适合小状态、低延迟场景)和EmbeddedRocksDBStateBackend(磁盘存储,支持大状态和增量Checkpoint)。前者基于JVM堆内存,读写快但受内存限制;后者通过RocksDB实现磁盘存储,支持超大状态但性能较低。选择取决于状态大小、性能需求和稳定性要求,可通过代码配置实现。

2026-03-02 14:58:48 552

原创 Flink背压问题定位与解决

Flink流式计算中,背压(Backpressure)是常见问题,当数据处理速度跟不上数据流入速度时,会导致作业延迟增加甚至故障。本文介绍了背压的识别方法(通过Web UI颜色标记和Metrics指标)、常见原因分析(资源不足、数据倾斜、算子性能问题等),并提供了定位背压的具体步骤。解决方案包括资源调整、业务逻辑优化、数据倾斜处理、外部系统交互改进及Flink配置调优。最后提出了预防背压的最佳实践,如上线前压测、建立监控告警等,帮助确保Flink作业稳定运行。

2026-03-02 14:19:39 616 1

原创 如何解决 Flink 的状态膨胀问题

Flink状态膨胀问题优化方案 状态膨胀问题主要由无限制状态积累、大键值存储、不合理数据结构及数据倾斜等引起。核心优化措施包括: TTL设置:通过DataStream API或SQL(全局配置/Hint/编译计划)为状态设置生存时间 状态后端选择:大状态场景优先使用RocksDB,并调优内存管理、压缩策略及增量Checkpoint 业务逻辑优化:避免无限ListState,改用MapState分区存储;优化窗口聚合与连接操作 运维监控:通过Metrics跟踪状态大小,处理数据倾斜(如加盐),必要时重启作业重

2026-03-02 13:54:50 727

原创 Flink 的 Exactly-Once 语义如何实现

Flink的Exactly-Once语义通过多机制组合实现数据精准处理:基于Checkpoint机制(通过Barrier标记和状态快照)确保内部状态一致性,结合两阶段提交协议(2PC)保障端到端准确性。配置需启用Checkpoint并设置EXACTLY_ONCE模式,同时要求外部系统支持事务或幂等写入。该方案整合了分布式快照算法和事务协议,配合适当的状态后端选择(如RocksDB),实现了故障情况下的数据精准处理。

2026-03-02 09:43:43 571 1

原创 Dump Java 进程内存脚本

摘要:dump_java_process.sh 脚本用于自动生成 Java 进程的堆内存快照。支持通过 PID 或关键字匹配 Java 进程,使用 jmap 生成 .hprof 格式的 dump 文件后,自动压缩为 tar.gz 格式并保存到 /tmp/java_dumps 目录。脚本提供两种运行方式:自动匹配首个 Java 进程或指定 PID。执行前需确保环境已安装 JDK(包含 jmap 工具),执行后会自动清理原始 dump 文件。输出文件按格式命名(如java_heap_dump_PID_时间.ta

2025-06-24 09:36:04 384

原创 根据进程运行用户执行不同操作

摘要:该脚本通过查询指定进程的运行用户来执行不同操作。首先查找目标进程并获取其运行用户信息,随后根据用户类型执行相应命令:若为root用户则显示当前用户,若为hadoop用户则执行jps命令,其他用户则不执行特定操作。脚本提供了灵活的进程管理和权限控制功能。

2025-06-23 09:56:52 172

原创 实时数仓方案介绍

场景数仓方案介绍

2025-04-23 13:54:48 1061

原创 使用 PySpark 批量清理 Hive 表历史分区

通过 PySpark 批量清理 Hive 表历史分区,可以有效释放存储空间,提升 Hive 元数据管理效率。该方法简单高效,适用于大多数基于时间分区的 Hive 表维护场景。

2025-04-18 13:44:29 706

原创 Clickhouse 配置参考

Clickhouse 常用配置参考

2025-04-18 13:20:26 1078

原创 基于Python脚本实现Flink on YARN任务批量触发Savepoint的实践指南

在流计算生产环境中,Flink on YARN的部署方式凭借其资源管理优势被广泛采用。Savepoint作为Flink任务状态的一致性快照,承载着故障恢复、版本升级、作业暂停等重要场景的核心保障。当集群中运行数十个Flink作业时,手动逐个触发Savepoint耗时且易出错。本文提出一种基于Python脚本的批量化操作方案,可显著提升运维效率。

2025-04-08 09:57:40 1135

原创 Flink API 解析 Flink Job 依赖的checkpoint 路径

Flink API 解析 Checkpoint _metadata 中依赖的元数据路径

2025-02-24 11:48:13 350

原创 Python解析 Flink Job 依赖的checkpoint 路径

Python 解析 Flink _metadata 文件

2025-02-21 14:45:55 1069

原创 RocksDB Bloom Filter 如何避免假阳性问题探索

对于 Flink 等大数据应用,合理配置 Bloom Filter 参数并监控其有效性,可大幅降低状态查询延迟,提升吞吐量。(False Positive):当 Bloom Filter 认为键存在时,实际可能不存在,这会导致无效的磁盘 I/O,影响查询性能。当键包含时间戳时,RocksDB 会在比较中剥离时间戳,仅基于用户键(User Key)判断逻辑存在性,避免因时间戳版本导致的误判。然而,其核心缺陷是存在。

2025-02-21 09:25:32 1053

原创 解决Python升级导致PySpark任务异常方案

解决 PySpark 任务 No module named 'encodings' 问题

2025-02-19 11:10:20 415

原创 Linux 多Python版本统一和 PySpark 依赖 python 包方案

PySpark 依赖 Python.zip 打包方式

2025-02-19 10:10:56 977

JavaUSB.rar

jsr80中的jusb想jusb.dll找了好久,好好珍惜把

2013-10-07

空空如也

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

TA关注的人

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