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

hadoop服务器架构

Hadoop架构含HDFS分布式存储、YARN资源调度及MapReduce计算框架,主从节点协同工作,具备高容错与

Hadoop服务器架构详解

Hadoop核心架构

Hadoop是一个开源的分布式计算框架,其核心设计目标是通过水平扩展(Scale-Out)实现海量数据的存储与计算,其架构由HDFS(分布式文件系统)YARN(资源调度框架)MapReduce(计算模型)三大核心组件构成,配合其他辅助模块形成完整的大数据处理生态。

组件 功能定位 核心作用
HDFS 分布式存储系统 将数据分块存储,提供高容错、高吞吐量的数据读写能力
YARN 资源管理与任务调度 统一管理集群资源(CPU、内存),为各类计算任务(MapReduce、Spark等)分配资源
MapReduce 分布式计算模型 基于“分而治之”思想,将任务拆分为Map和Reduce阶段并行执行

HDFS架构解析

HDFS是Hadoop的底层存储系统,采用主从架构,分为以下角色:

  1. NameNode(主节点)

    • 职责:管理文件系统的元数据(如文件目录结构、块位置信息),不存储实际数据。
    • 工作原理:客户端上传文件时,NameNode将文件拆分为固定大小的数据块(默认128MB),并记录块与DataNode的映射关系。
    • 高可用方案:通过Active NameNode + Standby NameNode双节点热备,利用ZooKeeper协调状态切换。
  2. DataNode(从节点)

    • 职责:存储实际数据块,定期向NameNode发送心跳和块报告,执行NameNode指令(如删除冗余块)。
    • 数据冗余策略:每个数据块默认存储3份副本,分布在不同机架的DataNode上,以平衡性能与容错性。
  3. Secondary NameNode(非必需,Hadoop 3.x已弃用)

    • 作用:周期性合并NameNode的编辑日志与元数据镜像,防止日志过大导致内存溢出。

!HDFS架构图
(注:此处为示意图,实际部署中需考虑网络拓扑与硬件可靠性)


YARN架构与资源调度

YARN解决了早期Hadoop中JobTracker单点瓶颈问题,其核心组件包括:

角色 功能描述
ResourceManager 全局资源管理器,负责集群资源监控与任务调度
NodeManager 每台节点的资源管理器,汇报本地资源使用情况
ApplicationMaster 任务级调度器,负责具体应用(如MapReduce作业)的资源申请与任务分发

调度流程示例

  1. 客户端提交作业至ResourceManager。
  2. ResourceManager启动ApplicationMaster,后者向RM申请容器(Container)。
  3. ApplicationMaster将任务拆分为多个Map/Reduce任务,分配至空闲容器中执行。
  4. NodeManager监控容器运行状态,并向ResourceManager反馈。

YARN支持多种调度策略,

  • FIFO(先进先出):按作业提交顺序分配资源。
  • Capacity Scheduler:按团队或用户划分资源配额。
  • Fair Scheduler:动态调整资源分配,确保各作业公平共享资源。

MapReduce计算流程

MapReduce是Hadoop的经典计算模型,其执行流程如下:

  1. 输入分片:HDFS将输入文件拆分为多个Split,每个Split对应一个Map任务。
  2. Map阶段:每个Map任务处理一个Split,输出键值对并通过分区函数分发到Reduce节点。
  3. Shuffle与Sort:将相同Key的数据处理分配到同一Reduce任务,并在Reduce端进行排序。
  4. Reduce阶段:合并具有相同Key的中间结果,输出最终结果。

优化关键点

  • 数据本地性:优先将计算任务分配到存储数据的节点,减少网络传输。
  • 推测执行:对慢任务启动备份任务,优先返回结果。

Hadoop集群部署模式

Hadoop支持多种部署模式,需根据业务需求选择:

模式 特点 适用场景
本地模式 单节点运行,无HDFS依赖 开发调试、小规模测试
伪分布式模式 单节点模拟多节点,进程隔离 学习Hadoop原理
全分布式模式 多物理节点部署,HDFS与YARN协同工作 生产环境、大规模数据处理

Hadoop架构优势与局限性

优势

  1. 横向扩展:通过增加普通PC节点即可提升计算与存储能力。
  2. 高容错性:数据块副本机制与任务重试策略保障系统稳定性。
  3. 成本低廉:基于廉价硬件构建,适合大规模数据场景。

局限性

  1. 实时性不足:MapReduce适用于批处理,难以支持低延迟任务。
  2. 磁盘IO瓶颈:HDFS依赖磁盘存储,高频随机读写性能较差。

FAQs(常见问题解答)

Q1:如何配置HDFS的高可用性?
A1:需部署Active NameNode和Standby NameNode,两者通过共享存储(如QJM)同步元数据,并使用ZooKeeper监控节点状态,客户端通过VIP(虚拟IP)访问NameNode,实现故障自动切换。

Q2:YARN能否运行非MapReduce任务?
A2:可以,YARN的设计目标是支持多种计算框架,例如Spark、Tez等,只需将任务对应的ApplicationMaster提交至ResourceManager,即可

0