栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

08、Hadoop框架HDFS HA 的高可用

08、Hadoop框架HDFS HA 的高可用

文章目录

Hadoop框架HDFS HA 的高可用

hdfs的HA (高可用)HA的failover原理HDFS的federation

federation架构图-1federation架构图-2 搭建HDFS HA 高可用

1、关闭防火墙2、时间同步3、免密(远程执行命令)4、修改Hadoop配置文件5、启动zookeeper 三台都需要启动6、删除Hadoop数据存储目录下的文件 每个节点都需要删除7、启动JN 存储hdfs元数据8、格式化 在一台NN上执行,这里选择master9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node110、格式化ZK 在master上面执行11、启动hdfs集群,在master上执行12、在IDEA中安装zookeeper插件13、master、node1 访问web ui 50070端口

Hadoop框架HDFS HA 的高可用 hdfs的HA (高可用)

zk:指zookeeper,负责协调,监控

HA的failover原理

HDFS的HA,指的是在一个集群中存在两个NameNode,分别运行在独立的物理节点上。在任何时间点,只有一个NameNodes是处于Active状态,另一种是在Standby状态。 Active NameNode负责所有的客户端的操作,而Standby NameNode用来同步Active NameNode的状态信息,以提供快速的故障恢复能力。为了保证Active NN与Standby NN节点状态同步,即元数据保持一致。除了DataNode需要向两个NN发送block位置信息外,还构建了一组独立的守护进程”JournalNodes”,用来同步Edits信息。当Active NN执行任何有关命名空间的修改,它需要持久化到一半以上的JournalNodes上。而Standby NN负责观察JNs的变化,读取从Active NN发送过来的Edits信息,并更新自己内部的命名空间。一旦ActiveNN遇到错误,Standby NN需要保证从JNs中读出了全部的Edits,然后切换成Active状态。

使用HA的时候,不能启动SecondaryNameNode,会出错。

HDFS的federation

HDFS Federation设计可解决单一命名空间存在的以下几个问题:

1、 HDFS集群扩展性。多个NameNode分管一部分目录,使得一个集群可以扩展到更多节点,不再像1.0中那样由于内存的限制制约文件存储数目。2、性能更高效。多个NameNode管理不同的数据,且同时对外提供服务,将为用户提供更高的读写吞吐率。3、良好的隔离性。用户可根据需要将不同业务数据交由不同NameNode管理,这样不同业务之间影响很小。 federation架构图-1 federation架构图-2


搭建HDFS HA 高可用
节点zkNNDNRMNMJNZKFC
master11111
node11111111
node21111
1、关闭防火墙
service firewalld stop
2、时间同步
#查看3台系统时间是否一致
date

#时间同步
yum install ntp
ntpdate -u s2c.time.edu.cn

#或者
date -s 20180503
3、免密(远程执行命令)
#查看密钥是否已经配置

##查看.ssh目录下是否有私钥 id_rsa 和公钥 id_rsa.pub
cd~
cd .ssh/
ls

##使用ssh命令看是否可以免密远程登录
###master节点
ssh node1
ssh node2

### node1节点
ssh master
ssh node2

#### 退出
exit

#在两个主节点生成密钥文件
#master-->master,node1,node2
#node1-->master,node1,node2

ssh-keygen -t rsa
ssh-copy-id ip

查看密钥是否已经配置

可见node1节点没有配置免密

node2配置免密成功 4、修改Hadoop配置文件

# 先在master节点上将hdfs进程停掉
stop-dfs.sh

#切换到hadoop目录
cd /usr/local/soft/hadoop-2.7.6/etc/hadoop/

#停止HDFS集群
stop-dfs.sh

#修改配置文件 vim 命令
core-site.xml
hdfs-site.xml

#保存退出
esc
:wq

#同步到其它节点
#切换到hadoop目录
cd /usr/local/soft/hadoop-2.7.6/etc/hadoop/

scp ./* node1:`pwd`
scp ./* node2:`pwd`

在master节点上将hdfs进程停掉

修改core-site.xml配置文件

复制粘贴替换掉即可








	
		fs.defaultFS
		hdfs://cluster
	
	
		hadoop.tmp.dir
		/usr/local/soft/hadoop-2.7.6/tmp
	
	
		fs.trash.interval
		1440
	
	
	      ha.zookeeper.quorum
	      master:2181,node1:2181,node2:2181
	

修改hdfs-site.xml配置文件

复制粘贴替换掉即可










dfs.namenode.name.dir
/usr/local/soft/hadoop-2.7.6/data/namenode




dfs.datanode.data.dir
/usr/local/soft/hadoop-2.7.6/data/datanode




dfs.replication
1




dfs.permissions.enabled
false




dfs.webhdfs.enabled
true





dfs.nameservices
cluster




dfs.ha.namenodes.cluster
nn1,nn2




dfs.namenode.rpc-address.cluster.nn1
master:8020


dfs.namenode.rpc-address.cluster.nn2
node1:8020




dfs.namenode.http-address.cluster.nn1
master:50070


dfs.namenode.http-address.cluster.nn2
node1:50070




dfs.namenode.shared.edits.dir
qjournal://master:8485;node1:8485;node2:8485/cluster




dfs.journalnode.edits.dir
/usr/local/soft/hadoop-2.7.6/data/journal




dfs.client.failover.proxy.provider.cluster
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider




dfs.ha.fencing.methods

sshfence
shell(/bin/true)





dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa



  
dfs.ha.automatic-failover.enabled
true


5、启动zookeeper 三台都需要启动

利用XShell撰写窗口发送到全部回话

zkServer.sh start
zkServer.sh status
6、删除Hadoop数据存储目录下的文件 每个节点都需要删除
rm -rf /usr/local/soft/hadoop-2.7.6/tmp
7、启动JN 存储hdfs元数据

JournalNode负责同步NameNode元数据

#三台JN上执行 启动命令
/usr/local/soft/hadoop-2.7.6/sbin/hadoop-daemon.sh start journalnode

#jps查看三台JournalNode是否启动
jps
8、格式化 在一台NN上执行,这里选择master

警告!这里使用格式化命令如果失败,恢复快照重写搭建一定是配置文件上出了问题!
只能格式化一次,不能格式化第二次

#格式化
hdfs namenode -format

#启动当前的NN
hadoop-daemon.sh start namenode

格式化成功会在data目录下生成一个namenode/current目录 9、执行同步 没有格式化的NN上执行 在另外一个namenode上面执行 这里选择node1

/usr/local/soft/hadoop-2.7.6/bin/hdfs namenode -bootstrapStandby
10、格式化ZK 在master上面执行

!!一定要先 把zk集群正常 启动起来

/usr/local/soft/hadoop-2.7.6/bin/hdfs zkfc -formatZK
#启动node1的zk服务
zkCli.sh -server node1:2181

ls /
ls /hadoop-ha/cluster

这里多了一个hadoop-ha/cluster目录

11、启动hdfs集群,在master上执行
start-dfs.sh

这个时候再启动node1的ZK

#启动node1的zk服务
zkCli.sh -server node1:2181
12、在IDEA中安装zookeeper插件
File->Settings->Plugins->搜索zookeeper

重启IDEA

开启集群

查看 13、master、node1 访问web ui 50070端口

master:50070

active状态

node1:50070

standby状态

此时node1里没有文件

杀死master的NameNode进程

kill -9 27880

此时node1就变成了active状态了 (高可用)


到底啦!觉得靓仔的文章对你学习Hadoop有所帮助的话,一波三连吧!q(≧▽≦q)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/733999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号