大数据开发之HA

第 1 章:Hadoop HA 高可用

1.1 HA 概述

所谓HA(High Availablity),即高可用(7*24小时不间断服务)。

实现高可用最关键的策略是消除单点故障。HA严格来说应该分成各个组件的HA机制:HDFS的HA和YARN的HA。

NameNode主要在以下两个方面影响HDFS集群

  • NameNode机器发生意外,如宕机,集群将无法使用,直到管理员重启。
  • NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用。
    HDFS HA功能通过配置多个NameNodes(Activate/Standby)实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器奔溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

解释名词:

HDFS(Hadoop Distributed File System):

  • 定义:HDFS是Hadoop框架中的一个分布式系统,它被设计用来存储大量数据,并提供高吞吐量的数据访问。这个系统可以跨越多个机器运行,使得它可以处理大量数据。
  • 特点:HDFS是一个主/从结构。一个HDFS集群由一个NameNode(主节点)和多个DataNodes(从节点)组成。NameNode管理文件系统的元数据,比如文件目录和文件属性,同时还负责客户端请求的处理。DataNodes则负责存储实际的数据。
  • 用途:主要用于大数据应用,特别是那些需要处理PB级(千亿字节)数据的应用。

YARN(Yet Another Resource Negotiator):

  • 定义:YARN是Hadoop2.0引入的资源管理和作业调度技术。它允许数据处理框架(如MapReduce和其它分布式计算框架)有效地共享一个共同的资源池。
  • 组件:主要包括ResourceManager(负责整个系统的资源分配)和多个NodeManagers(在每个节点上管理用户作业运行)。
  • 目的:YARN的目的是提高集群的资源利用率,同时支持多种数据处理模型。

NameNode:

  • 角色:在HDFS中,NameNode是一个关键的服务器,负责管理文件系统的命名空间和客户端对文件的访问。NameNode记录了每个文件在文件系统树的目录结构中的位置,以及文件的元数据,如权限、时间戳等。
  • 功能:NameNode还记录了每个文件的数据块(block)信息和这些数据块在DataNodes上的位置。但是它并不存储实际的数据。

1.2 HDFS-HA核心问题

4 强行杀死namenode~ + 5 如果ssh补刀失败~:强行再补一刀,防止同时出现两个活着的NameNode,也就出现了脑裂。

1)怎么保证三台namenode的数据一致?

(1)Fsimage:让一台nn生成数据,让其它机器nn同步。

(2)Edits:需要引进新的模块JournalNode来保证edits的文件的数据一致性。

2)怎么同时只有一台nn是active,其它所有的是standby?

(1)手动分配

(2)自动分配

3)2nn在ha架构中并不存在,定期合并fsimage和edits的活谁来干?

(1)由standby的nn来干

4)如果nn真的发生了问题,怎么让其它的nn上位干活?

(1)手动故障转移

(2)自动故障转移

1.3 HDFS-HA 手动模式

1.3.1 环境准备

(1)修改IP

(2)修改主机号及主机名和IP地址的映射

(3)关闭防火墙

(4)ssh免密登录

(5)按照JDK,配置环境变量等

1.3.2 规划集群

hadoop102 hadoop103 hadoop104
NameNode NameNode NameNode
JournalNode JournalNode JournalNode
DataNode DataNode DataNode

1.3.3 配置HDFS-HA集群

  • 在opt目录下创建一个ha文件夹
  • 将/opt/module/下的hadoop拷贝到/opt/ha目录下(记得删除data和log目录)
  • 配置core-site.xml
    (1)把多个NameNode的地址组装成一个集群mycluster
    (2)指定hadoop运行时产生文件的存储目录
  • 配置hdfs-site.xml
    (1)NameNode数据存储目录
    (2)DataNode数据存储目录
    (3)JournalNode数据存储目录
    (4)完全分布式集群名称
    (5)集群中NameNode节点都有哪些
    (6)NameNode的RPC通信地址:RPC通信是一种允许远程计算机程序调用另一台计算机上程序的协议,主要用于数据管理、元数据操作以及各种控制指令的传输。
    (7)NameNode的http通信地址:用于Web界面访问,供管理员和用户查看文件系统状态和性能指标。
    (8)指定NameNode元数据在JournalNode上的存储地址
    (9)访问代理类:client用于确定哪个NameNode为Active
    (10)配置隔离机制,即同一时刻只能有一台服务器对外响应
    (11)使用隔离机制时需要ssh密钥登录
  • 分发配置好的hadoop环境到其它节点

