Hadoop之旅(7)— HDFS HA Zookeeper自动故障转移

版权声明:本文为博主原创文章,可允许转载,但注明出处。 https://blog.csdn.net/JavaWebRookie/article/details/73733261

1、HDFS HA Zookeeper自动故障转移的需求

     在 HDFS 集群下,我们知道也只有单个 NameNode 节点,虽然是集群但是也会有单节点故障等事故。所以需要一个协调者帮助我们遇到故障时及时帮助我们切换可用的 NameNode 节点。这个就是我们的需求、如果我们不需要ZK的话、搭建的HA需要我们手动切换,这是不可行的。所以我们需要 zookeeper安装与配置教程


集群规划:



前提条件:
环境:三台虚拟机、三个zk节点(集群模式)
启动zk

2、HDFS HA配置文件


2.1、core-site.xml文件

	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://ns1</value>
	</property>
	
	
	<property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/chenzhengyou/hadoop/cluster/data/tmp</value>
    </property>
	
	<!--垃圾回收箱的时间-->
	<property>
		<name>fs.trash.interval</name>
		<value>640800</value>
	</property>

	<!--zookeeper-->
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>czy-1:2181,czy-2:2181,czy-3:2181</value>
	</property>


2.2、hdfs-site.xml文件
<!-- 两个NameNode -->
	<property>
		<name>dfs.nameservices</name>
		<value>ns1</value>
	</property>
	<property>
		<name>dfs.ha.namenodes.ns1</name>
		<value>nn1,nn2</value>
	</property>
	
	<!-- #####################NameNode RPC ADDRESS######################### -->
	<property>
		<name>dfs.namenode.rpc-address.ns1.nn1</name>
		<value>czy-1:8020</value>
	</property>
	<property>
		<name>dfs.namenode.rpc-address.ns1.nn2</name>
		<value>czy-2:8020</value>
	</property>
	
	
	<!-- #####################NameNode HTTP WEB ADDRESS######################### -->
	<property>
		<name>dfs.namenode.http-address.ns1.nn1</name>
		<value>czy-1:50070</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.ns1.nn2</name>
		<value>czy-2:50070</value>
	</property>
	
	
	<!-- #####################NameNode SHARED EDITS ADDRESS######################### -->
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://czy-1:8485;czy-2:8485;czy-3:8485/ns1</value>
	</property>
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/usr/local/chenzhengyou/hadoop/cluster/data/tmp/dfs/jn</value>
	</property>
	
	
	<!-- #################### HDFS PROXY client ######################### -->	
	<property>
		<name>dfs.client.failover.proxy.provider.ns1</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>	
	
	
	<!-- ##################### NameNodes FENCE 隔离 ######################### -->	
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>sshfence</value>
	</property>
	<!--注意:两个NameNode之间能够ssh无密码登录-->
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/root/.ssh/id_rsa</value>
	</property>
	
	
	<!-- #####################  automatic failover ######################### -->		
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
	
	<!--权限-->
	<property>
		<name>dfs.permissions</name>
		<value>false</value>
    </property>


2.3、slaves文件(三台机器的主机名)
czy-1
czy-2
czy-3

2.4、yarn-site.xml文件
<!--主机2 -ResourceManager -->
	<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>czy-2</value>
    </property>
	
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
	
	<!-- ################NodeManager Resouce#################### -->
	
	<!--内存-->
	<property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
	<!--核-->
	<property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>4</value>
    </property>
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
	<!--收回存活时间-->
	<property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>640800</value>
    </property>



3、格式化 ZKFC

hdfs zkfc -formatZK 


4、启动 NameNode、DataNode、nodemanager、resourcemanager等

[root@czy-1 hadoop-2.5.0]# sbin/start-all.sh 



5、启动界面




启动 czy-1 主机是 active 节点、czy-2 主机是 standby 节点。

我们现在把 czy-1 主机上的 namenode   kill 


界面瞬间变化(瞬间的切换就降低影响









阅读更多

扫码向博主提问

陈郑游

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • java
  • mysql
  • redis
去开通我的Chat快问
换一批

没有更多推荐了,返回首页