
1) 【一句话结论】采用分层存储架构(热/温/冷数据分离),结合HDFS(块大小256MB、副本数3)、对象存储(Lifecycle规则归档冷数据)、Flink(CheckpointInterval=5s、Exactly-Once)与Kafka,构建支持PB级存储与实时分析的大数据平台,核心是数据分层存储与流式计算结合,兼顾存储效率与实时性。
2) 【原理/概念讲解】老师:咱们先拆解核心组件与设计逻辑,每个部分要明确技术选型与参数。
3) 【对比与适用场景】
存储组件对比:
| 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| HDFS | 分布式文件系统,基于HDFS的块存储 | 高吞吐,数据冗余(3副本),适合批处理 | 批处理任务(如日志分析、数据统计) | 适合热数据,冷数据迁移成本高 |
| 对象存储(如COS) | 云端对象存储,按对象名存储 | 高可扩展性,低延迟访问,适合冷数据 | 冷数据存储、归档、备份 | 适合低频访问,不适合实时查询 |
计算框架对比:
| 框架 | 类型 | 延迟 | 状态管理 | 适用场景 |
|---|---|---|---|---|
| Spark | 批处理 | 秒级 | 离线状态 | 历史数据计算、ETL |
| Flink | 流处理 | 毫秒级 | 状态持久化(Checkpoint) | 实时分析、实时监控 |
4) 【示例】数据流处理流程伪代码:
producer.send("log-topic", key, value); // 将日志数据发送到Kafka主题
// Flink配置状态管理
env.setCheckpointingInterval(5); // CheckpointInterval=5s
env.getCheckpointConfig().setCheckpointStorage("hdfs://namenode:8020/flink/checkpoints"); // CheckpointStorage=HDFS
DataStream<String> stream = env.socketTextStream("localhost", 9999); // 从Kafka消费数据
stream.map(line -> line.split(",")[1]) // 解析数据,提取字段
.filter(value -> value > 100) // 过滤条件
.reduce((a, b) -> a + b) // 求和计算
.print(); // 输出结果
5) 【面试口播版答案】
面试官您好,针对PB级数据存储与实时分析的需求,我设计的架构核心是分层存储与流式计算结合。首先,数据存储分层:热数据用HDFS+HBase(实时查询),温数据用对象存储+Hudi(增量更新),冷数据用对象存储归档(通过Lifecycle规则自动迁移,保留30天后归档至低成本存储)。存储组件选型上,HDFS通过256MB块大小和3副本确保PB级扩展性;对象存储扩展性强,适合冷数据。计算框架选择Flink做流处理(支持毫秒级延迟,CheckpointInterval=5s保证Exactly-Once),Spark做批处理。数据流处理流程:日志数据先通过Kafka采集(解耦生产与消费),Flink消费后实时计算(如实时统计),结果写入HDFS或对象存储。整体架构兼顾存储效率与实时性,支持PB级数据扩展。
6) 【追问清单】
7) 【常见坑/雷区】