大数据学习(137)-大数据组件运行时角色
🍋🍋大数据学习🍋🍋
🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞
1. HDFS 运行时角色
HDFS 是分布式存储系统,其运行时角色主要围绕数据存储和管理展开:
角色 | 功能描述 |
---|---|
NameNode | - 管理文件系统的命名空间(元数据,如目录结构、文件权限等)。 - 协调客户端对文件的访问。 - 监控 DataNode 的健康状态。 |
DataNode | - 存储实际的数据块(Block)。 - 执行数据块的读写操作。 - 定期向 NameNode 汇报心跳和块状态。 |
Secondary NameNode | - 辅助 NameNode,定期合并 NameNode 的编辑日志(EditLog)和镜像文件(FsImage),防止日志过大。 |
类比:NameNode 类似于图书馆的目录系统,记录所有书籍的位置;DataNode 类似于书架,存放实际的书籍。
2. Hive 运行时角色
Hive 是数据仓库工具,其运行时角色主要围绕 SQL 查询的执行展开:
角色 | 功能描述 |
---|---|
HiveServer2 | - 提供 JDBC/ODBC 接口,允许客户端(如 Beeline、JDBC 程序)提交 SQL 查询。 |
Driver | - 解析 SQL 查询,生成执行计划(如 MapReduce、Spark 或 Tez 任务)。 |
Compiler | - 将 SQL 查询转换为逻辑执行计划,再优化为物理执行计划。 |
Metastore | - 存储元数据(如表结构、分区信息、列信息等),通常使用关系型数据库(如 MySQL)存储。 |
Executor | - 执行编译后的物理计划,调用底层计算引擎(如 MapReduce、Spark)处理数据。 |
类比:Hive 类似于一个翻译官,将 SQL 查询翻译为底层计算引擎能理解的任务。
3. Spark 运行时角色
Spark 是通用分布式计算引擎,其运行时角色主要围绕分布式计算展开:
角色 | 功能描述 |
---|---|
Driver Program | - 用户编写的 Spark 应用程序的主程序,负责提交任务和协调执行。 |
Cluster Manager | - 管理集群资源(如 YARN、Mesos、Kubernetes 或 Spark 自带的 Standalone 模式)。 |
Executor | - 在 Worker 节点上运行,执行具体的任务(Task),并缓存数据到内存或磁盘。 |
Worker Node | - 运行 Executor 的节点,负责实际的数据处理。 |
Task | - Executor 中执行的最小单元,处理一个数据分区。 |
类比:Driver Program 类似于项目经理,分配任务;Executor 类似于工人,执行具体的任务。
4. MapReduce 运行时角色
MapReduce 是分布式计算框架,其运行时角色主要围绕 Map 和 Reduce 阶段展开:
角色 | 功能描述 |
---|---|
JobTracker | - 管理 MapReduce 作业的生命周期,分配任务给 TaskTracker。 |
TaskTracker | - 运行在节点上,执行具体的 Map 或 Reduce 任务,并向 JobTracker 汇报状态。 |
Map Task | - 处理输入数据的分片,生成键值对(Key-Value Pairs)。 |
Reduce Task | - 对 Map Task 的输出进行聚合,生成最终结果。 |
Shuffle/Sort Phase | - 在 Map 和 Reduce 之间进行数据传输和排序。 |
类比:JobTracker 类似于工厂经理,分配任务;TaskTracker 类似于工人,执行具体的任务。
5. Flink 运行时角色
Flink 是流处理和批处理统一框架,其运行时角色主要围绕实时数据处理展开:
角色 | 功能描述 |
---|---|
JobManager | - 管理作业的生命周期,协调 TaskManager 的资源分配和任务调度。 |
TaskManager | - 运行具体的任务(Task),处理数据流。 |
Task | - 执行用户定义的操作(如 Map、Filter、Aggregate 等)。 |
Source | - 从外部数据源(如 Kafka、文件系统)读取数据流。 |
Sink | - 将处理结果写入外部存储系统(如 HDFS、数据库)。 |
Checkpoint Coordinator | - 管理检查点(Checkpoint),确保流处理的容错性。 |
类比:JobManager 类似于交通指挥中心,协调任务;TaskManager 类似于车辆,执行具体的运输任务。
总结对比
组件 | 核心运行时角色 |
---|---|
HDFS | NameNode(元数据管理)、DataNode(数据存储) |
Hive | HiveServer2(接口)、Driver(查询解析)、Executor(任务执行) |
Spark | Driver Program(任务提交)、Executor(任务执行)、Cluster Manager(资源管理) |
MapReduce | JobTracker(作业管理)、TaskTracker(任务执行)、Map/Reduce Task(数据处理) |
Flink | JobManager(作业管理)、TaskManager(任务执行)、Source/Sink(数据流处理) |
注意:
HDFS 中的 NameNode 元数据管理和 Hive 中的 Metastore 元数据在功能上虽然都涉及“元数据”,但两者的管理对象、作用范围、存储内容和使用场景存在显著差异。以下是两者的详细对比:
1. 元数据内容对比
特性 | HDFS NameNode 元数据 | Hive Metastore 元数据 |
---|---|---|
管理对象 | 文件系统的元数据(如文件路径、权限、块信息等)。 | 数据库表的元数据(如表结构、分区信息、列信息、存储格式等)。 |
存储内容 | 文件名、目录结构、文件权限、副本数、数据块位置等。 | 表名、列名、数据类型、分区键、存储格式(如 ORC、Parquet)、表注释等。 |
作用范围 | 仅管理 HDFS 上的文件和目录。 | 管理 Hive 表与底层存储(如 HDFS)之间的映射关系。 |
依赖关系 | NameNode 是 HDFS 的核心组件,没有它 HDFS 无法工作。 | Metastore 是 Hive 的组件,Hive 可以独立运行(如使用本地模式),但通常依赖 Metastore。 |
类比:
- NameNode 的元数据类似于图书馆的目录系统,记录书籍的位置和分类。
- Hive Metastore 的元数据类似于书籍的详细描述(如作者、出版社、ISBN 等),帮助用户理解数据内容。
2. 存储实现对比
特性 | HDFS NameNode 元数据 | Hive Metastore 元数据 |
---|---|---|
存储方式 | 内存中维护,定期持久化到磁盘(FsImage 和 EditLog)。 | 通常存储在关系型数据库中(如 MySQL、PostgreSQL),Hive 本身不直接存储元数据。 |
高可用性 | NameNode 支持高可用(HA)配置,通过 Active/Standby NameNode 实现。 | Metastore 可以通过数据库的高可用机制(如主从复制)实现高可用。 |
扩展性 | NameNode 的元数据存储在内存中,受限于单节点内存大小(可通过 Federation 扩展)。 | Metastore 的元数据存储在外部数据库中,扩展性取决于数据库的能力。 |
类比:
- NameNode 的元数据存储类似于图书馆的中央目录系统,需要快速访问。
- Hive Metastore 的元数据存储类似于图书馆的在线数据库,可以支持复杂的查询和管理。
3. 使用场景对比
场景 | HDFS NameNode 元数据 | Hive Metastore 元数据 |
---|---|---|
文件操作 | 创建、删除、重命名文件或目录,设置权限等。 | 创建、删除、修改 Hive 表,查询表结构等。 |
数据查询 | 通过 HDFS API 访问文件内容,但无法直接通过元数据查询文件内容。 | 通过 HiveQL 查询表数据,Hive 会根据 Metastore 的元数据定位底层存储并执行查询。 |
数据治理 | 提供文件级别的元数据,适合文件管理。 | 提供表级别的元数据,适合数据仓库管理和数据分析。 |