day05_Hadoop的HA机制及搭建Zookeeper(1)

参考链接:http://blog.csdn.net/liu812769634/article/details/53097268

1. hadoop1.0的架构

这里写图片描述

上图是我们之前学HDFS的结果,虽然可以保证保证元数据的可靠行,但是服务的可用性不高 一旦 NameNode宕机了 我们就不能对外提供服务了。

2. hadoop2.0 HA机制

为了提高服务器的可用性,社区演进出了HA机制

这里写图片描述

1. 启动两个NameNode 互为热备,避免一台NameNode宕机了,另一台可以对外提供服务
2. 为了保证两个NameNode的元数据保持一致  把NameNode的edits文件进行共享,两个NameNode共享同一个edits
3. 为了保证提供共享edits文件服务宕机,就把edits进行分布式部署,这个分布式服务叫qjournal,专门管理edits,依赖zookeeper实现
4. 为了保证可以感知到NameNode的状态,快速无缝的切换对外提供服务NameNode,专门有一个本机应用管理NameNode的状态,
    通知NameNode切换active/standby状态,叫zkfc 也是以来zookeeper实现
5. 为了防止NameNode状态切换时 发生 brain split现象,zfkc在切换NameNode之前,
    会发送一个指令杀死对方的进程,确认之前active的NameNode死后,再切换
6. 为了防止zkfc发送指令失败,我们还可以指定一个脚本,进行后续操作

两个这样的NameNode组成一个Fedration,我们hdfs访问的时候 是直接就访问的Federation


brain split现象: 一个NameNode假死后,zkfc通知另外一台NameNode切换成active状态,等之前NameNode结束假死之后,
                当前就会有两个active的NameNode 出现问题

3. 搭建ZooKeeper

下载:http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.11/zookeeper-3.4.11.tar.gz

解压到 /data下面

把 conf下的zoo_sample.cfg 拷贝一份 zoo.cfg

修改后的配置文件

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
## 修改这项  指定data文件夹到data的安装下   记得事先创建好目录
dataDir=/data/zookeeper-3.4.11/data    
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
# 指定集群的主机名。和 选举的端口     我这里打算3台机器  所以就写了三个
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
在/data/zookeeper-3.4.11/data 也就是 dataDir里面创建 一个文件 myid 内容 hadoop1写1, hadoop2写2, hadoop3写3


配置好三台机器后  启动,运行bin下面的   ./zkServer.sh start
[hadoop@hadoop1 bin]$ jps
5043 Jps
5015 QuorumPeerMain         --这个就是zookeeper
[hadoop@hadoop1 bin]$ netstat -nltp | grep 2181
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 :::2181                 :::*                    LISTEN      5015/java   

因为我们配置了三台 但是我们启动了一台 少于一半节点,是不会工作的, 通过./zkServer.sh status 查看状态

[hadoop@hadoop1 bin]$ ./zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.11/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

三台都启动之后 可以看到 hadoop2 被选举成leader

[hadoop@hadoop1 bin]$ ./zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower

[hadoop@hadoop2 bin]$ ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: leader

[hadoop@hadoop3 bin]$ ./zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /data/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值