HADOOP HA高可用环境配置

=HADOOP HA高可用环境配置==================================
集群规划:
按照高可用的设计目标:需要保证至少有两个 NameNode (一主一备) 和 两个 ResourceManager (一主一备) ,同时为满足“过半写入则成功”的原则,需要至少要有 3 个 JournalNode 节点。这里使用三台主机进行搭建。

前置条件:
所有服务器都安装有 JDK
搭建好 ZooKeeper 集群
所有服务器之间都配置好 SSH 免密登录

=============================================================================================
1.配置文件
(1).修改 core-site.xml--------------------------------------------



fs.defaultFS
hdfs://master:8020



hadoop.tmp.dir
/opt/hadoop2.6/tmp



ha.zookeeper.quorum
master:2181,hadoop002:2181,hadoop003:2181



ha.zookeeper.session-timeout.ms
10000

(2).修改hdfs-site.xml-----------------------------------------------------
	<configuration>
             dfs.replication              2                        dfs.name.dir              /opt/hadoop2.6/hdfs/name                      dfs.data.dir              /opt/hadoop2.6/hdfs/data      dfs.hosts.exclude    /opt/hadoop2.6/etc/hadoop/excludes dfs.nameservices mycluster dfs.ha.namenodes.mycluster nn1,nn2 dfs.namenode.rpc-address.mycluster.nn1 master:8020 dfs.namenode.rpc-address.mycluster.nn2 hadoop002:8020 dfs.namenode.http-address.mycluster.nn1 master:50070 dfs.namenode.http-address.mycluster.nn2 hadoop002:50070 dfs.namenode.shared.edits.dir qjournal://master:8485;hadoop002:8485;hadoop003:8485/mycluster dfs.journalnode.edits.dir /opt/hadoop2.6/journalnode/data dfs.ha.fencing.methods sshfence dfs.ha.fencing.ssh.private-key-files /root/.ssh/id_rsa dfs.ha.fencing.ssh.connect-timeout 30000 dfs.client.failover.proxy.provider.mycluster org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider dfs.ha.automatic-failover.enabled true
	(3).修改yarn-site.xml-----------------------------------------------------------------------------
		<configuration>
                yarn.resourcemanager.hostname                 master                 指定resourcemanager所在的hostname                         yarn.nodemanager.aux-services                 mapreduce_shuffle                                 NodeManager上运行的附属服务。配置成mapreduce_shuffle,才可运行MapReduce程序                         yarn.log-aggregation-enable true yarn.log-aggregation.retain-seconds 86400 yarn.resourcemanager.ha.enabled true yarn.resourcemanager.cluster-id my-yarn-cluster yarn.resourcemanager.ha.rm-ids rm1,rm2 yarn.resourcemanager.hostname.rm1 hadoop002 yarn.resourcemanager.hostname.rm2 hadoop003 yarn.resourcemanager.webapp.address.rm1 hadoop002:8088 yarn.resourcemanager.webapp.address.rm2 hadoop003:8088 yarn.resourcemanager.zk-address master:2181,hadoop002:2181,hadoop003:2181 yarn.resourcemanager.recovery.enabled true yarn.resourcemanager.store.class org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore
	2.将配置文件进行分发:hadoop002 hadoop003
	rsync -av /opt/hadoop2.6/etc/hadoop/core-site.xml hadoop002:/opt/hadoop2.6/etc/hadoop
	rsync -av /opt/hadoop2.6/etc/hadoop/hdfs-site.xml hadoop002:/opt/hadoop2.6/etc/hadoop
	rsync -av /opt/hadoop2.6/etc/hadoop/yarn-site.xml hadoop002:/opt/hadoop2.6/etc/hadoop

	rsync -av /opt/hadoop2.6/etc/hadoop/core-site.xml hadoop003:/opt/hadoop2.6/etc/hadoop
	rsync -av /opt/hadoop2.6/etc/hadoop/hdfs-site.xml hadoop003:/opt/hadoop2.6/etc/hadoop
	rsync -av /opt/hadoop2.6/etc/hadoop/yarn-site.xml hadoop003:/opt/hadoop2.6/etc/hadoop

	3.启动zookeeper
		分别到三台服务器上启动 ZooKeeper 服务:
			 zkServer.sh start
		检查zookeeper集群是否正常:
		     zkServer.sh status

    4.启动Journalnode
     分别到三台服务器的的 ${HADOOP_HOME}/sbin 目录下,启动 journalnode 进程
     	hadoop-daemon.sh start journalnode

     	使用jps命令确认这3个节点上的JournalNode进程都启动

    5.初始化NameNode
     	在 hadop001 上执行 NameNode 初始化命令:
     		hdfs namenode -format

 		查看你配置的hadoop.tmp.dir这个配置信息,得到hadoop工作的目录,我的是/opt/hadoop2.6/hdfs/name,把master上的hadoopdata目录发送给hadoop002的相同路径下,这一步是为了同步两个namenode的元数据
 			scp -r /opt/hadoop2.6/hdfs/name hadoop002:/opt/hadoop2.6/hdfs/

	6.初始化HA状态
	在任意一台 NameNode 上使用以下命令来初始化 ZooKeeper 中的 HA 状态:
		hdfs zkfc -formatZK

	7.启动HDFS
	进入到 hadoop001 的 ${HADOOP_HOME}/sbin 目录下,启动 HDFS。此时 hadoop001 和 hadoop002 上的 NameNode 服务,和三台服务器上的 DataNode 服务都会被启动:
		start-dfs.sh

	8.启动YARN
	进入到 hadoop002 的 ${HADOOP_HOME}/sbin 目录下,启动 YARN。此时 hadoop002 上的 ResourceManager 服务,和三台服务器上的 NodeManager 服务都会被启动:
		start-yarn.sh

	需要注意的是,这个时候 hadoop003 上的 ResourceManager 服务通常是没有启动的,需要手动启动:
		yarn-daemon.sh start resourcemanager

	9.验证集群是否搭建成功 --------------------------------------------------------------------------

		(1).查看进程jps
			[root@hadoopmaster sbin]# jps
			4512 DFSZKFailoverController
			3714 JournalNode
			4114 NameNode
			3668 QuorumPeerMain
			5012 DataNode
			4639 NodeManager


			[root@hadoop002 sbin]# jps
			4499 ResourceManager
			4595 NodeManager
			3465 QuorumPeerMain
			3705 NameNode
			3915 DFSZKFailoverController
			5211 DataNode
			3533 JournalNode


			[root@hadoop003 sbin]# jps
			3491 JournalNode
			3942 NodeManager
			4102 ResourceManager
			4201 DataNode
			3435 QuorumPeerMain

		(2).查看Web UI
		HDFS 和 YARN 的端口号分别为 50070 和 8080

		此时 hadoop001 上的 NameNode 处于可用状态:
			active

		而 hadoop002 上的 `NameNode` 则处于备用状态:
			standby

		hadoop002 上的 ResourceManager 处于可用状态:
			ResourceManager state:STARTED
								  active
								  CONNECTED

		hadoop003 上的 ResourceManager 则处于备用状态:
			ResourceManager state:STARTED
								  standby
								  CONNECTED

		同时界面上也有 Journal Manager 的相关信息:

			可以查看共享的网站进行检验是否成功

			https://www.jianshu.com/p/d79107d41e7c

			https://github.com/heibaiying/BigData-Notes/blob/master/notes/installation/%E5%9F%BA%E4%BA%8EZookeeper%E6%90%AD%E5%BB%BAHadoop%E9%AB%98%E5%8F%AF%E7%94%A8%E9%9B%86%E7%BE%A4.md

