自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

随便写写,记录一些生活、想法和偶尔冒出的念头。

这里没有固定主题,想到什么就写什么,权当留下一点随手记录。

  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

原创 Hive 3.1.2 编译入口与输入统计锁详解

基于 Hive 3.1.2 源码,用四张流程与时序图讲清 globalCompileLock 和 INPUT_SUMMARY_LOCK:它们如何选择、何时持有与释放,为什么开启并行编译后仍会排队,以及如何结合日志和线程栈定位查询等待。

2026-11-12 14:08:49 115

原创 Apple Watch Ultra 2 高血压通知开通实测:iAnyGo 蓝牙模式与完整恢复流程

记录 Apple Watch Ultra 2 在 iOS 27.2、watchOS 27.0.1 下开启高血压通知的完整实测:iAnyGo 地区限制处理、临时 AppleLocale 参数、游戏模式蓝牙连接、飞行模式下重新发送香港坐标,以及恢复真实定位和重启后的验证。附开通前后截图与失败尝试说明。

2026-10-29 14:59:39 593

原创 大数据智能运维实战(十二):如何证明运维助手有用?用故障案例做验收

一次演示答对,不代表运维助手已经通过验收。本文回放任务重试、关联缺失、资源紧张、日志不完整和权限拒绝等虚构案例,检查工具选择、参数、证据与结论,并区分工具测试和真实模型验收。

2026-10-27 11:39:58 556

原创 大数据智能运维实战(十一):运维 MCP 的工程化——权限、限流、审计与错误处理

只读查询也需要权限与执行预算。本文用本机虚构教学方案实现可信身份、查询范围限制、限流、超时与最小审计,区分查询成功但缺数据、工具失败和入口拒绝,让助手正确处理不完整结果。

2026-10-27 11:39:47 414

原创 大数据智能运维实战(十):把查询工具串起来,完成一次任务变慢诊断

工具都能调用,诊断仍可能查错对象。本文把确认运行、获取状态、比较指标、限定日志与形成结论串成固定流程,用低 CPU 排队与高 CPU 运行两个虚构案例,区分事实、原因假设和待验证项。

2026-10-27 11:39:28 385

原创 大数据智能运维实战(九):让 AI 查日志——找到异常,也保留上下文

找到 timeout,不等于已经定位根因。本文用虚构日志说明如何限定运行、节点与时间范围,保留异常前后文,分别处理分页、采集缺口、单条截断和脱敏,并将日志片段作为可追溯证据。

2026-10-26 11:05:22 373

原创 大数据智能运维实战(八):从调度任务追到计算引擎——补齐排查链路

调度侧 RUNNING,不等于计算引擎正在计算。本文以模拟 Hive 作业为例,沿可靠提交回执关联运行、尝试、查询与引擎应用,分别处理关联成功、缺失和冲突,避免按名称或相近时间猜测排查链路。

2026-10-26 11:02:10 231

原创 大数据智能运维实战(七):同一个任务失败了几次?还原执行与重试过程

同一个任务失败了几次,要先分清任务定义、运行实例与执行尝试。本文用虚构重试案例串联时间、执行节点与状态,解释重复事件、手工重跑、失败次数下界和耗时口径,让助手还原有依据的任务时间线。

2026-10-26 11:00:32 421

原创 大数据智能运维实战(六):任务一直在等——排查调度队列与执行资源

任务一直在等,应该查调度规则、执行槽位,还是计算队列?本文通过五组独立虚构运行,结合准确的运行标识、节点标签、槽位及队列记录逐步定位等待层次,并讲清调度等待、执行器启动后和提交后经过时间的包含关系。

2026-10-19 18:28:55 234

原创 CPU 只有 20%,任务为什么还是慢?先查这 5 件事|大数据智能运维实战(五)

CPU 只有 20%,任务却迟迟不结束?先核对运行对象、时间窗口、指标口径、样本缺失与等待证据,再用虚构 CPU 样本解释最新值、均值和峰值,附五项排查清单与可复制记录模板。

2026-10-19 18:26:39 343

原创 大数据智能运维实战(四):集群到底健不健康?先把状态与时效讲清楚

查询到 RUNNING,就能说集群健康吗?本文继续青禾平台的虚构场景,分开判断组件状态与数据时效,区分正常、异常、未知,并用期望检查清单解释过期上报、检测缺失和有效判断覆盖率,生成能说明依据与范围的巡检结果。

2026-10-19 18:24:47 381

原创 大数据智能运维实战(三):实现第一个运维 MCP 工具——查询节点与组件状态

