一、Zookeeper的简介
1、概念
- Zookeeper是一个分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题。
- 可以基于ZooKeeper实现诸如:数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能
2、Zookeeper在Hadoop中的应用
- 在Hadoop中,ZooKeeper主要用于实现HA(Hive Availability)可以理解为维护集群的可用性。
- 管理Hadoop集群中的NameNode,HBase中HBaseMaster的选举,Servers之间状态同步等。
- 单指HBase中ZooKeeper实例负责的工作就有:存储HBase的Schema、实时监控HRegionServer、存储所有Region的寻址入口、当然还有最常见的功能就是保证HBase集群中只有一个Master。
- 在YARN中,ZooKeepr还用来存储应用的运行状态。
二、Zookeeper的安装
1、下载Zookeeper安装包
- 在官网上下载Zookeeper安装包点击下载
- 或者直接使用命令
wget https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz
2、解压
#-C 后面写你要安装的路径
[hadoop@master ~]$ sudo tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /usr/local/
#切换工作路径
[hadoop@master ~]$ cd /usr/local/
#更改文件夹名
[hadoop@master local]$ sudo mv apache-zookeeper-3.6.3-bin/ zookeeper
3、修改配置文件
自带的zoo_sample.cfg是配置文件的模板,需要的是zoo.cfg
将 zoo_sample.cfg文件拷贝为zoo.cfg
拷贝配置文件
[hadoop@master zookeeper]$ cd conf/
[hadoop@master conf]$ ls
#zoo_sample.cfg是配置文件的模板,需要的是zoo.cfg
configuration.xsl log4j.properties zoo_sample.cfg
#将 zoo_sample.cfg文件拷贝为zoo.cfg
[hadoop@master conf]$ cp zoo_sample.cfg zoo.cfg
修改文件
[hadoop@master conf]$ sudo vi zoo.cfg
#修改这一行,zkdatas路径是需要自己创建的
dataDir=/usr/local/zookeeper/zkdatas
#取消注释这两行
autopurge.snapRetainCount=3 #保留多少个快照
autopurge.purgeInterval=1 #多长时间清理一次日志
#添加下面的几行
server.1=master:2888:3888 #server.1 就是myid为1的服务器,端口是固定的
server.2=slave1:2888:3888 #我的主机名是做过映射的也可以写ip地址
server.3=slave2:2888:3888 #server.1=xx.xx.xx.xx:2888:3888
创建文件夹
[hadoop@master conf]$ cd ..
[hadoop@master zookeeper]$ sudo mkdir zkdatas
添加myid配置
[hadoop@master zkdatas]$ sudo echo 1 > myid
#也可以这样写
[hadoop@master zkdatas]$ sudo vi myid
1
#保存退出
[hadoop@master zkdatas]$ cat myid
1
4、分发Zookeeper文件
#切换到zookeeper安装的目录
[hadoop@master zkdatas]$ cd /usr/local/
[hadoop@master local]$ sudo scp -r /usr/local/zookeeper root@slave1:/usr/local/
切换主机slave1,修改myid文件
[hadoop@slave1 ~]$ cd /usr/local/zookeeper/zkdatas/
[hadoop@slave1 zkdatas]$ sudo vi myid
2
#保存退出
将另外的主机也按照相同的方法修改即可
5、启动Zookeeper
在zookeeper的安装文件下有bin目录,有个zkServer.sh 运行跟参数start
[hadoop@master bin]$ ./zkServer.sh start
如果找不到java环境变量查看文件夹权限是否是hadoop
修改文件权限
[hadoop@master ~]$ chown -R hadoop:hadoop /usr/local/zookeeper
6、查看zookeeper状态
jps查看进程
[hadoop@slave2 zookeeper]$ jps
1671 DataNode
2056 Jps
2012 QuorumPeerMain #有这个进程就说明启动成功了
查看主机角色
[hadoop@slave2 zookeeper]$ ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
安装成功
注意
安装完成后查看防火墙是否关闭
systemctl status firewalld
systemctl stop firewalld