2022大数据面试深度解析:Hadoop、Hive、Spark关键点
版权申诉
5星 · 超过95%的资源 154 浏览量
更新于2024-07-06
1
收藏 1.24MB PDF 举报
"这份文档是2022年的大数据面试宝典,涵盖了Hadoop、MapReduce、YARN、Hive和Spark等关键技术的面试重点。它深入探讨了这些技术的关键概念、工作流程以及可能遇到的问题及其解决方案。"
**Hadoop**
Hadoop是大数据处理的核心框架,主要包括分布式文件系统HDFS和MapReduce计算模型。在HDFS中:
1. **HDFS读写流程**:读取文件时,客户端首先与NameNode通信获取文件块位置,然后直接与DataNode交互读取数据;写入文件时,客户端将数据分割成块并分别写入不同的DataNode,最后更新NameNode的元数据。
2. **HDFS容错机制**:如果在读取时发现某个块损坏,HDFS会尝试从其他副本中恢复数据。
3. **上传文件时的故障处理**:在上传过程中DataNode挂掉,HDFS会尝试将数据写入其他可用的DataNode。
4. **NameNode启动**:NameNode启动时会加载元数据,并进行检查点操作。
5. **SecondaryNameNode**:辅助NameNode定期合并fsimage和editlog,减少NameNode启动时的元数据加载时间,但无法替代NameNode存储的所有数据。
6. **NameNode数据安全**:通过多份副本和NameNode HA(高可用)来保证数据安全。
7. **NameNode HA中的脑裂问题**:当网络分区导致两个NameNode都认为自己是主节点时,会出现脑裂,解决办法包括Zookeeper仲裁和Heartbeat检测。
8. **小文件过多的危害**:增加NameNode的负担,降低系统效率,解决方案包括归档小文件或使用Hadoop Archive(HAR)。
9. **HDFS组织架构**:由NameNode(元数据管理)、DataNode(数据存储)和客户端组成。
**MapReduce**
10. **MapTask**:负责数据的分片、映射和排序。
11. **ReduceTask**:接收MapTask的结果,进行聚合和输出。
12. **Shuffle阶段**:MapTask的输出经过分区和排序后,被传递给ReduceTask。
13. **Shuffle阶段数据压缩**:可以提高数据传输效率,减少网络负载。
14. **使用规约**:在Map阶段就进行部分聚合,减少数据传输量。
15. **YARN架构与工作原理**:作为资源管理系统,YARN将资源分配和作业调度分离,由ResourceManager、ApplicationMaster和NodeManager协同工作。
16. **YARN任务提交流程**:应用程序提交到ResourceManager,后者分配ApplicationMaster,ApplicationMaster负责任务的调度和监控。
17. **YARN资源调度模型**:包括Capacity Scheduler、FIFO Scheduler和Fair Scheduler。
**Hive**
18. **Hive内部表和外部表**:内部表由Hive管理生命周期,外部表只管理元数据,数据删除时不会影响源数据。
19. **Hive索引**:Hive不支持传统数据库的索引,但可以通过分区、桶等优化查询。
20. **Hive调度**:可以通过Hive的SQL语句控制执行计划,或者使用Tez或Spark作为执行引擎。
21. **列式存储**:ORC和Parquet等列式格式能大幅提高查询效率。
22. **数据仓库分层**:通过ODS、DW、DM等层次进行数据清洗和抽象,优化分析效率。
23. **JSON解析**:Hive支持JSON串解析,但效率相对较低。
24. **sortby与orderby**:sortby仅保证分区内的排序,orderby保证全局排序。
25. **数据倾斜**:通过负载均衡、分区优化和自定义分区策略解决。
26. **Hive优化**:包括分区、 bucketing、压缩、Join优化等方法。
**Spark**
27. **Spark运行流程**:基于DAG的计算模型,数据以弹性分布式数据集(RDD)形式存储。
28. **Spark组件**:包括Spark Core、Spark SQL、Spark Streaming、MLlib和GraphX。
29. **RDD机制**:RDD是不可变的、分区的记录集合,支持转换和行动操作。
30. **reduceByKey与groupByKey**:reduceByKey在shuffle前聚合,性能通常优于groupByKey。
31. **cogroup操作**:用于两个或多个RDD的键值对聚合,适用于数据联合分析。
32. **宽窄依赖**:宽依赖会导致全shuffle,而窄依赖可以在同一stage内完成。
33. **设计宽窄依赖**:为了优化任务调度,减少不必要的数据交换。
34. **DAG**:表示任务间的依赖关系。
35. **Stage划分**:基于宽窄依赖,一个stage内的任务可以在同一个Executor上并行执行。
36. **Stage划分算法**:根据RDD的宽窄依赖关系和数据本地性原则进行划分。
以上内容详细解释了Hadoop生态中的重要组件及其工作原理,以及Spark的特性和优化策略,是大数据面试者的重要参考资料。
2020-04-06 上传
2022-11-18 上传
2021-11-26 上传
2021-03-01 上传
2021-04-21 上传
安全方案
- 粉丝: 2489
- 资源: 3956
最新资源
- AMD-1.1-py3-none-any.whl.zip
- Business::Associates-开源
- 自己编的进度条VC代码IProgDlg
- jjk-mvvm-demo
- vue.js_dynamic_table:用Vue.js编写的单页应用程序,用于演示如何使用动态表(添加,编辑和删除元素)
- BlocksGame
- AMQPStorm-2.7.1-py2.py3-none-any.whl.zip
- boat-java:一个简单的 Java 程序,使用 Boats 说明类继承
- screenshot upload tool-开源
- gotta-go-fast-vim:适用于vim的语言不可知入门套件
- flutter_intro:Flutter专案的新功能介绍和逐步使用者指南的更好方法
- YFreeSoftware:一个 Android 应用程序,让人们知道专有应用程序可以在未经用户许可的情况下获取哪些信息
- AMQPEz-1.0.0-py3-none-any.whl.zip
- RDF Editor in Java-开源
- 51系列密码锁:Proteus仿真+Keil程序
- tallermecanico.github.io