大数据技术面试宝典2024
Hadoop Hive Spark Kafka Hbase Flink ClickHouse Doris 数据仓库 数据湖 必备SQL题 大厂面试中出现频率最高的SQL面试题 Linux Java 数据治理 必备算法 大数据算法设计题 ### 大数据技术面试宝典2024 #### Hadoop: 分布式存储与计算框架 **Hadoop** 是一种分布式系统基础架构,能够处理非常庞大的数据集。Hadoop 主要包括三个核心组件:**分布式文件系统 (HDFS)**、**分布式计算框架 (MapReduce)** 和 **资源管理器 (YARN)**。 ### HDFS 读写流程详解 **HDFS** (Hadoop Distributed File System) 是 Hadoop 的核心组件之一,用于存储大量数据。HDFS 设计时充分考虑了数据的安全性和高效性,因此数据文件默认在 HDFS 上存放三份,分别位于本地、同机架内的其他节点和不同机架的节点上。以下是 HDFS 的读写流程: #### HDFS 写流程 1. **客户端发送上传请求**: 客户端首先通过 RPC (Remote Procedure Call) 与 NameNode 建立通信。NameNode 会检查用户的上传权限以及上传的文件是否在 HDFS 目录下重名。如果不符合条件则返回错误,否则返回可以上传的信息。 2. **文件切分**: 客户端根据文件的大小进行切分,默认每块大小为 128MB。切分完成后,客户端向 NameNode 发送请求,询问第一个 block 块应上传到哪些服务器。 3. **文件分配**: NameNode 根据网络拓扑结构、机架感知以及副本机制进行文件分配,并返回可用的 DataNode 地址。 4. **建立 Pipeline**: 客户端与指定的一个 DataNode (例如 A) 进行通信,建立 pipeline。A 会继续调用 B,B 再调用 C,以此类推建立整个 pipeline。完成后逐级返回给客户端。 5. **数据传输**: 客户端开始向 A 上传第一个 block,以 packet (数据包,通常为 64KB) 为单位。A 收到一个 packet 后将其发送给 B,B 再发送给 C。A 会放入一个应答队列等待应答。 6. **应答确认**: 数据包在 pipeline 上依次传输,并在反向传输中逐个发送 ack (确认消息),最终由 pipeline 中的第一个 DataNode 将 ack 发送给客户端。 7. **后续 block 的上传**: 当一个 block 传输完成后,客户端再次请求 NameNode 上传第二个 block。NameNode 会重新选择三台 DataNode 给客户端。 #### HDFS 读流程 1. **客户端发送请求**: 客户端向 NameNode 发送 RPC 请求,请求文件 block 的位置。 2. **NameNode 返回 block 位置**: NameNode 收到请求后检查用户权限及文件是否存在,然后返回部分或全部 block 列表。每个 block 名单中包含对应的 DataNode 地址。 3. **选择 DataNode**: 客户端选择排序靠前的 DataNode 来读取 block。如果客户端本身就是 DataNode,则可以直接从本地获取数据。 4. **建立 Socket 连接**: 客户端与 DataNode 建立 Socket 连接,并调用 DataInputStream 的 read 方法读取数据,直至读完当前 block。 5. **读取后续 block**: 完成当前 block 的读取后,如果文件尚未读取完毕,客户端将继续向 NameNode 请求下一批 block。 6. **数据完整性验证**: 每次读取完一个 block 后都会进行 checksum 验证。如果读取过程中出现错误,客户端会通知 NameNode,并从其他副本 DataNode 继续读取。 7. **并行读取**: 读方法支持并行读取 block 信息,而不是顺序读取每个 block。NameNode 只负责返回 DataNode 地址,并不返回数据本身。 ### 异常处理 #### 文件损坏或 DataNode 故障 1. **客户端检测**: 客户端读取完 DataNode 上的块后会进行 checksum 验证。如果发现校验结果不一致,表明文件损坏。 2. **通知 NameNode**: 客户端会通知 NameNode 文件损坏的情况。 3. **从其他副本读取**: 客户端会从其他拥有该 block 副本的 DataNode 继续读取。 4. **DataNode 故障**: 如果在上传过程中某个 DataNode 突然挂掉,客户端与 DataNode 之间的 pipeline 通信会被中断。此时客户端会检测到这一情况,并尝试从其他 DataNode 或者重新建立 pipeline 来继续上传。 ### 其他关键技术 除了 Hadoop 外,大数据领域还有许多重要的技术值得了解,比如: - **Hive**: 一种数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供 SQL 查询功能。 - **Spark**: 一种快速通用的大规模数据处理引擎,支持多种数据处理模式。 - **Kafka**: 一种分布式的流处理平台,用于构建实时数据管道和流应用程序。 - **HBase**: 提供高可靠性、高性能、面向列、可伸缩的分布式存储系统。 - **Flink**: 一个流处理框架,能够实现低延迟的数据流处理任务。 - **ClickHouse**: 一款用于在线分析处理查询的语言和原生数据库管理系统。 - **Doris**: 一款高性能 MPP 架构的实时 OLAP 引擎。 - **数据仓库与数据湖**: 数据仓库是一种集中存储企业所有部门数据的地方;而数据湖则是用于存储海量的、原始的、结构化和非结构化数据的存储库。 - **SQL 面试题**: 包括 SQL 基础语法、复杂查询、性能优化等。 - **Linux**: 大多数大数据技术栈都是基于 Linux 系统运行的,因此对 Linux 操作系统的理解也非常重要。 - **Java**: Java 是编写大多数大数据应用的主要编程语言。 - **数据治理**: 包括数据质量、数据安全、数据生命周期管理等方面的内容。 以上内容不仅涵盖了 Hadoop 的关键知识点,还涉及了大数据领域的其他重要技术。掌握这些知识对于准备大数据技术面试至关重要。
剩余40页未读,继续阅读
- 2401_862312902024-07-08正需要用,感谢分享。 #内容详尽
- 粉丝: 170
- 资源: 146
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助