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

  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. timeline:5月中旬投递5.27 电话约一面6.6 一面(40分钟后过)6.11 二面 (三个小时后过)6.17 三面 (口头offer,10分钟后过并加了HR微信)预计6.25入职2. 学习过程:背景: 两段实习,一段小厂算法,一段java后端跟着导师的实习4月份正式开始做简历学八股leetcode:  125道(2月到6月),热题100+经典面试150道,均没刷完八股: 黑马的新版JAVA面试专题视频教程,除了企业场景和消息中间件,其他都听了。项目: 之前的实习有一个微服务项目(纯微服务,没有redis或中间件),把黑马点评听了但是没完全手敲,只写了几个demo接口,然后把实习的微服务项目包装了一下面经: 八股听完后每天算法1-2题,偶尔鸽,然后天天上牛客看面经,通过面经复习总结一下,本人项目经历比较扎实。但是八股零基础,算法题之前零零散散刷过40多道,因此花了两个月的时间,主要是狂背八股和狂刷算法。本来想把中间件也学会的,但是还没开学已经上岸了3. 找实习整体经历:美团: 投了无回音百度: 无回音快手: 简历挂腾讯: 一面挂华为暑期: 笔试过,后续没声了(华子到我们学校开讲座,直接当场投了,当时不知道暑期不要27届)荣耀: 笔试过,一面过字节: HR小姐姐真的超级好,之前投的是另外一个部门,但是北京地区没hc了,小姐姐说可以帮我留意北京其他部门的信息,大概一周之后来的一面电话。总而言之,加油开冲
明天会有好天气:太强了,举办了
点赞 评论 收藏
分享
评论
3
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务