05HA的配置

搭建HA,规划如下:
NN-1NN-2DNZKZKFCJNN
node01***
node02*****
node03***
node04**
以下在03,04的基础上搭建

一、将zookeeper上传至node02,然后解压,移动至自己创建的目录下

tar -zxf zookeeper.*.tar.gz
mv zookeeper*  /opt/sxt
	(zookeeper也是java开发的,也需要jdk)

二、配置环境变量,使zkCli.cmd和zkServer.sh在任意位置可以使用

1.环境变量
	cd /opt/sxt/zookeeper-3
	vi /etc/profile
		(在export中,用O新开倒数第二行)
		export ZOOKEEPER_HOME=/opt/sxt/zookeeper-3.4.6
		在最后一行增加“ :ZOOKEEPER_HOME/bin ”
2.加载配置文件:
	. /etc/profile
3.验证:
	cd 随便去一个位置
	zk 按Tab有提示即可

三、调整配置文件

1.进入目录:
	cd /opt/sxt/zookeeper-3
	cd conf
2.改名:
	cp zoo_sample.cfg zoo.cfg
3.补充:
	vi zoo.cfg
		将dataDir的目录改为/var/sxt/hadoop/zk
		在最后补充:
			server.1=192.168.159.12:2888:3888   
			server.2=192.168.159.13:2888:3888  
			server.3=192.168.159.14:2888:3888  
4.将自己放入那个目录
	mkdir -p /var/sxt/hadoop/zk
	echo 1 > /var/sxt/hadoop/zk/myid
5.分发给node03,node04
	cd /opt/sxt
	scp -r ./zookeeper*/ node03:`pwd`
	scp -r ./zookeeper*/ node04:`pwd`
6.在node03,node04中改为自己的id
	mkdir -p /var/sxt/hadoop/zk
	echo 2 > /var/sxt/hadoop/zk/myid
	在node04中为:echo 3 > /var/sxt/hadoop/zk/myid
7.为node03,node04配置文件
	scp /etc/profile node03:/etc/profile
	scp /etc/profile node04:/etc/profile
	在3,4中分别启动
		. /etc/profile

四、启动

0.当启动过半时,确定leader。(server大的为,小的为follower)
	后来的就算server大于leader的,也要追随,除非leader驾崩,server最大的才能继位。
1.启动:
	zKServer.sh start
2.状态:
	zKServer.sh status
		其中的Mode为模式。

五、免密钥

=node02对自己免密钥,对node01免密钥=
1.创建
	ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
2.对自己免密钥
	cd ~/.ssh
	cat id_dsa.pub >> authorized_keys
3.验证
	ssh node02
	exit
4.远程拷贝公钥
	scp id_dsa.pub node01:`pwd`/node02.pub
5.对node01免密钥
	去到在node01中:
	cd ~/.ssh
	cat node02.pub >> authorized_keys
6.验证
	(由node02访问01)
	ssh node01
	exit

六、备份、多版本

回到node01:
	cd /opt/sxt/hadoop-*/etc
	ll    # 有hadoop目录
	cp -r hadoop hadoop-full
		(hadoop-full里面的配置就为完全分布式的(hdfs功能),将hadoop改为HA的配置)

七、更改node01中hdfs-site文件

cd /opt/sxt/hadoop-*/etc/hadoop
vi hdfs-site.xml
①删除:
	HA模式中没有secondaryNamenode
	将原有的第二个property即secondaryNamenode删除,它没有意义啦
②补充:
逻辑到物理的映射
	<property>
	  <name>dfs.nameservices</name>
	  <value>mycluster</value>
	</property>
	<property>
	  <name>dfs.ha.namenodes.mycluster</name>
	  <value>nn1,nn2</value>
	</property>
	<property>
	  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
	  <value>node01:8020</value>
	</property>
	<property>
	  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
	  <value>node02:8020</value>
	</property>
	<property>
	  <name>dfs.namenode.http-address.mycluster.nn1</name>
	  <value>node01:50070</value>
	</property>
	<property>
	  <name>dfs.namenode.http-address.mycluster.nn2</name>
	  <value>node02:50070</value>
	</property>
③补充:
Journalnode的配置
	<property>
	  <name>dfs.namenode.shared.edits.dir</name>
	  <value>qjournal://node01:8485;node02:8485;node03:8485/mycluster</value>
	</property>
	<property>
	  <name>dfs.journalnode.edits.dir</name>
	  <value>/var/sxt/hadoop/ha/jn</value>
	</property>
④补充:
故障切换的实现和代理
	<property>
		<name>dfs.client.failover.proxy.provider.mycluster</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	<property>
	  <name>dfs.ha.fencing.methods</name>
	  <value>sshfence</value>
	</property>
	<property>
	  <name>dfs.ha.fencing.ssh.private-key-files</name>
	  <value>/root/.ssh/id_dsa</value>
	</property>
⑤补充:
自动故障转移
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>

八、更改node01中core-site文件

cd /opt/sxt/hadoop-*/etc/hadoop
vi core-site.xml
①改:
第一个value
	hdfs://:9000变为hdfs://mycluster
		逻辑名称为入口
②改:
第二个value
	/var/sxt/hadoop/full变为/var/sxt/hadoop/ha
		full已经被使用过啦
③补充:
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>node02:2181,node03:2181,node04:2181</value>
	</property>
		指定zookeeper列表

九、分发

scp hdfs-site.xml core-site.xml node02:`pwd`
scp hdfs-site.xml core-site.xml node03:`pwd`
scp hdfs-site.xml core-site.xml node04:`pwd`

十、部署

1.启动
	node01:hadoop-daemon.sh start journalnode
	node02:hadoop-daemon.sh start journalnode
	node03:hadoop-daemon.sh start journalnode
2.验证后格式化
	node01:
		jps     有journalNode则成功
		hdfs namenode -format   格式化,有successfully则成功
3.启动后同步
	node01:
		hadoop-daemon.sh start namenode    使用jps可以看到namenode则成功
	node02:
		hdfs namenode --help  最后一个单词不会写,以此来查询
		hdfs namenode -bootstrapStandby
	node01:
		hdfs zkfc -formatZK   有successfully create ……
	node04:
		zkCli.sh  找zk的客户端
		ls /      有hadoop-ha
		ls /hadoop-ha  有mycluster,再下面就是空的啦
	node01:
		start-dfs.sh   启动
	node04:
		ls /hadoop-ha/mycluster    现在有东西啦
		get /hadoop-ha/mycluster/Active……Lock   
			取东西,有点乱码没关系,第一行可以看到node01,所以其就是主
			浏览器进入“node01:50070”是“active”;
			浏览器进入“node02:50070”是“standby”。

十一、模拟验证ha模式的能力

1.在node01中杀死NameNode
	jps
	kill -9 "namenode的进程号"
2.验证
	①浏览器:
		node01:50070崩溃,node02:50070仍然正常
	②node04:
		get /hadoop-ha/mycluster/Active……Lock 
		第一行的变为node02
3.恢复namenode
	hadoop-daemon.sh start namenode
	后果:
		node01:50070成为standby
		node02:50070不受影响
4.在node02中杀死DFSZFailoverController
	kill -9 "其进程号"
	后果:
		node01:50070变为active
		node02:50070变为standby
5.被杀死节点就超时过期啦
	node02:hadoop-daemon.sh start zkfc
	node01:kill -9 "ZKFC其进程号"
		浏览器中node01:50070和node02:50070(active和standby)就会切换
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hao难懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值