- 博客(342)
- 资源 (3)
- 收藏
- 关注
原创 03 | Hive 如何处理小文件
场景推荐做法新表设计使用 ORC/Parquet + 分区 + 分桶ETL 写入开启参数,控制 Reduce 数动态分区设置防止分区爆炸已有小文件ORC 表用,其他格式用重写长期治理建立每日小文件合并调度任务。
2025-11-19 11:08:00
819
原创 hive 成本优化器 (CBO - Cost-Based Optimizer) 原理
特性说明核心价值基于数据分布智能选择最优执行计划关键前提准确、及时的统计信息主要收益Join 性能提升 2~10 倍,减少资源浪费适用场景多表关联、复杂子查询、大表 Join推荐指数⭐⭐⭐⭐☆(需配套统计信息管理)💡CBO 不是“银弹”,而是“数据驱动优化”的基础设施。当你的 Hive 数仓进入中大规模阶段,建立统计信息收集机制 + 启用 CBO是性能调优的必经之路。通过合理使用 CBO,你可以让 Hive 从“被动执行 SQL”升级为“主动优化查询”,真正释放大数据分析的性能潜力。
2025-11-19 10:50:05
651
原创 02 | Hive SMB Join 原理
特性说明核心思想利用预计算(分桶+排序)将 Join 转为高效的流式 Merge最大优势无 Shuffle、无 Reduce、低内存、高吞吐适用场景两个大表按相同 Key 分桶排序后的等值 Join性能提升相比 Common Join 可提速 3~10 倍使用门槛需提前规划表结构,ETL 流程需配合💡SMB Join 是 Hive 数仓中“用存储换计算”的经典范例。虽然建表和数据导入稍复杂,但在高频大表关联场景下,收益巨大,值得投入。
2025-11-19 10:39:46
675
原创 01 | Hive SQL执行步骤
Hive 不是数据库,而是一个“SQL 到分布式计算的翻译器”。阶段目标解析 & 语义分析理解用户意图,验证合法性逻辑计划 & 优化用最少的计算做最多的事物理计划 & 执行借助 Hadoop 生态高效跑任务编写更高效的 Hive SQL;快速定位性能瓶颈(如全表扫描、数据倾斜);合理调优参数(如选择合适的文件格式和执行引擎。💡记住:Hive 的慢,往往不是 SQL 的错,而是执行计划没优化好。
2025-11-19 09:47:53
1904
原创 07 | Flink的API可分为哪几层?
层级API 类型抽象程度灵活性开发效率典型用途底层低⭐⭐⭐⭐⭐低复杂事件处理、自定义逻辑中层中⭐⭐⭐⭐中主流实时计算、ETL高层高⭐⭐⭐⭐⭐⭐⭐实时数仓、分析查询Flink API 分为三层:底层 ProcessFunction 提供最大灵活性,中层 DataStream API 是主流开发选择,高层 Table API/SQL 实现流批统一的声明式分析——开发者可根据需求“按需取用,层层递进”。
2025-11-18 15:24:59
288
原创 06 | Flink的延迟数据如何处理
数据到达时机Flink 行为在窗口结束前到达正常参与计算,窗口触发时输出在窗口结束后、allowedLateness 内到达窗口状态保留,重新计算并输出更新结果超过 allowedLateness进入,主窗口不再处理⚠️ 注意:只有场景才涉及延迟数据处理;Processing Time 窗口无此概念。
2025-11-17 16:41:44
502
原创 05 | Flink中的状态后端(State Backend)是什么
状态后端是 Flink 管理状态存储与恢复的“引擎”,根据状态大小和性能需求选择 Memory、Fs 或 RocksDB 后端,是保障作业稳定性和扩展性的关键配置。
2025-11-17 16:31:59
343
原创 04 | 简单描述下Flink 的容错机制
Flink 通过周期性 Checkpoint 将计算状态和数据源位置快照到持久化存储,故障时从最近快照恢复,从而实现低延迟、高可靠的容错能力。
2025-11-17 16:09:46
251
原创 03 | Flink是如何实现Exactly-Once端到端一致性的
Kafka]↓ (消费 offset=100)├─ 处理数据 → 更新内部状态└─ 预提交:将结果写入 Sink 临时区(事务中)↓Checkpoint 成功?├─ 是 → 正式提交 Sink(commit 事务)└─ 否 → 回滚 Sink(abort 事务),从 offset=100 重放。
2025-11-17 16:02:05
599
原创 01 | 常用数据结构及其特点
数据结构查找插入删除有序典型应用场景数组O(1)O(n)O(n)是随机访问、缓存链表O(n)O(1)O(1)是频繁增删、LRU栈O(1)O(1)LIFO表达式计算队列O(1)O(1)FIFOBFS、任务调度哈希表O(1)O(1)O(1)否去重、缓存BSTO(log n)O(log n)O(log n)是动态排序红黑树O(log n)O(log n)O(log n)是TreeMap堆O(1)(顶)O(log n)O(log n)部分有序。
2025-11-14 15:24:01
1213
原创 01 | Java有哪些容器
Java 容器 =接口与实现分离、泛型支持、fail-fast 机制、并发安全选项。选择容器时,应根据是否有序、是否允许重复、线程安全、性能要求综合判断。
2025-11-14 14:16:55
444
原创 01 | 数据仓库主题域如何划分
主题域是面向业务分析、围绕某一核心业务过程或对象组织起来的数据集合,代表企业中一个相对独立、稳定的业务领域。主题域划分的本质,是将混沌的原始数据,转化为结构化的业务语言。✅好的主题域划分应做到业务人员能看懂(“这就是我们的交易数据”);开发人员能建模(“所有订单相关字段都在交易域”);分析师能自助(“我知道用户行为在用户域”)。通过科学的主题域设计,数仓才能真正成为企业的数据资产目录和分析基石。
2025-11-13 16:00:13
852
原创 01 | Hadoop中Shuffle为什么使用环形缓冲区
问题答案Hadoop Shuffle 为何用环形缓冲区?为了平衡内存使用与磁盘 I/O,实现高性能 Shuffle核心作用批量缓存 Map 输出,支持异步 spill、排序、分区关键优势减少 I/O、并行计算、控制内存、避免 OOM本质一种内存池 + 生产者-消费者模型的工程优化✅ 环形缓冲区是 Hadoop MapReduceShuffle 性能优化的基石之一,体现了“用内存换速度”的经典分布式系统设计思想。
2025-11-13 13:46:08
478
原创 02 | 说下Flink Watermark机制
Watermark 是一种特殊的时间戳标记,表示“在此 Watermark 之前(≤ W)的事件已经全部到达”,即系统认为不会再有 ≤ W 的事件到来。Watermark 是单调递增的(不能倒退)表示 “事件时间 ≤ t 的数据已完整”对事件时间进度的估计概念说明事件时间事件真实发生的时间(来自数据本身)Watermark“≤ W 的事件已到齐”的进度标记作用触发事件时间窗口、处理乱序事件核心原则Watermark 单调递增,取多流最小值关键配置✅。
2025-11-13 10:56:55
387
原创 01 | 什么是 Flink 反压
反压是指在 Flink 数据流中,下游算子处理能力不足,导致其输入缓冲区(Input Buffer)被填满,进而阻塞上游算子继续发送数据的现象。问题答案什么是反压?下游处理慢 → 上游自动减速的流控机制是否正常?✅ 正常且必要,防止 OOM如何发现?Web UI 查看 Backpressure 状态根本原因?瓶颈算子(通常是 Sink 或窗口)如何解决?优化 Sink、解决倾斜、调并行度、扩容资源💡最佳实践不要试图“消除”反压,而是通过优化让反压消失。健康的 Flink 作业在负载变化时应能。
2025-11-13 09:53:18
726
原创 Reduce 任务的数量是怎么确定的
问题答案谁决定 Reduce 任务数量?用户(通过代码或配置)默认是多少?1 个能否自动根据数据量调整?❌ 不能最佳实践?根据集群资源和中间数据量合理设置(通常几十到几百)什么时候设为 0?不需要 Reduce 阶段时(纯 Map 作业)✅建议:生产环境中永远不要依赖默认值 1,应根据实际负载测试确定最优 Reducer 数量。
2025-11-11 16:46:29
711
原创 hdfs中写数据时节点宕机如何处理
✅HDFS 在写入过程中具备强容错能力自动检测 DataNode 宕机;动态移除故障节点,替换为健康节点;重传未确认数据,保证数据不丢失;后台自动补足副本数,维持数据可靠性。🔒核心原则“只要有一个副本写入成功,数据就不会丢;系统会自动恢复副本数量。因此,在合理配置和正常运维下,单台甚至多台 DataNode 宕机通常不会导致数据丢失或写入失败,这是 HDFS 作为分布式存储系统的重要优势之一。
2025-11-11 13:48:07
897
原创 hadoop 的 namenode 宕机如何处理
场景处理方式恢复时间数据风险有 HA自动故障转移秒级~分钟级无无 HA,可重启重启 NameNode分钟级无无 HA,需恢复元数据从 Secondary NN 恢复数十分钟可能丢失部分元数据元数据完全损坏几乎无法恢复文件系统结构丢失💡强烈建议:所有生产环境必须部署,这是 Hadoop 高可用的基石。
2025-11-11 11:40:29
577
原创 Yarn有哪些调度策略
YARN 的调度策略核心在于资源如何在多用户、多应用之间分配。是当前主流选择,兼顾隔离性与弹性;曾用于追求公平和低延迟,但已被弃用;FIFO仅适用于简单场景。合理配置调度器,是构建高效、稳定大数据平台的关键一步。
2025-11-11 11:21:44
733
原创 Hive udf函数包括哪几类
类型输入输出用途典型场景内置示例UDF1行 → 1行转换处理字符串/日期/数值处理upper()date_add()UDAF多行 → 1行聚合统计GROUP BY汇总COUNT()SUM()UDTF1行 → 多行行扩展展开explode()JAR 包注册-- 添加 JAR-- 创建临时函数-- 使用。
2025-11-11 09:35:52
346
原创 Hadoop机架感知原理
机架感知原理:通过脚本/Java API 将 IP 映射到机架信息,构建网络拓扑。HDFS 应用:副本跨机架存储,优先本地读取。MapReduce 应用:任务优先调度到数据本地节点。性能提升:减少网络流量 60-80%,降低读取延迟 30-50%。配置验证。核心价值网络拓扑感知 + 数据本地性优化 + 容错性提升。
2025-11-11 09:35:23
348
原创 MapReduce过程中用到了哪些数据结构和算法
MapReduce 核心数据结构:环形缓冲区、HashMap、优先队列、迭代器。关键算法:哈希分区、快速排序、归并排序、LRU 缓存、流式处理。优化策略:内存排序、溢写合并、网络压缩、推测执行。复杂度:Map 排序 O(n log n),Reduce 分组 O(n)。核心要点内存管理 + 排序算法 + 哈希算法 + 流式处理。
2025-11-10 17:17:18
784
原创 如何通过hive执行计划了解sql执行过程
通过 EXPLAIN 查看 Hive 执行计划:执行顺序为 TableScan → Filter → Select → Group By → Join → Reduce → Output。关键关注点:数据量统计(Num rows)、操作符类型(Map Join vs Shuffle Join)、Stage 划分、分区裁剪效果。优化方向:过滤条件前移、Map Join 触发、数据倾斜处理、向量化执行。实践建议每次复杂查询前都查看执行计划,验证优化策略是否生效。
2025-11-10 16:05:22
351
原创 Hive 中 on和where的区别
ON 和 WHERE 的核心区别执行时机:ON 在 JOIN 时执行,WHERE 在 JOIN 后执行对结果影响:ON 影响 JOIN 逻辑,WHERE 不影响 JOIN 类型性能:ON 早期过滤性能更好最佳实践:JOIN 相关过滤用 ON,全局过滤用 WHERE记忆口诀ON 控制 JOIN,WHERE 控制结果。
2025-11-10 16:02:26
382
原创 Hive主要有几种存储格式&压缩方式
存储格式压缩比查询性能写入性能适用场景TEXTFILE低差好临时表ORC✅ 高✅ 优秀好推荐分析PARQUET✅ 高✅ 优秀好推荐跨引擎中中中MapReduce 中间结果压缩方式压缩比压缩速度解压速度切分支持SNAPPY中✅ 快✅ 快❌ZSTD✅ 高✅ 快✅ 快❌GZIP✅ 高慢中❌BZIP2最高很慢很慢✅推荐场景存储格式压缩方式理由数据分析ORC最优性能跨引擎PARQUETSNAPPY兼容性好日志存储ORCSNAPPY。
2025-11-10 15:50:39
653
原创 Hive和传统数据库之间的区别
维度传统数据库Hive定位OLTP 事务系统OLAP 分析系统数据规模小到中等大到超大实时性高低(批处理)事务支持完整 ACID有限支持适用场景在线业务离线分析💡核心结论传统数据库:适合实时事务处理、小规模数据、强一致性场景;Hive:适合大数据分析、离线处理、弱一致性场景。在现代数据架构中,两者往往是互补关系:传统数据库处理在线业务,Hive 进行离线分析和数据仓库建设。
2025-11-10 15:31:23
1097
原创 HiveSQL和SparkSQL的区别
维度HiveSQLSparkSQL性能中等(依赖执行引擎)✅ 高(原生内存计算)功能传统批处理✅ 批+流+ML兼容性✅ 完全 Hive 兼容高度兼容,略有差异生态Hadoop 生态Spark 生态学习成本低(SQL 标准)低(SQL 标准)适用场景传统数仓现代数仓 + 实时分析💡核心结论HiveSQL:企业级数仓的稳定选择,兼容性好,适合传统批处理场景;SparkSQL:现代化数据处理的首选,性能优异,功能丰富,适合批流统一场景。在实际生产中,
2025-11-10 14:58:55
976
原创 Spark SQL 和 Hive on Spark的区别
维度Spark SQL性能✅ 更优(5-15%提升)良好(兼容优先)优化器Catalyst(激进优化)Hive + Spark(双重优化)生态集成✅ 原生 Spark 生态依赖 Hive 生态兼容性有限(Spark SQL 语法)✅ 完全 Hive 兼容适用场景新项目、高性能分析现有 Hive 迁移💡核心结论Spark SQL 性能通常优于 Hive on Spark,差异主要源于优化器的差异和架构设计。但在生产环境中,Hive on Spark 的兼容性价值往往更重要。
2025-11-10 14:47:25
1028
原创 从真实案例出发解决数据倾斜问题
99% 的 Task 几秒完成,1 个 Task 卡 2 小时。通过采样分析定位到倾斜 Key,采用“拆分 + 随机打散”策略,将单点压力分散到 10 个并行任务。最终作业从 2 小时降至 8 分钟,提速 16 倍,资源消耗减少 75%。后续我们将倾斜检测纳入上线 checklist,并默认开启 Spark AQE,从源头规避此类问题。这种经验体现了问题定位能力、技术深度和业务结果导向,是大数据工程师的核心价值。
2025-11-10 11:00:51
635
原创 hive mapjoin 原理
Hive MapJoin 通过将小表广播到所有 Mapper 内存中构建 Hash 表,在 Map 阶段直接完成 JOIN,避免了 Reduce Shuffle,大幅提升性能;但要求小表足够小、JOIN 条件为等值,且不支持 FULL OUTER JOIN。这是 Hive 性能优化中最基础也最重要的技术之一。
2025-11-10 10:14:54
370
原创 Hive中的文件存储格式和压缩算法有哪些
Hive 生产环境首选 ORC + ZSTD/Snappy:列存格式支持谓词下推和高效压缩,ZSTD 提供极致压缩率,Snappy 保证速度;若需多引擎兼容,则选 Parquet + Snappy。避免使用不可分割的 Gzip,尤其对大文件。这是数仓性能调优的基础,直接影响存储成本与查询效率。
2025-11-07 17:39:17
958
原创 Hive中有哪些开窗函数
写法含义当前行 + 前2行(共3行)整个分区时间范围内(需配合时间排序)示例:7日滚动平均销售额SELECTsale_date,amount,FROM sales;RANGE要求ORDER BY字段是数值或日期类型;ROWS按行数计算。Hive 开窗函数通过定义计算窗口,实现分组内排名、累计、移动计算等需求,典型应用包括 Top-N、留存分析、时间间隔计算等;使用时需注意窗口范围、性能瓶颈(避免全局排序)和LAST_VALUE的默认行为。
2025-11-07 11:13:42
352
原创 Hive中的排序有哪些
Hive 排序要避免ORDER BY全局排序(单点瓶颈),优先用 DISTRIBUTE BY + SORT BY实现分组内有序,或通过窗口函数(如)高效实现 Top-N。排序前务必评估数据量和并行度,防止任务失败。这是 Hive 性能调优的关键知识点,也是区分初级和高级开发的重要标志。
2025-11-07 10:25:43
423
原创 Hive外部表在什么场景使用
场景推荐表类型ODS 原始日志、外部写入数据✅外部表数仓中间层(DWD/DWS)、结果表(ADS)✅内部表(Hive 全权管理)多引擎共享数据✅外部表临时分析、探索性查询✅外部表需要TRUNCATE清空数据❌ 外部表不支持 → 用内部表外部表用于“Hive 只读不写”的场景,核心原则是:谁产生的数据,谁负责管理。原始数据、共享数据、外部流程写入的数据,都应使用外部表,以保障数据安全与系统解耦;而数仓内部加工的中间表和结果表,则用内部表便于 Hive 统一管理生命周期。
2025-11-07 09:57:12
437
原创 hive内部表和外部表的区别
内部表由 Hive 全权管理,删表即删数据;外部表仅管理元数据,删表不删数据,适用于原始数据或多方共享场景。原始层用外部表,数仓中间层/应用层用内部表。这是 Hive 数据治理的基础设计,务必根据数据生命周期选择合适类型。
2025-11-06 17:56:49
206
原创 Hive SQL如何优化
Hive SQL 优化 =“少读、少算、快执行”少读:分区裁剪 + 列裁剪 + 列存格式;少算:MapJoin + 倾斜处理 + 向量化;快执行:Tez 引擎 + 合理资源配置 + CBO 优化。掌握这套方法,可将小时级任务优化到分钟级,是数仓工程师的核心竞争力。
2025-11-06 17:52:58
614
原创 Hive 调整 JVM 堆大小与重用
项目推荐配置堆内存比例Map 内存2~4 GB(普通 ETL),大表可到 6~8 GBReduce 内存通常比 Map 大(因要聚合数据)JVM 重用仅 MapReduce + 小文件场景开启,值设为5~20引擎选择优先用Tez,天然避免 JVM 频繁启停Hive 通过或调整 JVM 堆内存,需与容器内存匹配;JVM 重用()仅适用于 MapReduce 的小文件场景,可减少启动开销,但 Tez/Spark 因架构优势无需此优化。
2025-11-06 17:36:26
320
原创 Hive 中 group by 和 distinct的区别
DISTINCT本质是GROUP BY的语法糖,在 Hive 中性能相当或略差;而GROUP BY更灵活、可优化、支持聚合,是生产环境的首选。尤其对于,应主动改写为子查询 +GROUP BY避免性能灾难。
2025-11-06 16:19:49
282
原创 什么是SMB Join
SMB Join 是 Hive 针对“大表 JOIN 大表”的高性能方案,要求两张表按 JOIN 字段分桶且有序,通过桶对齐和预排序,实现 Reduce 阶段的高效 Merge,避免全量 Shuffle 和排序。适用于数仓 DWD/DWS 层宽表构建等场景,是高级 Hive 优化的重要手段。
2025-11-06 16:16:22
768
基于阿里云部署CDH-6.3.2
2025-08-23
MySQL官方测试数据集 test-db-master.zip
2025-06-13
Spark快速大数据分析(清晰文字版)
2018-04-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