ha (双机集群(HA)系统简称) 编辑
ha是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。
HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。
高可用的配置文件下载 请点击 CSDN
————查看环境变量:
echo $HADOOP_HOME
————set high available
1. 配置namenode的高可用
1.1 设置 corn-site.xml
添加如下内容(修改名称huagong,修改主机)
<property>
<name>fs.defaultFS</name>
<value>hdfs://huagong</value>
</property>
<!-- set high available ; hosts:port -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop-1:2181,hadoop-2:2181,hadoop-3:2181</value>
</property>
(并不同给其他节点配置文件)
scp core-site.xml hadoop-2:/usr/soft/hadoop-2.7.1/etc/hadoop/core-site.xml
scp core-site.xml hadoop-3:/usr/soft/hadoop-2.7.1/etc/hadoop/core-site.xml
1.2 修改 hdfs-site.xml
(服务器名、主机名、端口9000)
<!-- ha set start -->
<!-- set name for hdfs name -->
<property>
<name>dfs.nameservices</name>
<value>huagong</value>
</property>
<!-- set name for namenodes name -->
<property>
<name>dfs.ha.namenodes.huagong</name>
<value>nn1,nn2</value>
</property>
<!-- nanmeservice set name : namenode1;namenode2 hosts:port -->
<property>
<name>dfs.namenode.rpc-address.huagong.nn1</name>
<value>hadoop-1:9000</value>
</property>
<property>
<name>dfs.namenode.rpc-address.huagong.nn2</name>
<value>hadoop-2:9000</value>
</property>
<!-- nanmenode1 ;nanmenode2 Web URL; hosts:port -->
<property>
<name>dfs.namenode.http-address.huagong.nn1</name>
<value>hadoop-1:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.huagong.nn2</name>
<value>hadoop-2:50070</value>
</property>
<!-- is auto manager namenode ha -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- proxy hadoop ha,manager yarn ha -->
<property>
<name>dfs.client.failover.proxy.provider.huagong</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- multiple primary nodes (two leader method) -->
<!-- sshfence can add some other self shell file to set -->
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<!-- set ssh path; to find ssh private key -->
<!-- Asymmetric encryption-->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<!-- ssh fencing conn timeout -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
<!-- set namenode groups : share data path -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-1:8485;hadoop-2:8485;hadoop-3:8485/huagong</value>
</property>
<!-- set journalnode data save path -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/soft/journal</value>
</property>
<!-- ha set end -->
(并不同给其他节点配置文件)
scp hdfs-site.xml hadoop-2:/usr/soft/hadoop-2.7.1/etc/hadoop/
scp hdfs-site.xml hadoop-3:/usr/soft/hadoop-2.7.1/etc/hadoop/
【变更高可用框架可以不删除 name和data】
三台机器都执行删除操作、学习中先删除 data和name,重新格式化
[root@hadoop-1 soft]# cd /usr/soft/
[root@hadoop-1 soft]# rm -rf data/ name/
【目前配置的是 namenode 的高可用】
1.3 启动顺序
- 1.3.1 启动zookeeper
第一次启动高可用集群需要,三台机器启动 zookeeper
zkServer.sh start
zkServer.sh status
[root@hadoop-1 soft]# jps
2899 JournalNode
2810 QuorumPeerMain - 1.3.2 启动 journalnode
配置的两台 namenode 上任何一台启动
———— 如果没有 JournalNode; 三台机器同时启动JournalNode ;
在主机器使用下列命令即可 daemons(s)
hadoop-daemons.sh start journalnode - 1.3.3 格式化集群
hadoop namenode -format - 1.3.4 当前机器启动namenode
[root@hadoop-1 soft]#hadoop-daemon.sh start namenode
jps;查看namenode是否在 - 1.3.5 号机器执行 同步namenode数据的命令
[root@hadoop-2 soft]# hdfs namenode -bootstrapStandby
——如果无法同步,检查1号是否启动namenode,或者从1号拷贝name文件夹 - 1.3.6 号机器格式化zkfc
[root@hadoop-1 hadoop]# hdfs zkfc -formatZK
=====================以上全部正常(仅第一次配置操作)
** 启动集群 start-dfs.sh
—————验证是否成功
http://192.168.137.101:50070
Overview --> Overview 'hadoop-1:9000' (active)
http://192.168.137.102:50070
Overview --> Overview 'hadoop-2:9000' (standby)
- 在终端 101机器 jps,kill掉namenode进程后
101 无法访问
102 Overview --> Overview ‘hadoop-2:9000’ (active) - 在终端 101 重启 namenode 之后:
101显示 Overview --> Overview ‘hadoop-1:9000’ (standby)
—————注:高可用以后 Eclipse 项目调整
原来的HDFS JavaApi hdfs://hadoop-1:9000 可以替换成高可用集群服务名称
更改为 services的那么: huagong
高可用的两个配置文件需要拷贝到项目目录(maven项目)
src/main/java
和代码相同级别
如果是普通Java项目,放到src下边即可