1.3.4 启动HDFS-HA集群

1)将HADOOP_HOME环境变量更改到HA目录(三台机器)

2)在各个JournalNode节点上,输入以下命令启动journalnode服务

  • hdfs --daemon start journalnode

3)在nn1上,对其进行格式化,并启动

  • hdfs namenode -format
  • hdfs --daemon start namenode
    4)在nn2nn3上,同步nn1的元数据信息
  • hdfs namenode -bootstrapStandby
    5)启动nn2nn3
  • hdfs --daemon start namenode
    6)查看web页面显示


    7)在所有节点上,启动datanode
  • hdfs --daemon start datanode
    8)将nn1切换成Active
  • hdfs haadmin -transitionToActive nn1

9)查看是否Active

  • hdfs haadmin -getServiceState nn1

1.4 HDFS-HA 自动模式

1.4.1 HDFS-HA自动故障转移工作机制

自动故障转移为HDFS部署增加了两个新组件:ZooKeeper和ZKFailoverController(ZKFC)进程,如图所示。ZooKeeper是维护少量协调数据,通知客户端这些数据的改变和监视客户端故障的高可用服务。

1.4.2 HDFS-HA自动故障转移的集群规划

hadoop102 hadoop103 hadoop104
NameNode NameNode NameNode
JournalNode JournalNode JournalNode
DataNode DataNode DataNode
Zookeeper Zookeeper Zookeeper
ZKFC ZKFC ZKFC

1.4.3 配置HDFS-HA自动故障转移

1)具体配置

(1)在hdfs-site.xml中增加:启动nn故障自动转移

(2)在core-site.xml文件中增加:指定zkfc要连接的zkService地址

(3)修改后分发配置文件

2)启动

(1)关闭所有HDFS服务

(2)启动Zookeeper集群

(3)初始化HA在Zookeeper中状态

  • hdfs zkfc -formatZK

(4)启动HDFS

(5)可以去zkCli.sh客户端查看Namenode选举锁节点内容

3)验证

(1)将Active NameNode进程kill,查看网页端三台Namenode的状态变化

1.5 YARN-HA配置

1.5.1 YARN-HA工作机制

ZooKeeper集群存储了Active ResourceManager的状态,这样在主节点失败时,可以从ZooKeeper获取状态信息,以便进行故障转移。Standby ResourceManager是备用的ResourceManager,它在正常情况下不会处理任何作业或管理资源。当Active ResourceManager发生故障时,Standby ResourceManager会从ZooKeeper集群获取最新的状态信息,并成为新的Active ResourceManager,这个过程称为故障转移(Fail-over)。

1.5.2 配置YARN-HA集群

1)环境准备

(1)修改IP

(2)修改主机号及主机名和IP地址的映射

(3)关闭防火墙

(4)ssh免密登录

(5)按照JDK,配置环境变量等

(6)配置Zookeeper集群

2)集群规划

hadoop102 hadoop103 hadoop104
ResourceManager ResourceManager ResourceManager
NodeManager NodeManager NodeManager
Zookeeper Zookeeper Zookeeper

3)核心问题

(1)如果当前active rm挂了,其他rm怎么将其他standby rm上位?

答:核心原理跟HDFS一样,利用了zk的临时节点。

(2)当前rm上有很多计算程序在等待运行,其他的rm怎么将这些程序接受过来接着跑?

答:rm会将当前所有计算程序的状态存储在zk中,其他rm上位后会去读取,然后接着跑。

4)具体配置

