Zookeeper

Linux下下载Zookeeper

wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

Zookeeper配置文件

dataDir=’/XX/XX’(数据的存放目录)

server.1=192.168.xx.xx(或者主机名):2888(leader与follower通信端口) :3888(投票端口)
server.2=192.168.xx.xx(或者主机名):2888(leader与follower通信端口) :3888(投票端口)
server.3=192.168.xx.xx(或者主机名):2888(leader与follower通信端口) :3888(投票端口)

需要把myid记录到数据文件中

文件名字就是myid,内容是1;

scp -r apps/ root@mini2: /root

启动zookeeper

bin/zkServer.sh start
bin/zkServer.sh status:查看状态

zookeeper客户端工具

bin/zkcli.sh
connect mini2:2181 连接到mini2主机上

Zookeeper数据结构

类似于文件系统的树;

/下面默认有1个zookeeper
//创建节点
create /app1 “this is app1 servers parent“
节点除了数据之外,还有cZxid,ctime等

//-s 创建带序号
create -s /test/aa 999
created /test/aa00000000

create -s /test/bb 999
created /test/aa00000001

get /app1 watch:打出app1的数据,然后提供观测功能(获取数据的时候设置监听)
比如在另一个客户端上更改了app1的数据,那么此处显示:
WATCHER::
watchedEvent state:SyncConnected type:NodeDataChanged path:/app1

get 就是监听这个节点的数据,如果子节点发生变化,是不会检测到响应
如果监听字节点,那么 ls /app1 watch , 那么字节点发生变化会响应

集群启动zookeeper

某个脚本执行的时候在bash进程中,可能看不到当前定义的变量。
如果export a=1

//s1.sh
#!/bin/bash
b=2
echo "in s1,b="$b
echo "in s1,a="$a
./s2.sh
//s2.sh
#!/bin/bash
b=2
echo "in s2,a="$a
echo "in s2,b="$b

./s1.sh
in s1,b=2
in s1,a=1
in s2,b=
in s1,a=1

如果在s1.sh中export b=2,那么s2可以正常打印

如果是export,那么当前进程及其子进程中会有。

#!/bin/bash
echo "start zkServer..."
for i in 1 2 3
do
ssh hdp-node-0$i "source /etc/profile;/home/hadoop/apps/zookeeper/bin/zkServer.sh start"
done

在mini1里source一下,那么在ssh mini2启动发现成功

用户登录 的时候,会执行一个脚本 .bash_profile

#.bash_profile
if  [-f ~/.bashrc ]; then
    .  ~/.bashrc   //.代表source
fi
#.bashrc
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

if  [-f /etc/bashrc ]; then
    .  /etc/bashrc   //.代表source
fi

/etc/profile中也会有

在script.sh中定义的变量,在当前登录的shell进程中,source script.sh时候,脚本中定义的变量也会进入到当前登录进程中。

scp-copy-id mini1
scp-copy-id mini2
scp-copy-id mini3
那么mini1免密登录到mini2和mini3

./zkCli.sh:使用客户端命令行连接到zookeeper,默认连接到本机。如果连接到其他机器,那么继续使用connect centos:2181(客户端连接默认端口)

动态增加机器的时候

zookeeper集群
需求:客户端能够实时洞察到服务器上下线的变化。

启动时候去zookeeper注册,比如写到 /server/server-01 mini1
第二台来的时候 server-02 mini2
第三台来的时候 server-03 mini3
注册的数据节点必须是临时节点(序列化的临时节点),
客户端启动的时候去getchildren,获取当前在线服务器列表,并且注册监听,
如果有服务器下线,那么zookeeper就会通知到客户端

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值