一、Hadoop2.0 的改进

1. Hadoop1.0 存在的问题

  • HDFS:NameNode 单点故障、内存受限影响扩展性。
  • MapReduce:JobTracker 单点故障、访问压力大、不支持多计算框架。

2. 改进方案

  • 解决 HDFS 问题:
    • HA 模式:主备 NameNode,故障自动切换。
    • Federation(联邦):多个 NameNode 分管目录,共享 DataNode 存储。
  • 引入 Yarn:分离资源管理与作业调度,支持多计算框架。

二、Yarn 资源管理框架

1. 简介

  • 定义:Yet Another Resource Negotiator,基于 MapReduce 的资源协调框架。
  • 核心组件:ResourceManager、NodeManager、ApplicationMaster、Container。
  • 优势:支持多版本 MapReduce、计算框架升级便捷。

2. 架构

  • 主从结构:ResourceManager(Master)、NodeManager(Slave)。
  • 组件功能:
    • ResourceManager:接收作业请求、管理节点资源、启动监控 ApplicationMaster。
    • NodeManager:管理节点资源、启动 Container、上报资源使用情况。
    • ApplicationMaster:管理单个作业、申请资源、启动任务、监控进度。
    • Container:资源抽象,包含任务运行所需资源、命令、环境。

3. 工作流程

  1. 客户端提交程序到 ResourceManager。
  2. ResourceManager 分配 Container 并启动 ApplicationMaster。
  3. ApplicationMaster 注册到 ResourceManager,申请资源。
  4. ApplicationMaster 获取资源后,通知 NodeManager 启动任务。
  5. NodeManager 设置运行环境,启动任务。
  6. 任务向 ApplicationMaster 汇报状态,失败时重启。
  7. 作业完成后,ApplicationMaster 注销关闭。

4. 优势

  • 计算速度更快:异步模型重写 MapReduce 核心逻辑。
  • 支持多种框架:Spark、Storm、Tez 等可移植到 Yarn。
  • 框架升级容易:计算框架封装为客户端程序库,升级便捷。

三、Hadoop 的 HA 模式

1. 简介

  • 定义:基于 Zookeeper 实现的高可用集群模式,包含 HDFS HA 和 Yarn HA。
  • 核心目标:解决单点故障问题,保证集群持续服务。

2. HDFS 的 HA 模式

(1)架构
  • 两个 NameNode:Active(活跃)和 Standby(备用),Active 处理客户端操作,Standby 同步数据。
  • 关键组件:
    • JournalNode:同步 Active 与 Standby 的 edits 日志,至少 3 个节点。
    • DFSZKFailoverController(ZKFC):监控 NameNode 状态,触发故障转移。
(2)搭建步骤
  1. 关闭 Hadoop 和 Zookeeper 集群。
  2. 修改 core-site.xml(配置集群 ID、ZK 连接)。
  3. 修改 hdfs-site.xml(配置 NameNode 标识、JournalNode 地址、故障转移参数)。
  4. 分发配置文件,配置免密登录。
  5. 启动 ZK 集群→格式化 ZK→启动 JournalNode→初始化共享日志→启动 HDFS。
(3)故障转移验证
  • 查看 NameNode 状态:hdfs haadmin -getServiceState nn1/nn2。
  • 模拟故障:kill Active NameNode 进程,验证 Standby 自动切换为 Active。

3. Yarn 的 HA 模式

(1)架构
  • 多个 ResourceManager:Active 和 Standby,Active 管理资源,Standby 备用。
  • 故障转移:支持手动切换和自动切换(基于 Zookeeper)。
(2)搭建步骤
  1. 修改 yarn-site.xml(配置 RM 标识、ZK 连接、自动故障转移)。
  2. 分发配置文件,新建 rm_hosts 文件(列出 RM 节点)。
  3. 修改 start-yarn.sh 和 stop-yarn.sh 脚本。
  4. 启动 ZK 集群→启动 Yarn 集群。
(3)故障转移验证
  • 查看 RM 状态:yarn rmadmin -getServiceState rm1/rm2。
  • 模拟故障:kill Active RM 进程,验证 Standby 自动切换为 Active。

4. 启动和关闭流程

  • 启动:启动 ZK 集群→启动 Hadoop 集群(start-dfs.sh + start-yarn.sh)。
  • 关闭:关闭 Hadoop 集群(stop-dfs.sh + stop-yarn.sh)→关闭 ZK 集群。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