zookeeper 分布式的协调服务,apache顶级开源项目之一
A zookeeper本身为分布式的程序(只要半数zk节点存活,就能正常服务)
B 提供主从协调,服务节点动态上下线,统一配置管理,分布式共享锁,统一名称服务。。。
核心提供 读/写 程序提交的数据,并为用户程序提供数据节点监听服务
zk适合奇数台机器上!一般3台或5台...
集群脚本
集群启动关闭脚本(前提是配置了ssh免密码登录)
#!/bin/bash
NODENAME_ARR=('hadoop@eds2' 'hadoop@eds3' 'hadoop@eds4')
echo '' >> zk.log
if [ $# -eq 0 ];then
echo -e "请带参数执行脚本.如:\n sh startAllZK.sh start \n sh startAllZK.sh stop\n"
exit 1
fi
if [ $1 == 'start' ] ;then
for nodename in ${NODENAME_ARR[@]}
do echo -n "${nodename}正在启动..."
echo ${nodename} >> zk.log
ssh $nodename 'export BASH_ENV=/etc/profile;/opt/zookeeper/bin/zkServer.sh start' >>zk.log 2>&1
if [ $? == 0 ];then
echo " ${nodename}启动成功"
else
echo " ${nodename}启动"
fi
sleep 1
done
elif [ $1 == 'stop' ] ;then
for nodename in ${NODENAME_ARR[@]}
do
echo -n "${nodename}正在关闭..."
echo ${nodename} >> zk.log
ssh $nodename 'export BASH_ENV=/etc/profile;/opt/zookeeper/bin/zkServer.sh stop' >>zk.log 2>&1
if [ $? == 0 ];then
echo " ${nodename}关闭成功"
else
echo " ${nodename}关闭失败"
fi
# sleep 1
done
fi
zk结构
1、层次化的目录结构,命名符合常规文件系统规范(见下图)
2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点,下一页详细讲解)
4、客户端应用可以在节点上设置监视器(后续详细讲解)
节点类型
1 Znode有两种类型
短暂(ephemeral) 断开连接后,数据自己就删除了(短暂的[ɪ'fem(ə)r(ə)l; -'fiːm-])
持久(persistent) 断开连接不删除
2 Znode有四种形式的目录节点(默认persistent)(sequential连续的 [sɪ'kwenʃ(ə)l])
persistent #
persistent_sequential
ephemeral #临时节点,当会话失效节点会被删除,没有子节点,可以在持久节点下创建临时节点
ephemeral_sequential #临时有序节点,常用语分布式锁
创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个递增的序号
常用命令
http://blog.csdn.net/hylexus/article/details/53352789#25-quota
#ls / #显示/ 根目录
# create /nodename nodevalue #创建节点
# get /nodename #获取节点信息
#delete /nodename #删除节点(删除空节点)
#rmr /nodename #循环删除(有子节点也会删除)
create [-s] [-e] path data acl # -e临时ephemeral,-s sequential
#更多命令使用help查看
zookeeper分布式锁实现基本原理