Hadoop HA的安装配置

本文介绍了Hadoop HA的架构,包括active和standby namenode的数据一致性、高可用保障,以及环境准备、配置文件解析、启动顺序和验证安装等关键步骤,旨在提供一套完整的Hadoop HA集群搭建流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,HA的架构

Hadoop HA 即Hadoop的高可用,不同于普通的namenode+second namenode的模式,second namenode只能作为namenode的冷备份,当namenode挂掉后,second namenode不能自动充当namenode的角色。所以为了保证高可用性,就有了Hadoop HA的机制。
hdfs HA中即有至少有两个namenode,这儿以两个namenode为例,一个可以对外提供服务的namenode成为active namenode,待命状态的namenode成为standby namenode。

1.如何做到两个namenode的元数据的一致性呢?

将edits文件托管给稳定的第三方存放(当然,为了防止第三方挂掉,namenode本地的edits文件也是必要的),standby namenode就可以定时去第三方取edits文件放在内存中,做元素据的修改。这样就可以保证actice 和standby的数据一致性。

2.第三方用什么才能保证高可用?

第三方用的是qjournal集群,集群就可以将edits文件存放在每个机器中。并且这个集群使用zookeeper作为集群的协调,保证数据写入一半以上的机器,才为写入成功。

3.怎么做到standby在active节点挂掉自动充当active的角色呢?

这儿在每个namenode对应着一个监控进程ZKFC。在active上ZKFC使用RPC调用以判断active是否挂掉,如果挂掉,那么在zookeeper上将相应的节点删除(分布式锁),在Standby节点上的ZKFC进程就可以感知到节点删除的信息。Standby节点上的ZKFC进程感知到active节点挂掉的信息之后会向active节点发送一个杀死hdfs namenode的命令,确保active死亡,然后再向standby发送切换的指令,并向zookeeper创建节点。这样就可以让standby模式转换为active模式。

对于resourceManager的HA,因为不存在数据的一致性,所以只需要向zookeeper创建节点(获得分布式锁)即可。

二,环境准备

1.节点角色搭配(这儿是7台节点)

hadoop1:NameNode ZKFC
hadoop2:NameNode ZKFC
hadoop3:ResourceManager
hadoop4:ResourceManager
hadoop5:DataNode NodeManager zookeeper JournalNode
hadoop6:DataNode NodeManager zookeeper JournalNode
hadoop7:DataNode NodeManager zookeeper JournalNode

2.每台机器上都需要安装hadoop和jdk
3.节点之间的免密登陆,以及hosts文件的相应映射配置好
4.hadoop5,hadoop6,hadoop7上需要安装zookeeper

三,配置文件及解析

1.首先需要在hadoop-env.sh中加上HADOOP_HOME
2.core-site.xml
<!-- 这儿的bi表示两个namenode组建成的逻辑名字 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://bi/</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>

<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop5:2181,hadoop6:2181,hadoop7:2181</value>
</property>
3.hdfs-site.xml
<configuration>
<!--指定hdfs的nameservice为bi,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices
### Hadoop 高可用性 (HA) 安装配置指南 #### 一、环境准备 为了实现Hadoop集群的高可用性(HA),需要两或多服务器来部署NameNode和其他必要的组件。确保每机器上已经安装配置好Java环境以及SSH无密码登录。 对于Zookeeper服务,在所有节点执行命令以完成其安装[^2]: ```bash sudo yum install zookeeper-server -y ``` 初始化并启动 Zookeeper 服务时,需指定唯一的ID用于区分不同实例,并创建相应的`myid`文件于默认路径下[^4]: ```bash $ sudo service zookeeper-server init --myid=<unique_id> $ sudo service zookeeper-server start ``` #### 二、修改核心配置文件 编辑 `hdfs-site.xml`, 添加如下属性支持 NameNodeHA 功能: ```xml <property> <name>dfs.nameservices</name> <value>ns1</value> </property> <!-- Define each NN --> <property> <name>dfs.ha.namenodes.ns1</name> <value>nn1,nn2</value> </property> <!-- RPC address of first NN --> <property> <name>dfs.namenode.rpc-address.ns1.nn1</name> <value>host1:8020</value> </property> <!-- RPC address of second NN --> <property> <name>dfs.namenode.rpc-address.ns1.nn2</name> <value>host2:8020</value> </property> <!-- Address for failover proxy provider --> <property> <name>dfs.client.failover.proxy.provider.ns1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <!-- JournalNodes addresses --> <property> <name>dfs.namenode.shared.edits.dir</name> <value&q=uot;qjournal://host1:8485;host2:8485;host3:8485/ns1</value> </property> ``` 以上设置定义了一个名为`ns1`的名字空间,并指定了两个NameNode(`nn1`,`nn2`)及其RPC通信地址;还设置了故障转移代理提供者类名以便客户端能够自动切换到备用NameNode;最后通过JournalNodes存储共享日志记录位置。 #### 三、启用自动故障恢复机制 为了让整个系统更加健壮可靠,可以进一步开启自动化的故障检测与恢复功能。这通常涉及到配置Quorum Journal Manager(QJM),它允许多个JournalNode共同维护一份副本集从而提高数据安全性。 在`core-site.xml`中加入以下参数: ```xml <property> <name>ha.zookeeper.quorum</name> <value>zk_host1:2181,zk_host2:2181,zk_host3:2181</value> </property> ``` 此操作使得Hadoop能利用Zookeeper来进行状态同步和服务发现工作。 #### 四、格式化命名空间及启动服务 首次运行前要先对新的名字空间进行格式化处理: ```bash hdfs namenode -format ``` 接着分别在各个DataNode上启动相应守护进程即可正常使用具备HA特性的分布式文件系统了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值