上一篇
hadoop服务器架构
- 行业动态
- 2025-05-16
- 5
Hadoop架构含HDFS分布式存储、YARN资源调度及MapReduce计算框架,主从节点协同工作,具备高容错与
Hadoop服务器架构详解
Hadoop核心架构
Hadoop是一个开源的分布式计算框架,其核心设计目标是通过水平扩展(Scale-Out)实现海量数据的存储与计算,其架构由HDFS(分布式文件系统)、YARN(资源调度框架)和MapReduce(计算模型)三大核心组件构成,配合其他辅助模块形成完整的大数据处理生态。
组件 | 功能定位 | 核心作用 |
---|---|---|
HDFS | 分布式存储系统 | 将数据分块存储,提供高容错、高吞吐量的数据读写能力 |
YARN | 资源管理与任务调度 | 统一管理集群资源(CPU、内存),为各类计算任务(MapReduce、Spark等)分配资源 |
MapReduce | 分布式计算模型 | 基于“分而治之”思想,将任务拆分为Map和Reduce阶段并行执行 |
HDFS架构解析
HDFS是Hadoop的底层存储系统,采用主从架构,分为以下角色:
NameNode(主节点)
- 职责:管理文件系统的元数据(如文件目录结构、块位置信息),不存储实际数据。
- 工作原理:客户端上传文件时,NameNode将文件拆分为固定大小的数据块(默认128MB),并记录块与DataNode的映射关系。
- 高可用方案:通过Active NameNode + Standby NameNode双节点热备,利用ZooKeeper协调状态切换。
DataNode(从节点)
- 职责:存储实际数据块,定期向NameNode发送心跳和块报告,执行NameNode指令(如删除冗余块)。
- 数据冗余策略:每个数据块默认存储3份副本,分布在不同机架的DataNode上,以平衡性能与容错性。
Secondary NameNode(非必需,Hadoop 3.x已弃用)
- 作用:周期性合并NameNode的编辑日志与元数据镜像,防止日志过大导致内存溢出。
!HDFS架构图
(注:此处为示意图,实际部署中需考虑网络拓扑与硬件可靠性)
YARN架构与资源调度
YARN解决了早期Hadoop中JobTracker单点瓶颈问题,其核心组件包括:
角色 | 功能描述 |
---|---|
ResourceManager | 全局资源管理器,负责集群资源监控与任务调度 |
NodeManager | 每台节点的资源管理器,汇报本地资源使用情况 |
ApplicationMaster | 任务级调度器,负责具体应用(如MapReduce作业)的资源申请与任务分发 |
调度流程示例:
- 客户端提交作业至ResourceManager。
- ResourceManager启动ApplicationMaster,后者向RM申请容器(Container)。
- ApplicationMaster将任务拆分为多个Map/Reduce任务,分配至空闲容器中执行。
- NodeManager监控容器运行状态,并向ResourceManager反馈。
YARN支持多种调度策略,
- FIFO(先进先出):按作业提交顺序分配资源。
- Capacity Scheduler:按团队或用户划分资源配额。
- Fair Scheduler:动态调整资源分配,确保各作业公平共享资源。
MapReduce计算流程
MapReduce是Hadoop的经典计算模型,其执行流程如下:
- 输入分片:HDFS将输入文件拆分为多个Split,每个Split对应一个Map任务。
- Map阶段:每个Map任务处理一个Split,输出键值对并通过分区函数分发到Reduce节点。
- Shuffle与Sort:将相同Key的数据处理分配到同一Reduce任务,并在Reduce端进行排序。
- Reduce阶段:合并具有相同Key的中间结果,输出最终结果。
优化关键点:
- 数据本地性:优先将计算任务分配到存储数据的节点,减少网络传输。
- 推测执行:对慢任务启动备份任务,优先返回结果。
Hadoop集群部署模式
Hadoop支持多种部署模式,需根据业务需求选择:
模式 | 特点 | 适用场景 |
---|---|---|
本地模式 | 单节点运行,无HDFS依赖 | 开发调试、小规模测试 |
伪分布式模式 | 单节点模拟多节点,进程隔离 | 学习Hadoop原理 |
全分布式模式 | 多物理节点部署,HDFS与YARN协同工作 | 生产环境、大规模数据处理 |
Hadoop架构优势与局限性
优势:
- 横向扩展:通过增加普通PC节点即可提升计算与存储能力。
- 高容错性:数据块副本机制与任务重试策略保障系统稳定性。
- 成本低廉:基于廉价硬件构建,适合大规模数据场景。
局限性:
- 实时性不足:MapReduce适用于批处理,难以支持低延迟任务。
- 磁盘IO瓶颈:HDFS依赖磁盘存储,高频随机读写性能较差。
FAQs(常见问题解答)
Q1:如何配置HDFS的高可用性?
A1:需部署Active NameNode和Standby NameNode,两者通过共享存储(如QJM)同步元数据,并使用ZooKeeper监控节点状态,客户端通过VIP(虚拟IP)访问NameNode,实现故障自动切换。
Q2:YARN能否运行非MapReduce任务?
A2:可以,YARN的设计目标是支持多种计算框架,例如Spark、Tez等,只需将任务对应的ApplicationMaster提交至ResourceManager,即可