大数据面试核心考点:HDFS读写、Shuffle与Yarn流程详解

发布时间:2026/11/4 20:07:42
大数据面试核心考点:HDFS读写、Shuffle与Yarn流程详解 简介这份资料面向大数据开发、运维、云计算、数据治理及架构方向的学习者与求职者系统梳理了面试中高频出现的技术考点适合用于面试冲刺与知识体系查漏补缺。内容覆盖Linux与Shell基础、Hadoop生态HDFS读写流程、MapReduce Shuffle、YARN提交流程与参数调优、Zookeeper选举机制、Flume事务与防丢失机制、Kafka架构与分区副本策略、Hive内外表与数据倾斜处理、HBase的RowKey设计、Sqoop数据迁移一致性以及Scala语法和Spark部署模式、宽窄依赖、Shuffle流程、缓存与checkpoint等核心问题。资源包共1个docx文件约491KB按技术模块分章编排目录层级清晰便于按知识点逐项检索复习。目前已有885人学习适合需要系统梳理大数据面试要点、对照项目经验查漏补缺的初中级工程师与转岗人员使用。1. 大数据面试到底考什么从一道“HDFS 写流程”就能看出分层很多人准备大数据面试一上来就背 Kafka 参数、背 Flink 水印结果面试官第一句问“HDFS 写流程讲一下”答得磕磕巴巴后面全崩。这场面试真正考的不是你会不会背组件而是你能不能把一条数据从采集、存储、计算到治理讲成一条线。拿分点很集中基础组件流程HDFS 读写、Shuffle、Yarn 提交流程、调优与数据倾斜、数仓分层与指标口径、手写 SQL 和算法。适合大数据开发、运维、云计算、数据治理、架构师五类岗位只是侧重点不同——开发重流程和代码运维重集群和故障治理重口径和血缘。这份题库按 14 章铺开从 Linux 命令到 JVM、Redis、MySQL 都收了下面按考点模块拆给你练。2. 基础组件高频考点HDFS 读写、Shuffle 与 Yarn 提交流程怎么答2.1 HDFS 读流程和写流程面试官要的是“分段 角色”这类题几乎每场必问答不好直接暴露基础。面试官最想听的是你把 NameNode、DataNode、Client 三个角色在每个阶段干了什么说清楚而不是一句“先找 NameNode”。写流程按四段答客户端向 NameNode 请求创建文件NameNode 校验权限和目录后返回可写客户端把数据切成块向 NameNode 申请第一个块的 DataNode 列表默认三副本NameNode 按机架感知返回客户端与第一个 DataNode 建管道DataNode 之间串成 pipeline逐包传 ack写完一个块再申请下一个最后通知 NameNode 关闭。读流程反过来客户端请求打开文件NameNode 返回块位置列表按距离排序客户端选最近的 DataNode 读读完一个块再读下一个最后关闭。答题时补一句“机架感知决定副本放置默认本机架一个、另一机架两个”面试官会认为你懂生产。常见追问是“写的过程中某个 DataNode 挂了怎么办”答“pipeline 中断客户端从 ack 队列里找到未确认的包剔除故障节点后重建管道继续写NameNode 后续再补副本”。2.2 MapReduce 的 Shuffle 过程别只背“环形缓冲区”Shuffle 是 MapReduce 和 Spark 共同的命门。标准答法分 Map 端和 Reduce 端Map 端输出先写环形缓冲区默认 100M阈值 80% 溢写溢写前按分区 排序可选 Combiner多次溢写合并成一个大文件Reduce 端按分区拉取先落内存再落磁盘最后归并排序交给 reduce。面试官常追问“Combiner 和 Reducer 的区别”答“Combiner 在 Map 端做局部聚合输入输出类型必须一致且只对满足结合律的操作安全比如求和可以、求平均值不行”。再追问“Shuffle 为什么慢”答“磁盘 IO、网络传输、排序序列化三块优化方向就是减少溢写次数、加 Combiner、调缓冲区大小、用 Kryo 序列化”。2.3 Yarn 的 Job 提交流程与调度器分类Yarn 提交流程按角色串客户端提交 Application 到 ResourceManagerRM 分配 Container 启动 ApplicationMasterAM 向 RM 注册并申请资源RM 返回 Container 列表AM 通知对应 NodeManager 启动 TaskTask 向 AM 汇报进度全部完成后 AM 注销、RM 回收。调度器三类要能对比FIFO 先进先出简单但大任务会堵死小任务Capacity Scheduler 按队列分资源适合多团队共享是 Hadoop 默认Fair Scheduler 按权重动态分配小任务响应快。答题时点一句“生产上多队列用 Capacity队列内再配最大资源上限防止单任务吃满”比干背定义强。2.4 真题演练Hadoop 宕机与数据倾斜怎么答面试题“集群一台 DataNode 宕机你怎么排查和处理”答题思路分三步先看 NameNode UI 和日志确认副本是否自动补齐再看该节点是否影响正在跑的任务Yarn 上 Task 会重试最后查宕机原因磁盘满、内存溢出、网络。补一句“副本数默认 3单节点挂不影响读但要尽快恢复否则连续挂两台就有丢块风险”。面试题“Hadoop 里数据倾斜怎么解决”先定位看 Counter 里某个 Reduce 输入记录数远高于其他。再给方案加随机前缀打散 key、Map 端做局部聚合、调大 reduce 个数、对热点 key 单独处理。这类题通常这么答——先说现象再说定位手段最后给两到三个可落地的方案别只报一个名词。3. 消息与采集链路Kafka 丢数据、Flume 事务与 Hive 优化3.1 Kafka 丢不丢数据三个环节分别答这是 Kafka 最高频的题。丢数据分三个环节生产者端答“acksall retries0 幂等性开启保证发送不丢不重”Broker 端答“replication.factor3、min.insync.replicas2、unclean.leader.electionfalse保证副本同步”消费者端答“关闭自动提交 offset处理完再手动提交保证至少一次”。追问“Kafka 消息积压怎么处理”答“先看是生产快还是消费慢消费慢就加消费者不超过分区数、加分区、优化消费逻辑批量处理临时方案是把积压消息转到一个新 topic 用更多分区消费”。再追问“Kafka 为什么快”答“顺序写磁盘、页缓存、零拷贝、批量压缩、分区并行”。3.2 Flume 的 Put 事务与 Take 事务防丢数据的核心Flume 防丢靠事务。Put 事务Source 读到数据先写 Channel写成功才提交失败回滚重试Take 事务Sink 从 Channel 取数据写下游成功才提交失败回滚。答题时强调“Channel 选 FileChannel 比 MemoryChannel 可靠但慢FileChannel 要调 dataDirs 多目录、checkpointDir 独立盘、capacity 和 transactionCapacity 匹配”。追问“HDFS Sink 小文件怎么处理”答“调 batchSize、设 round 滚动按时间或大小、开 roundValue 和 roundUnit配合 Hive 侧合并”。3.3 Hive 优化与数据倾斜四个 By 和动态分区Hive 优化是数仓岗必考。先答四个 By 的区别order by 全局排序一个 reduce、sort by 每个 reduce 内部排序、distribute by 按字段分区到 reduce、cluster by 等于 distribute by 加 sort by。再答优化手段分区裁剪、列裁剪、map join小表广播、控制 map/reduce 个数、用 Tez 引擎、开向量化、合理设并行度。数据倾斜答法现象是某个 reduce 跑得特别慢原因是 join key 或 group by key 分布不均。方案给四个小表 map join、热点 key 加随机前缀、空值 key 单独处理、调大 reduce 内存和并行度。动态分区追问答“底层按分区字段值把数据写到对应 HDFS 目录需要开 hive.exec.dynamic.partition 和 nonstrict 模式分区数太多会压 NameNode”。3.4 真题演练Kafka 幂等性与 Hive 分隔符面试题“Kafka 幂等性怎么实现的”答“给每个生产者分配 PID每条消息带单调递增 sequence numberBroker 按 PID 分区缓存最近序列号重复的丢弃保证单分区单会话不重”。面试题“Hive 字段分隔符为什么用 \t字段里有 \t 怎么办”答“默认分隔符是 \001用 \t 是因为业务数据里少见、可读性好字段里出现 \t 就换分隔符或做转义清洗建表时用 ROW FORMAT DELIMITED FIELDS TERMINATED BY 指定别依赖默认值”。这类题考的是你有没有真建过表。4. 计算引擎与数仓Spark 宽窄依赖、Flink 容错与指标口径4.1 Spark 宽窄依赖与 Stage 划分笔试重点。窄依赖是父 RDD 一个分区只对应子 RDD 一个分区map、filter、union宽依赖是父分区对应多个子分区groupByKey、reduceByKey需要 Shuffle。Stage 划分依据就是宽依赖遇到宽依赖切一个 Stage每个 Stage 的 task 数由该 Stage 最后一个 RDD 的分区数决定。追问“reduceByKey 和 groupByKey 区别”答“reduceByKey 先在 Map 端局部聚合再 Shuffle数据量小groupByKey 直接拉全量容易 OOM优先 reduceByKey”。再追问“cache 和 checkpoint 区别”答“cache 存内存、血统还在、节点挂可能重算checkpoint 落可靠存储、切断血统、更安全但慢”。4.2 Spark 数据倾斜的定位与解决先答表现个别 task 处理数据量远大于其他、GC 时间长、Stage 卡在最后几个 task。定位手段Spark UI 看 task 的 shuffle read size 分布、采样统计 key 分布。解决方案按场景给join 倾斜用广播小表或加随机前缀扩容、聚合倾斜用两阶段聚合先加随机前缀局部聚合再去前缀全局聚合、空值倾斜给空 key 加随机数。答题时补一句“调优前后要有对比比如 map 个数从多少调到多少、耗时从多少降到多少”面试官很吃这套因为说明你真跑过。4.3 Flink 容错与 Exactly-once分布式快照怎么讲Flink 中级必考。容错核心是 CheckpointJobManager 周期性插入 barrierbarrier 随数据流往下游走算子收到 barrier 后把当前状态快照到状态后端内存、文件、RocksDB全部完成后通知 JobManager 记录本次 checkpoint。恢复时从最近一次完成的 checkpoint 重放。Exactly-once 答“source 端可重放Kafka offset 随 checkpoint 存、状态快照一致、sink 端两阶段提交或幂等写”。追问“反压怎么处理”答“Flink 用 credit-based 反压下游消费慢会通过 credit 反馈到上游定位看 UI 里反压指标解决靠加并行度、扩资源、优化算子逻辑”。4.4 数仓分层与指标口径一分钟说 30 个指标数仓岗必问。分层答 ODS 原始层、DWD 明细层、DWS 汇总层、ADS 应用层每层说一句职责。指标要能张口就来日活、月活、新增用户、留存率、沉默用户、回流用户、流失用户、GMV、客单价、转化率、复购率、订单数、退款率、动销率、库存周转、UV、PV、人均时长、跳出率、加购率、支付成功率、连带率、毛利率、获客成本、LTV、ARPU、DAU/MAU 比。追问“连续三天活跃用户怎么算”答“按用户和日期分组用日期减 row_number 得到分组标记同标记计数大于等于 3 即连续”。这类题通常这么答——先给口径定义再给 SQL 思路最后说边界跨天、时区、去重。5. 易错点这五类题丢分最多逐条说怎么答对5.1 错在把“流程”答成“名词解释”错在哪问 HDFS 写流程只答“客户端写、NameNode 管元数据、DataNode 存数据”。为什么错面试官要的是阶段和角色动作名词解释说明你没跟过链路。怎么答对按“请求创建—申请块—建管道—传包 ack—关闭”五步走每步点出谁在做什么。5.2 错在调优只报参数不报依据错在哪问 Spark 调优张口“调大 executor 内存、调并行度”。为什么错没有场景和前后对比像背的。怎么答对先说现象哪个 stage 慢、GC 多少再说改了什么参数、从多少改到多少、效果如何最后说为什么这么改。5.3 错在数据倾斜只给一个方案错在哪只答“加随机前缀”。为什么错不同倾斜场景方案不同join 和聚合不一样。怎么答对先定位UI 看 task 分布、采样看 key再按场景给两到三个方案最后说兜底调资源、拆任务。5.4 错在数仓指标没有口径错在哪问日活直接说“当天登录人数”。为什么错没定义去重维度、时间边界、是否含新老用户。怎么答对先给口径按用户 ID 去重、自然日、含当日新增再给 SQL 思路最后说和业务对齐过。5.5 错在手写 SQL 忽略边界错在哪写连续活跃只写 group by 计数。为什么错没处理跨天断档和重复记录。怎么答对先 distinct 去重再用日期减行号分组最后 having 计数满足条件写完口述一遍边界情况。6. 手写代码与面试表达把题库练成自己的答题节奏手写环节是很多人的翻车点不是不会是现场写不完整。基本算法就四类冒泡、二分、快排、归并加一个二叉树遍历。以快排为例面试官看的是分区逻辑和递归边界不是让你炫技。def quick_sort(arr, left, right): if left right: # 递归出口区间不足两个元素 return pivot arr[left] # 取最左为基准 i, j left, right while i j: while i j and arr[j] pivot: # 右指针找小于基准的 j - 1 while i j and arr[i] pivot: # 左指针找大于基准的 i 1 arr[i], arr[j] arr[j], arr[i] # 交换 arr[left], arr[i] arr[i], arr[left] # 基准归位 quick_sort(arr, left, i - 1) # 递归左半 quick_sort(arr, i 1, right) # 递归右半这段的关键在分区i 和 j 从两端向中间走j 先动找比基准小的i 再动找比基准大的交换后继续最后基准和 i 位置交换。参数 left、right 是闭区间递归时左半是 left 到 i-1、右半是 i1 到 right写错边界就死循环。面试时先口述思路再写写完主动说一句“最坏 O(n²)平均 O(n log n)空间 O(log n)”。Spark WordCount 和 HQL 十题是另一块。WordCount 核心就三步flatMap 切词、map 成 (word,1)、reduceByKey 求和写的时候把 import 和 sc 初始化带上显得完整。HQL 十题覆盖连续活跃、留存、TopN、行转列练的时候别只看答案遮住自己写一遍写完对照边界。最后说面试表达。面试过程最关键的不是答对多少是让面试官相信你干过。每个知识点按“是什么—怎么做—我遇到过什么—怎么解决”四段说项目经验准备三个能展开的一个集群故障、一个数据倾斜、一个指标口径对齐。被问住时别硬编说“这块我接触的是另一个方案我的理解是……”比瞎答强。从那以后我每次进面试间前都强制走一遍“流程题能不能画出来、调优题有没有前后对比、手写题边界有没有口述”这三步希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询