2022大数据面试深度解析:Hadoop、Hive、Spark关键点

版权申诉
5星 · 超过95%的资源 2 下载量 47 浏览量 更新于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的特性和优化策略,是大数据面试者的重要参考资料。