集群的二次启动
上面的集群初次启动涉及到一些必要初始化操作,所以过程略显繁琐。但是集群一旦搭建好后,想要再次启用它是比较方便的,步骤如下(首选需要确保 ZooKeeper 集群已经启动):

在 master 启动 HDFS,此时会启动所有与 HDFS 高可用相关的服务,包括 NameNode,DataNode 和 JournalNode:

start-dfs.sh
在 hadoop002 启动 YARN:

start-yarn.sh
这个时候 hadoop003 上的 ResourceManager 服务通常还是没有启动的,需要手动启动:

yarn-daemon.sh start resourcemanager

Hadoop HA集群的重装-----------------------------------------------------

删除所有节点中hadoop的工作目录(core-site.xml中配置的hadoop.tmp.dir那个目录)
如果你在core-site.xml中还配置了dfs.datanode.data.dir和dfs.datanode.name.dir这两个配置,那么把这两个配置对应的目录也删除
删除所有节点中hadoop的log日志文件,默认在HADOOP_HOME/logs目录下
删除zookeeper集群中所关于hadoop的znode节点
详细看https://www.jianshu.com/p/d79107d41e7c如何删

发布了11 篇原创文章 · 获赞 11 · 访问量 125

猜你喜欢

转载自blog.csdn.net/weixin_43307695/article/details/104502265