中邮消费金融数据开发一面:HDFS、数据湖与 Spark 慢任务
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- 自我介绍。
- HDFS 常用的数据格式有哪些?
- HDFS 容量快满了,该怎么办?有了解过快照吗?
- 哪些数据需要用得上流式计算?
- 数据如何从 MySQL 写到 Flink 进行计算?
- Spark 慢任务怎么排查?
- 数据湖、对象存储与 HDFS 有什么区别?对象存储是如何存储数据的?
- HDFS 如何迁移文件到对象存储?
- 如何优化 HiveSQL?
- 未来三年的职业规划是什么?
- 反问:数据平台组件是否上 K8s、是否高度容器化?
- 反问:ETL 任务与 AI 结合的情况?
《参考解析》
HDFS 容量快满,先分清是「总量不够」还是「小文件太多」。总量不够就扩容 DataNode 或加磁盘;小文件多则是 NameNode 元数据压力大,要靠合并(HAR、合并写入)、压缩、清理历史分区解决。HDFS 支持快照(snapshot),可以在目录级保留某个时间点的只读副本,用于误删恢复和备份,但它不减少存储占用太多,别当成扩容手段。
流式计算适合「时效性要求高、持续到达」的数据:用户行为埋点、风控交易流水、实时监控告警、实时大屏。离线批处理适合 T+1 报表和全量重算,两者按新鲜度要求分,不是越实时越好。
MySQL 到 Flink 的典型链路是 CDC:Debezium/Canal 读 binlog → Kafka → Flink 消费做清洗、聚合、维表关联 → 写入目标存储。这样不侵入业务库,也能保证顺序和断点续传。
Spark 慢任务排查看数据倾斜、shuffle 量、GC、磁盘 spill 和资源竞争。先看 stage 里哪个 task 明显慢于其他(倾斜),再看 shuffle read/write 大小,必要时加盐打散、调整分区数、提高并行度或换 join 策略。
数据湖和 HDFS 的区别在「表格式与事务」:HDFS 只是分布式文件系统;数据湖(Iceberg/Hudi/Delta)在文件之上加了 schema、分区演进、ACID 和快照,支持增量读和时间旅行。对象存储是扁平 key-value,按对象存、适合海量非结构化数据,但 rename 和元数据操作比 HDFS 贵。
HiveSQL 优化:分区裁剪、列裁剪、避免笛卡尔积、小表广播、控制 reduce 数量、处理数据倾斜、用 ORC/Parquet 列存加压缩、避免在 where 里对分区字段做函数运算。