当前位置:首页 > 行业动态 > 正文

hadoop服务器架构图

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,副本分布遵循机架感知策略(避免单点故障)

典型数据流示例

  1. 客户端上传文件时,NameNode返回可用DataNode列表;
  2. 客户端并行将数据块写入多个DataNode;
  3. 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,客户端读写请求会自动路由到可用副本,整个过程对上层

0