沿用青禾平台的虚构实验,把节点与组件上报封装成第一个运维 MCP 工具。完成 Spring AI 工具注册、参数校验和结构化返回,通过实际调用讲清上报时间、缺失数据、结果截断与可空字段,让助手有依据地回答“有哪些节点,分别运行什么组件”。

2026-10-19 18:22:37 244

原创 大数据智能运维实战(二):准备一个可复现的运维实验环境

延续青禾平台“日报迟到”的故事,用一个可直接运行的 Java 文件,构造节点、组件、CPU 指标、任务运行和日志样本。通过正常、高 CPU、失败、上报过期四组虚构场景,讲清时间口径、记录关联与证据边界,并配三张教学图,为后续 MCP 工具提供可复现的输入。

2026-10-15 19:38:06 234

原创 大数据智能运维实战(一):机器和任务数据都有了,如何用 MCP 搭建运维助手?

机器指标、任务状态和日志已经上报,如何让 AI 帮忙排查?本文延续小林与小周的故事,用虚构的“日报延迟”案例拆解调度等待与执行耗时,讲清 Spring AI、MCP 和已有平台的分工,并配图说明工具查询、证据组织与诊断边界,为后续实战搭好思路。

2026-10-15 18:48:51 460

原创 Hive Metastore OOM 怎么排查?MySQL 变慢时先查这 6 项|Hive 源码导读(八)

Hive Metastore 报 OOM,该先看什么?用虚构场景和借电话的比喻解释数据库等待、线程与对象保留,附六项排查清单,区分堆 OOM、线程资源不足和容器内存限制,按证据决定下一步。

2026-10-13 15:24:38 385

原创 Hive 源码导读(七):订单日报迟迟没出来,这次该从哪里查?

订单日报迟迟没出来,先查 Hive 还是 YARN?基于 Hive 3.1.2、Hadoop 3.2.1,把请求入口、编译、锁等待、MR 提交、任务执行、事务提交和结果获取串成证据路线,区分计算成功、SQL 成功与报表交付成功。

2026-10-13 11:25:09 242

原创 Hive 源码导读(六):订单已经写出新文件,查询为什么还不能随便读?

订单更新后产生了新文件,查询为什么不能看到什么就读什么?基于 Hive 3.1.2、Hadoop 3.2.1,用订单状态修正串起 Txn ID、Write ID、有效写入列表、ACID 读取与 Compaction,讲清文件存在和数据可见之间的区别。

2026-10-12 08:50:22 335

原创 Hive 源码导读(五):集群还有资源,SQL 为什么仍然不动?

集群还有资源,SQL 为什么仍然不动?基于 Hive 3.1.2、Hadoop 3.2.1,从两个会话更新订单的场景入手,用 DbTxnManager、DbLockManager 与 HMS 锁状态区分锁等待和资源等待,明确锁对象、兼容关系与排查证据。

2026-10-12 08:50:05 165

原创 Hive 源码导读(四):YARN Application 出现了,为什么还没开始计算?

YARN Application 已经出现,为什么还没开始计算?基于 Hive 3.1.2、Hadoop 3.2.1,沿 MapRedTask、ExecDriver、JobClient、YARNRunner 到 ResourceManager 与 MRAppMaster,拆开提交、排队、申请容器和任务执行,并串起 Query ID、Job ID 与 Application ID。

2026-10-11 09:52:37 516

原创 Hive 源码导读(三):都是 SELECT,为什么有的查询不需要 YARN?

都是 SELECT,为什么有的查询不需要 YARN?基于 Hive 3.1.2、Hadoop 3.2.1,从 Driver 编译、语义分析、优化到 FetchTask 和 MR 计划,结合 EXPLAIN 和订单样本找到执行路径的分岔口。

2026-10-11 09:52:12 293

原创 Hive 源码导读(二):客户端说“已提交”,SQL 到底走到哪了?

客户端显示已提交,服务端真的开始计算了吗?基于 Hive 3.1.2、Hadoop 3.2.1,沿 Beeline、JDBC、ThriftCLIService、Session 和 SQLOperation 追踪请求、状态与结果,讲清 Operation Handle、Query ID 和 YARN Application ID 的区别。

2026-10-10 10:09:11 436

原创 Hive 源码导读(一):SQL 执行成功了,YARN 上怎么没有新任务?

SQL 执行成功,YARN 上却没有新任务?基于 Hive 3.1.2、Hadoop 3.2.1,结合源码和两张协作图讲清 HiveServer2、Metastore、HDFS、MapReduce 与 YARN 的分工,并附整套订单实验的环境与数据准备步骤。

2026-10-10 10:08:19 370

原创 Spring AI + MCP 查数实战:用户要查 8 月,为什么会查出 9 月的数据?

