一、概念简介; 分布式协调服务,为别的分布式程序服务 1.提供数据保管 2.提供节点监听 3.服务器主从选举场景
底层:采集状态数据(描述信息)
为用户程序提供数据节点监听的服务。
应用场景:
二:集群搭建:(最小3台)(集群结构)zookeeper ,conf,myid
三:zookeeper的命令行客户端及znode数据结构类型监听等功能
ephemeral 断开连接自己删除 如:-e 短暂节点 persistence SEQUE create -e /test create /test 888 create -s /teast/aa 999 zkServer.sh start zkCli.sh -server min1:2181 help查看基本命令的使用。
四:zookeeper 集群自动启动脚本及export变量作用域的解析
原理:ssh 运程登陆。 ssh min2 mkdir /root/min2
命令: ssh min2 /usr/local/zookeeper-3.4.6/bin/zkServer.sh start 无效(此shell与登陆上的shell二个独立shell,此shell没有JAVA_HOME变量,窗口登陆会自动执行环境变量的初始化,ssh,需要手动启动souce 环境变量文档。/etc/profile) 原因:需要环境变量 echo $JAVA_HOME
变量:
例如:
定义一个变量如: a=1,写一个sell脚本echo a,执行结果,无结果。在命令行调用echo a,显示1。 原因:脚本执行时在另外一个bash里。当前界面命令是此脚本的父进程。 (此脚本)子进程看不见父进程(当前命令界面)。 只对自己所在的shell 进程生效 命令pstree pstree - display a tree of processes
定义一个变量如: a=1,写一个sell脚本echo a,执行结果,结果1.在命令行调用echo a,显示1。原因:作用范围:会对自己所在的当前shell进程及其子进程生效
export:写一个脚本用一个export 定义一个变量,作用范围:只在当前进程及其子进程。父进程无法访问。
souce 作用:会把我当前定义在脚本文件里的变量,放在当前shell 里面。
echo “start zkSever…” for i in 1 2 3 do ssh min$i “source /etc/profile;/usr/local/zookeeper-3.4.6/bin/zkServer.sh start” done
在root目录下: 配置免密码登陆 /root/bin/startzk.sh ssh-keygen ssh-copy-id min2
实验命令的使用
我的三台主机配置zookeeper 集群自动启动脚本 Hadoop 用户 /etc/profile 文件:
编写 Startzk.sh脚本 放在 pwd /usr/local/zookeeper-3.4.6/bin 目录下: Chmod +x startzk.sh Vim startzk.sh 运行 startzk.sk Hadoop 配置了免密码登陆。
echo “start zkSever…” for i in 1 2 3 do ssh min$i “source /etc/profile;/usr/local/zookeeper-3.4.6/bin/zkServer.sh start” done 类似可以创建一个stopzk.sh
在集群大的情况下工作量就减少了。。。成功。