
1) 【一句话结论】:采用分层架构,存储层用HDFS(高可用NameNode HA)+ Ceph(多MDS节点),计算层用Flink(实时流,检查点保证exactly-once)+ Spark(批处理,资源隔离),服务层用Kafka(数据管道)+ ZooKeeper(协调)+ Nginx(API负载均衡),确保PB级存储、实时分析和高可扩展性。
2) 【原理/概念讲解】:存储层:HDFS是分布式文件系统,通过数据分片实现高容错,NameNode HA(双NameNode+ZooKeeper) 确保高可用,避免单点故障;Ceph是对象存储,元数据与数据分离,多MDS节点实现元数据高可用,适合冷数据归档。计算层:Flink是流处理框架,支持低延迟(亚秒级)、exactly-once语义,通过快照检查点保证状态一致性;Spark是通用计算框架,支持批处理、交互式分析,通过资源隔离(优先级队列) 确保实时任务优先。服务层:Kafka作为消息队列,解耦数据源和消费端,ZooKeeper管理集群状态,Nginx做负载均衡和健康检查,确保API高可用。
3) 【对比与适用场景】:
存储层对比:
| 技术选型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| HDFS | Hadoop分布式文件系统 | 高容错、高吞吐,顺序读写优化 | 热数据存储(实时处理数据、备份) | 随机读取延迟较高,不适合实时查询 |
| Ceph | 分布式对象存储 | 自治、可扩展,元数据与数据分离 | 冷数据归档(历史数据、归档日志) | 初始配置复杂,元数据服务器压力 |
计算层对比:
| 技术选型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Flink | 流处理框架 | 低延迟(亚秒级)、exactly-once、状态管理 | 实时流处理(实时监控、风控) | 部署复杂,需要资源管理器 |
| Spark | 通用计算框架 | 交互式、批处理、机器学习 | 批处理、交互式分析、机器学习 | 适用于有状态计算,延迟比Flink高 |
4) 【示例】:数据流示例:
5) 【面试口播版答案】:面试官您好,针对PB级存储和实时分析需求,我设计的架构分为存储、计算、服务三层。存储层采用HDFS(高可用NameNode HA)+ Ceph(多MDS节点),HDFS存储热数据(如实时处理的数据),Ceph归档冷数据(如30天以上的日志),通过冷热分离降低存储成本。计算层用Flink处理实时流(如实时监控),Spark处理批处理(如报表生成),两者通过YARN/K8s统一调度,Flink任务优先级高。服务层以Kafka做数据管道,ZooKeeper做协调,API服务部署多实例,通过Nginx负载均衡,确保高可用。数据流程是:数据源写入Kafka,HDFS消费写入HDFS,Flink实时计算写入HBase(读写分离,分片),Spark离线分析写入ClickHouse,最终通过API对外提供实时查询。
6) 【追问清单】:
7) 【常见坑/雷区】: