
1) 【一句话结论】采用分层架构,以HDFS为底层分布式存储,Hive作为数据仓库层提供SQL查询接口,Spark SQL作为高性能计算引擎,三者协同满足PB级结构化数据的存储、查询与计算需求,通过HDFS副本机制和Spark SQL事务保证数据一致性与查询性能。
2) 【原理/概念讲解】老师讲解核心组件原理:
3) 【对比与适用场景】
| 组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| HDFS | 分布式文件系统 | 高容错、高吞吐、适合大文件 | PB级结构化/非结构化数据存储 | 不适合小文件(小文件会导致元数据过多,影响性能) |
| Hive | 数据仓库 | 类SQL接口、批量分析、基于Hadoop | 政府机构的多维度分析(如人口统计、经济数据) | 事务性弱(默认不支持ACID事务,需扩展) |
| Spark SQL | 内存计算引擎 | 高性能、支持SQL、内存计算 | 交互式查询、迭代计算(如机器学习) | 需要内存资源,适合数据量在内存内的计算 |
4) 【示例】以政府人口普查数据为例,数据导入、查询流程(伪代码):
hadoop fs -put /data/population.csv /user/hive/warehouse/population(将数据上传至HDFS);CREATE EXTERNAL TABLE population (id INT, name STRING, age INT) STORED AS PARQUET LOCATION '/user/hive/warehouse/population';(Parquet格式高效存储);spark.sql("SELECT AVG(age) FROM population WHERE age > 30").show();(获取30岁以上人口的平均年龄)。5) 【面试口播版答案】(自然语言,约90秒)
“面试官您好,针对PB级结构化数据的存储与查询系统,我设计的整体架构是分层架构:底层用HDFS作为分布式存储,中间层用Hive作为数据仓库提供SQL查询,上层用Spark SQL作为高性能计算引擎。选择这个组合的原因是:HDFS能存储PB级数据且通过副本机制保证数据可靠性;Hive提供类SQL接口,方便政府机构使用传统SQL进行多维度分析;Spark SQL利用内存计算加速查询,适合交互式和迭代计算场景。数据一致性方面,HDFS的副本机制保证数据存储一致性,Hive通过分区表和元数据管理保证查询一致性,Spark SQL支持ACID事务保证计算一致性。查询性能上,Spark SQL的内存计算比Hive的MapReduce快,适合高频查询。”
6) 【追问清单】
hadoop fs -append),或使用对象存储(如S3)作为辅助存储。7) 【常见坑/雷区】