学习笔记七
✅ 今日掌握知识点
性能调优全攻略:
硬件资源优化配置
内存管理调优
并行度设置策略
数据倾斜处理4种方案
生产环境部署:
YARN集群配置
监控告警体系搭建
作业提交脚本
故障恢复机制
高级优化技巧:
Catalyst优化器原理
执行计划分析
自定义优化规则
动态资源分配
综合项目实战:
完整的ETL流程
数据质量检查
报表生成
监控集成
❗ 重要发现
倾斜处理对比:
scala
// 加盐法 vs 广播变量 vs 拆分处理
// 加盐法:适用于大表join大表
// 广播变量:适用于小表join大表
// 拆分处理:适用于少数倾斜key
内存配置黄金法则:
scala
// executor.memory = 总内存 * 0.6~0.7
// memoryOverhead = max(384m, 0.1 * executor.memory)
// offHeap.size = max(512m, 0.2 * executor.memory)
并行度经验值:
scala
// shuffle分区数 = 总核心数 * 2~3
// 文件分区大小 = 128MB~256MB
// 每个核心处理数据量 = 100MB~500MB
🔍 实践问题与解决方案
问题1:Executor频繁GC
scala
// 解决方案
spark.conf.set("spark.executor.extraJavaOptions",
"-XX:+UseG1GC -XX:+UseStringDeduplication -XX:+PrintGCDetails")
问题2:Shuffle数据溢出磁盘
scala
// 解决方案:调整缓冲区
spark.conf.set("spark.shuffle.file.buffer", "128k")
spark.conf.set("spark.shuffle.spill.batchSize", "20000")
问题3:任务调度延迟
scala
// 解决方案:优化调度器
spark.conf.set("spark.scheduler.mode", "FAIR")
spark.conf.set("spark.scheduler.allocation.file", "fairscheduler.xml")

浙公网安备 33010602011771号