(1)yarn-site.xml

  • 1、启用resourcemanager ha
  • 2、声明两台resourcemanager的地址
  • 3、指定resourcemanager的逻辑顺序
  • 4、rm1的配置(指定rm1的主机名、指定rm1的web端地址、指定rm1的内部通信地址、指定AM向rm1申请资源的地址、指定供NM连接的地址)
  • 5、rm2的配置:和rm1的配置一致
  • 6、rm3的配置:和rm1的配置一致
  • 7、指定zookeeper集群的地址
  • 8、启动自动恢复
  • 9、指定resourcemanager的状态信息存储在zookeeper集群
  • 10、环境变量继承

(2)同步更新其他节点信息的配置信息,分发配置文件

4)启动YARN

(1)在有ResourceManager的节点启动

(2)查看服务状态

  • yarn rmadmin -getServiceState rm1

(3)可以去zkCli.sh客户端查看ResourceManager选举锁节点内容

(4)web端查看hadoop102:8088和hadoop103:8088的YARN的状态

1.6 HADOOP HA的最终规划

将整个ha搭建完成后,集群将形成以下模样

hadoop102 hadoop103 hadoop104
NameNode NameNode NameNode
JournalNode JournalNode JournalNode
DataNode DataNode DataNode
Zookeeper Zookeeper Zookeeper
ZKFC ZKFC ZKFC
ResourceManager ResourceManager ResourceManager
NodeManager NodeManager NodeManager

NameNode:Hadoop文件系统(HDFS)的核心部分,负责管理文件系统的命名空间。NameNode跟踪整个文件系统的目录和文件结构,并维护文件系统树及其元数据。在Ha配置中,通常由两个NameNode,一个处于活跃状态,另外一个处于待命状态,以提供故障转移能力。

JournalNode:在Ha配置中,JournalNode用于维护NameNode之间的状态同步。当活动NameNode对文件进行更改时,这个更改会先记录到一组JournalNode中,然后由待命NameNode读取,以保持状态一致。

DataNode:HDFS的数据存储节点。DataNode负责存储实际的数据块。NameNode负责跟踪哪个DataNode存储了文件的哪部分内容。

Zookeeper:一种集中式服务,用于维护配置信息、命令、提供分布式同步,以及提供群组服务。 在Hadoop HA配置中,Zookeeper用于管理和协调NameNode的状态。

ZKFC(Zookeeper Failover Controller):ZKFC是一个基于Zookeeper的故障转移控制器。它监控和管理NameNode的健康状态,以及在主NameNode失效时触发故障转移功能。

ResourceManager:YARN(Yet Another Resource Negotiator)的核心部分,负责管理集群中的计算资源。ResourceManager跟踪可用的处理器和内存资源,并根据需求将这些资源分配给各个应用程序。

NodeManager:YARN架构中的每个节点上运行的组件。NodeManager负责监控其节点上的资源使用情况,并向ResourceManager报告。此外,它还负责管理容器的生命周期,容器是执行应用程序代码的隔离环境。

相关推荐
江苏汉软21 分钟前
mes现场管理系统
大数据
tanglinS21 分钟前
工业陶瓷在半导体设备里都用哪里?氮化铝基板与氮化硅结构件的静电无尘角色
大数据·运维·人工智能·自动化·材质
慧新软件42 分钟前
Google算法更新后,外贸SEO优化策略如何调整
大数据
xushichang123_1 小时前
如何观看 2026 亚马逊云科技中国峰会全场主题演讲与技术分论坛内容?
大数据·人工智能
招财小梗2 小时前
AI矩阵获客,品牌连锁落地有啥方案?
大数据·人工智能·矩阵
黎子越2 小时前
大模型基础名词概念
大数据
zandy10112 小时前
主流 AI Agent搜索Skill推荐及高阶选型指南
大数据·人工智能
跨境卫士苏苏2 小时前
2026年做跨境电商,TikTok美区半托管这3个品类正在严查,第2个很多新手还在铺货
大数据·人工智能·跨境电商·营销策略
GIS数据转换器2 小时前
村镇无人机物流配送与跨域监测一体化平台
大数据·运维·人工智能·科技·无人机
知识燃料3 小时前
企业技术决策者落地 AI Agent 体系,AWS 中国峰会有哪些战略与工程内容可看?
大数据·人工智能