大数据相关面试题每日五问(八)

  1. HDFS如何实现数据冗余存储?数据节点宕机时,集群如何恢复数据?
  2. Spark中RDD、DataFrame和Dataset的核心区别是什么?实际处理数据时如何选择?
  3. Hive与MySQL在数据存储、查询执行和应用场景上有哪些关键差异?
  4. 数据仓库维度建模中,事务型事实表和周期快照事实表的设计区别是什么?举例说明。
  5. 使用ClickHouse进行高频查询时,如何通过表引擎选择和分区排序键优化性能?

每日五问总览:传送门

1. HDFS 如何实现数据冗余存储?数据节点宕机时,集群如何恢复数据?

HDFS 通过副本机制实现数据冗余存储,默认将每个文件划分为多个 block,每个 block 会被复制成 3 个副本(可配置),分别存储在不同的 DataNode 上。NameNode 负责记录这些副本的元数据。当某个 DataNode 宕机后,NameNode 会通过心跳机制发现节点失联,并将其标记为不可用,同时指派其他正常的 DataNode 根据现有副本重新复制缺失数据,确保副本数量不低于设定值,从而实现故障自动恢复和数据高可用。这个过程对用户是透明的,集群仍可提供读写服务。

2. Spark 中 RDD、DataFrame 和 Dataset 的核心区别是什么?实际处理数据时如何选择?

RDD 是 Spark 最底层的抽象,提供面向对象的操作方式,具备强类型、惰性计算和容错特性,但开发复杂、性能不高;DataFrame 是以 RDD 为基础的结构化数据集,类比关系型表,支持 SQL 风格的查询和 Catalyst 优化器优化,执行效率更高但类型安全较弱;Dataset 结合了 RDD 的强类型和 DataFrame 的性能优势,支持编译期类型检查及优化执行,但主要在 Scala 和 Java 中使用。在实际应用中,若需高性能查询且不依赖强类型,推荐使用 DataFrame;如需类型安全或复杂逻辑处理,可选择 Dataset;而 RDD 更适合底层控制和非结构化数据处理。

3. Hive 与 MySQL 在数据存储、查询执行和应用场景上有哪些关键差异?

Hive 构建在 Hadoop 上,面向大数据的批处理场景,数据通常存储在 HDFS 上,查询通过转换为 MapReduce、Tez 或 Spark 等分布式计算任务执行,适合海量离线分析,查询延迟较高;MySQL 是传统关系型数据库,数据存储在本地磁盘,查询响应快速,适用于高并发的 OLTP 事务处理场景。Hive 查询支持海量数据和复杂分析,适合数据仓库、报表统计;而 MySQL 更适合业务系统中小规模数据的增删改查。总结来说:Hive 面向分析型(OLAP)场景,MySQL 面向事务型(OLTP)业务。

4. 数据仓库维度建模中,事务型事实表和周期快照事实表的设计区别是什么?举例说明。

事务型事实表记录的是粒度最细的事件数据,如用户每一次下单或点击行为,通常每条记录代表一个事件,适合统计某段时间内的行为总量或趋势;而周期快照事实表则在固定时间点(如每日/每月)汇总一次数据快照,记录某一维度下的累积状态,例如每天的库存快照或每日账户余额。前者设计更细致、数据量更大,适合事件追踪;后者更适合展示变化趋势或对比分析。例如:电商平台的订单表是事务型事实表,而每日商品库存快照表是周期快照事实表。

5. 使用 ClickHouse 进行高频查询时,如何通过表引擎选择和分区排序键优化性能?

在 ClickHouse 中,高频查询性能依赖于合理的表引擎和数据组织方式。常用的 MergeTree 引擎支持分区(partition)和排序键(order by),可以显著提升查询效率。分区键应根据业务维度选择,如按日期或地区分区,便于按需读取数据块,减少 IO;排序键则决定数据的物理存储顺序,应选择常用查询条件字段(如 user_id、event_time),以优化数据扫描和索引利用。对于日志类、用户行为类数据,建议使用 ReplacingMergeTreeSummingMergeTree 做去重或聚合优化。总之,合理设计分区与排序键是 ClickHouse 高性能查询的关键手段。

#牛客AI配图神器#

#数据人的面试交流地#
大数据相关面试题合集 文章被收录于专栏

努力找实习中,整理一些大数据相关面试题和大家分享,共同学习进步,有建议或批评欢迎留言!

全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务