用户要查 8 月,工具参数却准备查 9 月,格式和自然月校验为何都能通过?沿用虚构 H2 数据,在执行前核对本次意图与工具参数,附排查清单、记录模板和错月拦截验收项。

2026-10-09 14:04:15 839

原创 Spring AI 入门(六):接入 MCP 客户端,完成一个自然语言查数助手

让小周只说一句话,助手就能找表、看字段、查金额。本篇接入 Spring AI MCP Client,将远程工具提供给 ChatClient,串联意图校验与实际查询,核对 770.00 元结果,并说明错误处理和提示词编排的边界。

2026-10-08 09:09:30 826

原创 Spring AI 入门(五):从找表到查数,实现三个实用 MCP 工具

找到了订单表,还要看懂字段和业务口径。本篇用一张 H2 示例表实现 table_search、table_describe、table_query,加入字段白名单、参数化 SQL、自然月校验与行数限制,手动查出 2026 年 8 月每日支付金额。

2026-10-08 09:08:57 362

原创 Spring AI 入门(四):认识 MCP,编写第一个工具服务

把工具搬到独立服务,让不同助手都能使用。本篇用餐厅点单的比喻讲清 MCP Host、Client、Server,使用官方 Starter 和 @McpTool 编写找表工具,通过 HTTP 手动完成初始化、工具发现与调用。

2026-09-28 10:53:29 417

原创 Spring AI 入门(三):Tool Calling,让大模型调用你的 Java 方法

助手会填查询条件,还需要一双取数据的手。本篇用 @Tool 和 @ToolParam 提供模拟订单统计,观察模型提出调用、Java 校验执行、工具结果返回模型的完整过程,讲清工具描述、注册方式和结果验收。

2026-09-28 10:53:14 380

原创 Spring AI 入门(二):提示词与结构化输出,让回答变成 Java 对象

“查一下 8 月”少了哪一年,程序可不敢猜。本篇用 System/User 消息和提示词模板组织需求,通过 entity() 将模型回答转换成 Java record,再用确定性校验检查状态、指标、粒度和完整自然月范围。

2026-09-23 10:29:26 307

原创 Spring AI 入门(一):用 Spring Boot 完成第一次大模型对话

运营同事一句“帮我查个数”,让 Java 开发者小林开始制作 AI 助手。本篇从零搭建 Spring Boot + Spring AI 工程,用 ChatClient 完成第一次模型对话,讲清依赖配置、API Key、运行验证与常见报错。

2026-09-23 10:26:46 352

原创 Apache Paimon 源码导读(九):一张表改了字段,为什么多表入仓任务也会受影响

本文基于 Apache Paimon 1.4.2,以订单、用户和商品三张表共用一个 MySQL CDC 入仓任务为例,解释 DDL 与数据写入的处理链路、divided/combined 的故障影响范围,列举兼容、不兼容及部分同步的 DDL,并给出 Checkpoint、日志排查与生产隔离建议。

2026-09-22 10:31:29 558

原创 Apache Paimon 数据出仓源码导读(八):Paimon 出仓 MySQL 生产调优:Batch、并行度、反压与数据对账

最后一篇回到生产现场。很多任务在测试环境只有每秒几十条,看起来一切正常;这一篇不提供一个“万能最佳配置”,而是给出一套能测量、能解释、能回滚的调优方法。

2026-09-04 08:56:58 582

原创 Apache Paimon 数据出仓源码导读(七):任务失败后数据怎样重来:Checkpoint、重试与幂等恢复

第一句:Checkpoint 前 Flush 是为了防止未写出的内存数据丢失,不是为了让 MySQL 和 Checkpoint 自动组成一笔原子事务。第二句:普通 JDBC Sink 允许数据重放;主键 UPSERT 和 DELETE 解决的是重复执行后的结果收敛,不是保证 SQL 从未重复执行。Batch 设多大Flush 间隔设多久并行度为什么不是越高越好Checkpoint 为什么会形成写入尖峰MySQL 变慢为什么会让 Flink 背压怎样做源端与目标端对账。

2026-09-03 09:10:12 539

原创 Apache Paimon 数据出仓源码导读(六):UPDATE 与 DELETE 如何落库:主键归并、UPSERT 与跨批空窗

第一,+I 和 +U 都可以走 MySQL UPSERT,-D 按主键 DELETE第二,同一 Buffer 内同 Key 只保留最后动作;跨过 Flush 后无法再合并第三,最终状态正确不代表中间没有空窗,也不代表所有副作用都幂等JDBC Batch 已经写进 MySQL新的 Checkpoint 却还没有全局成功然后观察为什么 Source 会重放、为什么普通 JDBC Sink 是 At-Least-Once,以及 UPSERT / DELETE 到底在什么条件下能把重复执行收敛。

