
一、HDFS1.1 心跳 vs 块报告心跳3s 一次上报DN存活状态、磁盘容量不带块块报告全量 FBR 默认 6h上报 DN 上全部 block 清单增量 IBRIncremental Block Report 块新增/删除即时上报块报告内容blockId、genStamp块副本的版本号NameNode 生成单调递增用来区分同一个 BlockId 下新旧版本的数据块副本。blockId是块的唯一 ID但是同一个 blockId 可能产生多个副本版本靠 genStamp 区分、块长度、状态、storageUUID存储卷 UUID无文件名项目Heartbeat 心跳IBR 增量块汇报FBR 全量块汇报频率3 秒一次块变更时触发新增 / 删除块默认 6 小时一次携带内容DN 存活、磁盘容量不带 block只上报发生变化的 block上报 DN 全部 block 列表数据量很小轻量 RPC小增量非常大大集群开销高核心作用保活、磁盘资源上报NN 下发指令实时同步块变更元数据NN 重建全量块元数据1.2 损坏块读时发现坏块IBR 上报等待 DN 心跳 (3s) 触发副本重建长期未读块扫描器默认21 天才发现坏块全部副本损坏不能自动修复人工fsck 定位 → 检查 DN 是否离线 → 快照 / 备份恢复 → 可移至 lostfound确认无用再 delete禁止fsck / -delete1.3 DN 磁盘满卷标记 full可读不可写集群满读正常写 / 复制 / 均衡失败极端情况 DN 崩溃。处理hdfs dfsadmin -report清理 expunge 清空回收站扩磁盘 / DNbalancer可降副本。1.4 NN 元数据磁盘满edits 写失败NN 直接宕机集群不可用。处理停集群只清日志临时文件严禁删 fsimage/edits释放空间启动迁移 name.dir 到大磁盘控制 fsimage 保留份数。HA 需关注 JournalNode 磁盘。1.5 非‑HA NN 宕机停止集群 → 确认元数据完整 → fsimageedits 恢复 → 启动 NN → 等待 DN 注册上报块报告 → 退出安全模式 → fsck 校验。二、MapReduce2.1 MR 流程Input → Map →Shuffle (Map 端溢写合并 Reduce 端拷贝归并排序)→ Reduce → Output环形缓冲区100MB80% 触发溢写磁盘CombinerMap 端局部聚合减少 IO满足交换律结合律不保证一定执行不能依赖做业务Partition分区数 Reduce 任务数InputSplit逻辑分片Block物理块1 个 split 对应 1 个 MapTask2.2 数据倾斜现象大部分 task 跑完个别 task 很慢卡在 99%。原因key 分布不均大量数据落到同一个 Reduce。MR 方案combiner、加盐salting、自定义分区、业务预处理。2.3 加盐 Salting给热点 key 加随机前缀打散第一轮局部聚合第二轮去盐全局聚合。group‑by两轮聚合join小表需要同步膨胀代价多一轮 Shuffle。2.4 小文件危害大量 MapTaskJVM 与调度开销巨大。解决CombineFileInputFormat、HAR、预处理合并。2.5 MR1 vs MR2(YARN)MR1JobTracker 单点资源调度 任务管理MR2‑YARNRM 管资源NM 管节点每个作业独立 AMMR 只是 YARN 上框架三、YARN任务失败排查RM 页面拿 applicationId区分FAILED / KILLED优先看 AM 日志区分初始化失败 or Task 运行失败Task 失败看 Container stderrKILLED人为kill、内存超限 OOM、NM 本地磁盘满、资源抢占、AM 心跳超时FAILED代码 bug、脏数据、序列化、Shuffle、HDFS 权限 / 路径辅助yarn node -list -all看节点 UNHEALTHY检查队列、HDFS⚠️磁盘区分HDFS 盘业务数据NM 本地盘容器临时、Shuffle 中间文件No space left on device大多是 NM 本地盘满。四、Spark on YARNyarn‑clientDriver 在提交客户端客户端断开 Driver 挂yarn‑clusterDriver 跑 YARN 容器 AM生产推荐高频异常Container killed exceeding memory limitsexecutor 内存 /memoryOverhead 不足排查数据倾斜FetchFailedExceptionShuffle 拉取失败检查 NM 磁盘、节点健康、网络NotSerializableException闭包引用不可序列化对象Driver OOMcollect 拉大量数据、广播大变量五、HiveMapJoin小表做 hash join小表过大内存溢出调阈值或走 Reduce Join脏数据配置参数把转换异常置 null防止任务失败表找不到表名写错、底层 HDFS 数据被删、依赖视图源表删除六、易混点速对比Combiner不改变 key局部聚合不能打散热点Salting 加盐改变 key打散热点两轮聚合FAILED业务逻辑异常KILLEDYARN 强制杀死内存 / 磁盘 / 抢占七、自测QA心跳与块报告区别块报告包含哪些HDFS 全部副本损坏怎么处理DN 磁盘满和 NN 元数据磁盘满现象及处理MR Shuffle 流程Combiner 作用与限制数据倾斜现象、原因加盐原理YARN 任务失败排查步骤FAILED 和 KILLED 区别InputSplit 和 Block 区别小文件危害和处理Spark FetchFailed 异常原因