本文续:https://yellow520.blog.youkuaiyun.com/article/details/110425351
已配置好网络、免密登录、Java和Hadoop环境
文章目录
1、ZooKeeper简介
- 开源的 分布式应用程序协调服务
- 个人理解:使用 分布式进程 来 统一 共享命名空间
用途
:配置维护、域名服务、分布式同步、组服务、Hadoop集群高可用…- 依赖Java环境
- 官网:https://zookeeper.apache.org
使用 分布式进程 来 统一 共享命名空间
一个领导者(leader),多个跟随者(follower)组成的集群
要求集群半数以上存活,建议集群机器数量为奇数
层次命名空间(Hierarchical Namespace)
节点类型:持久化节点、持久化带序节点、临时节点、临时带序节点
2、单机安装
可跳过此步直接到本文的【3、集群部署】
本文ZooKeeper版本:apache-zookeeper-3.5.7-bin.tar.gz
2.1、解压到指定目录并改名
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/
cd /opt
mv apache-zookeeper-3.5.7-bin zookeeper
chown -R root:root zookeeper
2.2、环境变量
echo "# Zookeeper" >> /etc/profile.d/custom.sh
echo "export ZOOKEEPER_HOME=/opt/zookeeper" >> /etc/profile.d/custom.sh
echo "export PATH=\$PATH:\$ZOOKEEPER_HOME/bin" >> /etc/profile.d/custom.sh
cat /etc/profile.d/custom.sh
source /etc/profile.d/custom.sh
2.3、配置
配置很多,主要改下数据存放路径
cd $ZOOKEEPER_HOME/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
# 数据存放路径,建议写绝对路径
dataDir=/opt/zookeeper/zkData
主要参数 | 说明 | 默认值 |
---|---|---|
tickTime | 每 tick 毫秒数 | 2000 |
initTick | 初始同步阶段可接受的最大 tick 数量 | 10 |
syncLimit | 同步可接受的最大 tick 数量 | 5 |
dataDir | 数据存放路径 | |
clientPort | 客户端的网络端口 | 2181 |
2.4、服务器启停
启动
zkServer.sh start
查看进程
jps -l | grep QuorumPeerMain
查看状态
zkServer.sh status
关闭
zkServer.sh stop
2.5、客户端操作
命令基本 | 功能描述 | 示例 |
---|---|---|
zkCli.sh | 开启客户端连到服务端 | |
ls | 查看子节点-w 监听子节点变化 | ls /zookeeper |
create | 创建节点-e 临时-s 带序 | create /a1 |
set | 设置节点值 | set /a1 aaa |
get | 获得节点值-w 监听节点值变化 | get /a1 |
stat | 查看节点状态 | stat /a1 |
delete | 删除节点 | delete /a1 |
deleteall | 递归删除节点 | deleteall /a1 |
quit | 退出客户端 |
create /a1 "value1"
create /a1/b1 "value11"
get -s /a1/b1
stat /a1/b1
deleteall /a1
quit
节点状态 | 说明 |
---|---|
cZxid | 创建节点的事务ID |
ctime | 创建时间 |
mZxid | 更新节点的事务ID |
mtime | 更新时间 |
pZxid | 最后更新的子节点事务ID |
cversion | 版本号,即修改次数 |
dataVersion | 数据版本号 |
aclVersion | 访问控制列表(ACL)的版本号? |
ephemeralOwner | 临时节点的物主 |
dataLength | 节点值长度 |
numChildren | 子节点数量 |
3、集群部署
3.1、解压到指定目录并改名
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/
cd /opt
mv apache-zookeeper-3.5.7-bin zookeeper
chown -R root:root zookeeper
3.2、集群环境变量
echo "# Zookeeper" >> /etc/profile.d/custom.sh
echo "export ZOOKEEPER_HOME=/opt/zookeeper" >> /etc/profile.d/custom.sh
echo "export PATH=\$PATH:\$ZOOKEEPER_HOME/bin" >> /etc/profile.d/custom.sh
cat /etc/profile.d/custom.sh
scp -r /etc/profile.d/custom.sh hadoop101:/etc/profile.d/
scp -r /etc/profile.d/custom.sh hadoop102:/etc/profile.d/
source /etc/profile.d/custom.sh
ssh hadoop101 "source /etc/profile.d/custom.sh"
ssh hadoop102 "source /etc/profile.d/custom.sh"
3.3、集群配置、文件分发
3.3.1、配置文件
cd $ZOOKEEPER_HOME/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
# 数据存放路径
dataDir=/opt/zookeeper/zkData
# 集群服务器配置
server.0=hadoop100:2888:3888
server.1=hadoop101:2888:3888
server.2=hadoop102:2888:3888
server配置 | 上面示例 | 说明 |
---|---|---|
第一个参数 | 0 | 第几号服务器 |
第二个参数 | hadoop100 | 服务器的地址 |
第三个参数 | 2888 | Follower 与Leader 交换信息的端口 |
第四个参数 | 3888 | 执行重新选举的端口,用于Leader 挂了的情况 |
3.3.2、文件分发
rsync -a /opt/zookeeper hadoop101:/opt/
rsync -a /opt/zookeeper hadoop102:/opt/
3.3.3、集群服务器编号
对应【3.3.1】的server配置
mkdir $ZOOKEEPER_HOME/zkData
ssh hadoop101 "mkdir $ZOOKEEPER_HOME/zkData"
ssh hadoop102 "mkdir $ZOOKEEPER_HOME/zkData"
echo 0 > $ZOOKEEPER_HOME/zkData/myid
ssh hadoop101 "echo 1 > $ZOOKEEPER_HOME/zkData/myid"
ssh hadoop102 "echo 2 > $ZOOKEEPER_HOME/zkData/myid"
3.4、集群启停
集群启动
zkServer.sh start
ssh hadoop101 "zkServer.sh start"
ssh hadoop102 "zkServer.sh start"
集群状态
zkServer.sh status
ssh hadoop101 "zkServer.sh status"
ssh hadoop102 "zkServer.sh status"
集群停止
zkServer.sh stop
ssh hadoop101 "zkServer.sh stop"
ssh hadoop102 "zkServer.sh stop"
4、附录
en | 🔉 | cn |
---|---|---|
ephemeral | /ɪˈfemərəl/ | adj. 短暂的;朝生暮死的 n. 只生存一天的事物 |
acknowledgement | /əkˈnɑːlɪdʒmənt/ | n. 承认;确认;感谢 |
synchronization | /ˌsɪŋkrənəˈzeɪʃn/ | n. [物] 同步;同时性 |
观察者模式(软件设计模式的一种)
Observer Mode
现实场景: 拍卖的时候,拍卖师观察最高标价,然后通知给其他竞价者竞价