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

  1. 数据仓库的基本概念是什么?它与传统的数据库系统有何不同?
  2. 说一下ES中的核心组件以及各自关系作用。
  3. MySQL中如何使用子查询?子查询和连接查询(JOIN)有什么区别?
  4. 谈谈MapReduce中的Task。
  5. 若MR中某个Task失败了,Hadoop会如何处理?

每日五问总览

数据仓库的基本概念是什么?它与传统的数据库系统有何不同?

数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,主要用于支持企业管理决策。它与传统数据库系统最大的不同在于:传统数据库(OLTP) 主要用于处理日常业务操作,如插入、修改、删除,关注的是单点数据的事务一致性与实时性;而 数据仓库(OLAP) 更关注对大规模历史数据的整合分析,支持多维度的查询、聚合、趋势分析等。数据仓库一般会经过 ETL 过程将来自多个系统的原始数据清洗、转换并统一存储,具有更强的数据集成性和可分析性;同时,它更注重查询性能优化,常用星型、雪花模型建模,牺牲部分写入效率以换取更高的读性能。简而言之,数据仓库是企业“做分析”的大脑,传统数据库则是“做业务”的心脏。

说一下ES中的核心组件以及各自关系作用。

Elasticsearch(ES)由多个核心组件构成,包括 索引(Index)文档(Document)分片(Shard)节点(Node)集群(Cluster)。索引是逻辑上的数据集合,相当于数据库;文档是索引中的最小数据单元,相当于数据库中的一行;每个索引会被划分成多个主分片和副本分片,分片是实际存储和查询的基本单位;节点是 ES 的运行实例,负责管理分片和执行请求;多个节点组成一个集群,共同管理和协调数据存储与查询任务。在整个架构中,文档被存入索引,索引被切分为分片,分片分布在节点上,节点组成集群提供服务。这些组件协同工作,支持 ES 的高可用性、分布式存储与实时搜索能力,使其在海量数据处理和全文检索场景中表现出色。

MySQL中如何使用子查询?子查询和连接查询(JOIN)有什么区别?

在 MySQL 中,子查询是嵌套在另一个查询语句中的 SELECT 语句,通常用于 where、from 或 select 子句中,实现按条件筛选、计算或动态生成临时表的功能,比如 SELECT * FROM orders WHERE user_id IN (SELECT id FROM users WHERE age > 30)。子查询有标量子查询、行子查询、列子查询和表子查询几种形式。而 连接查询(JOIN) 是通过共享字段将多张表横向拼接,形成一张大的结果集,常用于跨表数据整合,如 INNER JOINLEFT JOIN 等。两者的主要区别在于:子查询是“先算后用”,适合层次关系和逻辑嵌套,代码结构清晰但可能效率较低JOIN 是“边算边用”,更适合大数据量下的高效关联,执行性能通常优于子查询。实际使用中需根据业务场景和性能需求选择合适方式。

谈谈MapReduce中的Task。

在 MapReduce 中,Task 是作业执行的最小计算单元,分为 Map TaskReduce Task 两类。Map Task 负责对输入数据进行切片(Split)后并行处理,将原始数据映射成键值对(key-value);Reduce Task 则在 Map 输出的 key 经过 Shuffle 和 Sort 过程后,对相同 key 的 value 进行归约操作,生成最终输出结果。每个 Task 都在集群中的某个节点上运行,Map Task 和 Reduce Task 是相互独立的,数量可根据数据量与集群规模动态配置。Map 任务完成后,Reduce 才开始,任务调度由 YARN 或 JobTracker 统一管理。合理设置 Task 数量、优化数据分区策略,有助于提升 MapReduce 的并行效率与容错能力,是大数据处理框架高性能的基础。

若MR中某个Task失败了,Hadoop会如何处理?

在 MapReduce 中,如果某个 Task(无论是 Map 还是 Reduce)失败了,Hadoop 会通过 任务重试机制 来自动处理。具体来说,任务失败后,JobTracker(或 YARN 的 ApplicationMaster)会在其他可用节点上重新调度该 Task 的副本重跑,默认最多重试 4 次(可通过参数 mapreduce.map.maxattemptsmapreduce.reduce.maxattempts 配置)。如果在限定次数内任务成功,则整个作业继续执行;若多次重试仍失败,整个 Job 会被标记为失败。此外,为了提高稳定性,Hadoop 会记录失败节点,并在短时间内避免再次调度任务到这些节点上。通过这种机制,MapReduce 保证了在节点宕机、数据异常等场景下的 容错性与任务的最终可完成性,体现了其在大数据处理中的鲁棒性设计。

#牛客AI配图神器#

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

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

全部评论
Task重试机制很实用
点赞 回复 分享
发布于 04-11 16:03 湖北
子查询性能有待提升
点赞 回复 分享
发布于 04-11 16:03 湖北
数据仓库和OLAP很关键
点赞 回复 分享
发布于 04-11 16:03 湖北

相关推荐

评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务