2026-09-03 09:08:30 413

原创 Apache Paimon 数据出仓源码导读(五):一条数据怎样写进 MySQL:RowData、Sink 子任务与 JDBC Batch

找到需要消费的 Snapshot↓规划并分配 FileStoreSourceSplit↓从 Split 逐条发出 RowData↓每条记录调用一次↓加入执行器,batchCount++↓按主键放进 Map,后来的覆盖前面的↓行数 / 时间 / Checkpoint / Close 触发↓↓MySQLPaimon Source:逐条发Flink invoke:逐条收Sink Buffer:按主键攒批JDBC / MySQL:Flush 时批量执行。

2026-09-02 11:27:33 435

原创 Apache Paimon 数据出仓源码导读(四):从零跑通 Paimon 到 MySQL:环境、建表与第一条数据

上一篇,我们从源码角度总览了 Paimon 出仓到 MySQL 时的 UPSERT、DELETE、批量写入和故障重放。不过,如果还没有亲手跑过这条链路,一上来就看RowKind和 Checkpoint,很容易把几个层次混在一起。所以从这一篇开始,我们暂时放慢速度,把“Paimon 出仓到 MySQL”拆成几篇独立文章。这一篇只完成一件事:从零搭好一条最小链路,亲眼看到 Paimon 中的一条订单在 MySQL 中新增、更新和删除。先不追每一个源码调用,也先不讨论失败重放。

2026-09-02 11:21:50 329

原创 Apache Paimon 数据出仓源码导读(三):Paimon 出仓到 MySQL:UPSERT、DELETE 与幂等恢复

本文从源码拆解 Paimon 出仓到 MySQL 的完整写入链路,讲清 Flink JDBC Sink 是逐条接收、按子任务攒批,再通过 UPSERT 与 DELETE 批量执行;同时分析 Checkpoint 重放、主键幂等、跨批短暂空窗及无状态重跑的边界。

2026-09-01 20:28:50 469

原创 Apache Paimon 数据出仓源码导读(二):Paimon Changelog 到底输出什么?+I、-U、+U、-D 与 Changelog Producer

同一条 MySQL UPDATE,为什么有时输出 +I,有时是 -D/+I,还有时是 -U/+U?本文结合 Apache Paimon 1.4.2 源码,从 RowKind、Changelog Producer、Changelog 文件与 Flink Normalize 入手,讲清 none、input、lookup、full-compaction 的输出差异、实现原因和运维取舍。

2026-08-31 20:46:16 393

原创 Apache Paimon 数据出仓源码导读(一):Flink 如何从最新 Snapshot 开始全量加增量消费

Flink 读取 Paimon 时,latest-full 如何固定最新 Snapshot 做全量,又从下一个 Snapshot 继续增量?本文结合 DataTableStreamScan、StartingScanner、FollowUpScanner、SplitEnumerator、Checkpoint 和 consumer-id 源码,把全量与增量的交接、故障恢复和运维注意点讲清楚。

2026-08-31 10:35:07 590

原创 Apache Paimon 源码导读(八):一条记录为什么进入这个分区、Bucket 和 Writer

本文以订单 1001 的入仓过程为主线,从源码解释 Paimon 如何根据分区和主键计算 Bucket,再把记录路由到具体 Writer,并说明 Bucket 数、Sink 并行度以及扩容时的运维影响。

2026-08-26 18:28:22 295

原创 Apache Paimon 源码导读(七):MySQL 加字段、改类型、删字段、重命名,Paimon 会跟着变吗

MySQL 执行 DDL 后,Debezium 会把“修改完成后的整张字段清单”交给 Paimon。Paimon 不会照抄 ALTER SQL,而是拿新清单和自己的旧清单逐个比较。加字段 → 新字段会增加,历史数据先读成 NULL改类型 → 放得下才扩大;缩小通常不跟;不兼容就报错删字段 → MySQL 已经删除,Paimon 旧字段仍然保留重命名 → 旧字段保留,新名字被当成一个新字段源码为什么要这样设计?说到底,是因为一张 Paimon 表里已经有历史数据,还有正在运行的下游查询。

2026-08-26 10:21:30 243

工程经济学教学课件ppt

工程经济学课件 书本上的基本知识点及其例题!

2010-02-07

Hadoop中文手册

Hadoop中文说明大全。 介绍了Hadoop架构,及其操作手册等。

2011-08-03

数学建模学习教材(带算法)

数学建模教程 上课的是很老师就用的这个!

2009-09-22

空空如也

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

TA关注的人

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