hadoop服务器架构图
- 行业动态
- 2025-05-16
- 4
Hadoop架构含HDFS(NameNode/DataNodes)和YARN(ResourceManager/NodeManagers
Hadoop服务器架构详解
Hadoop作为分布式计算领域的代表性框架,其服务器架构设计以高扩展性、高容错性和低成本为核心目标,以下从核心组件、数据存储、计算框架、通信机制及高可用方案五个维度展开分析,并通过表格形式对比关键模块功能。
核心组件与角色分工
Hadoop集群采用主从(Master-Slave)架构,主要包含两大核心子系统:HDFS(分布式文件系统)和YARN(资源调度系统),辅以MapReduce计算框架,以下是关键组件的功能矩阵:
组件名称 | 所属子系统 | 核心职责 | 部署数量 |
---|---|---|---|
NameNode | HDFS | 管理文件元数据(路径、权限、块位置)、协调客户端读写请求 | 1(HA模式下2) |
DataNode | HDFS | 存储实际数据块、响应读写请求、定期向NameNode发送心跳和块报告 | ≥1 |
ResourceManager | YARN | 全局资源调度(CPU、内存)、应用生命周期管理 | 1(HA模式) |
NodeManager | YARN | 管理单节点资源(容器分配)、监控容器运行状态、上报资源使用情况 | ≥1 |
JournalNode | HDFS/YARN | 存储NameNode/ResourceManager元数据日志(实现高可用) | 3(HA标配) |
数据存储架构(HDFS)
HDFS采用块存储(Block Storage)模式,默认将数据拆分为128MB块,通过多副本策略(默认3份)保证容错,其架构分层如下:
层级 | 功能描述 |
---|---|
客户端(Client) | 发起文件读写请求,与NameNode协商元数据,直接与DataNode交互传输数据块 |
NameNode | 维护文件系统树(FSImage)和块位置映射(EditLog),处理元数据操作(开销低) |
DataNode | 存储物理数据块,执行NameNode指令(如块复制、删除),定期上报心跳和块状态 |
块复制机制 | 新写入数据块自动复制到多个DataNode,副本分布遵循机架感知策略(避免单点故障) |
典型数据流示例:
- 客户端上传文件时,NameNode返回可用DataNode列表;
- 客户端并行将数据块写入多个DataNode;
- DataNode间相互复制块数据以完成副本数要求。
计算框架(YARN与MapReduce)
YARN将资源管理与任务调度分离,相比早期MapReduce的JobTracker+TaskTracker模式更具灵活性,其工作流程如下:
阶段 | YARN流程 |
---|---|
作业提交 | 客户端向ResourceManager申请应用ID,提交作业资源需求(内存、CPU) |
资源分配 | ResourceManager根据节点资源(由NodeManager上报)分配容器(Container) |
任务执行 | NodeManager在容器中启动任务(如Map/Reduce进程),监控资源使用并上报状态 |
结果回收 | 任务完成后,输出数据落回HDFS,容器释放资源供后续任务复用 |
MapReduce优化:
- 数据本地性:优先将计算任务分配到存储数据的DataNode上,减少网络传输;
- 推测执行:对慢任务启动冗余副本,以最快完成时间为准。
通信机制与协议
Hadoop组件间通过RPC(远程过程调用)和HTTP协议交互,关键通信场景包括:
通信场景 | 协议类型 | 数据格式 | 作用 |
---|---|---|---|
NameNode与DataNode | RPC | PB(Protocol Buffer) | 心跳、块报告、指令下发 |
ResourceManager与NodeManager | HTTP/REST | JSON | 资源状态上报、容器分配 |
客户端与NameNode | RPC | FsImage/EditLog | 元数据操作(如创建文件) |
组件间元数据同步 | Quorum-based | JournalLog | 高可用模式下日志同步(多数决原则) |
高可用与容错设计
Hadoop通过以下机制实现服务高可用:
故障类型 | 解决方案 |
---|---|
NameNode单点故障 | 启用HA模式(Active/Standby双节点),通过JournalNode共享日志实现状态同步 |
DataNode故障 | 块副本自动补全(其他副本提升为主块),客户端重试机制 |
ResourceManager故障 | 启用HA模式,NodeManager临时保留资源状态,新RM启动后恢复调度 |
网络分区 | 基于ZooKeepr的Leader选举(如HA模式),超时阈值动态调整 |
FAQs
Q1:Hadoop与传统分布式文件系统(如Ceph)的核心区别是什么?
A1:Hadoop的设计目标是支撑大数据批处理,其HDFS采用“一次写入、多次读取”模式,适合静态数据存储;而Ceph等系统更注重通用性,支持对象/块/文件统一存储,且具备更细粒度的并发控制,Hadoop通过YARN实现计算与存储分离,更适合数据密集型计算任务。
Q2:如果某个DataNode突然离线,Hadoop如何保证数据不丢失?
A2:HDFS的块副本机制(默认3份)是核心保障,当检测到DataNode失效时,NameNode会触发副本复制流程,从其他正常节点的副本中生成新的块副本,并重新分配到其他DataNode,客户端读写请求会自动路由到可用副本,整个过程对上层