1. 请先安装jdk和下载zookeeper。ssh免密登录请自行配置。大家可以到官网下载或我的网盘。
网盘地址:
共3台机器c0,c1,c2
192.168.132.148 c0
192.168.132.144 c1
192.168.132.149 c2
2. 上传到centos服务器上,我的路径是~/soft/download/文件夹下面。zookeeper-3.4.14,
并解压
tar -zxvf zookeeper-3.4.14.tar.gz
复制到指定目录: ~/soft/java/,我习惯安装程序放这个目录,大家可以用其它名称。
mv zookeeper-3.4.14 ~/soft/java/
3. 修改配置文件。增加ZK_HOME, 每台机器都需要修改。
vi /etc/profile
export ZK_HOME=/home/xiaozw/soft/java/zookeeper-3.4.14
export PATH=$PATH:${JAVA_PATH}:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZK_HOME/bin
刷新
source /etc/profile
修改zookeeper配置文件zoo.cfg,进入conf/目录下面。复制配置文件出来,并修改。
cp zoo_sample.cfg zoo.cfg
tickTime 心跳周期。
dataDir 数据目录。根据自己实际情况修改。我的目录:/home/xiaozw/soft/tmp/zookeeper
clientPort server供客户端连接端口。
在dataDir目录下新建myid文件,并写入0. 如果目录不存在,请先创建。
c0:
echo 0 > myid
c1:
echo 0 > myid
c2:
echo 0 > myid
server.0=c0:2888:3888
server.1=c1:2888:3888
server.2=c2:2888:3888
4. 启动zookeeper.
--启动zk需要每台机器都启动。
zkServer.sh start
--查看zk状态。
zkServer.sh status
先启动然后查看状态。
客户端程序使用。
zkCli.sh c1:2181
创建节点。
create /root helloworld
private static final String conString ="192.168.1.102:2181,192.168.1.103:2181,192.168.1.105:2181"; /** * 获取数据 * @throws Exception */ @Test public void test1() throws Exception{ ZooKeeper zk=new ZooKeeper(conString,2000,null); Stat stat=new Stat(); byte[] bytes= zk.getData("/root/s1",null,stat); System.out.println("返回:"+new String(bytes)); } /** * 创建路径 * @throws Exception */ @Test public void createPath() throws Exception{ ZooKeeper zk=new ZooKeeper(conString,2000,null); String path="/root/s7"; Stat stat=new Stat(); String re= zk.create(path,"s7_data".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.EPHEMERAL); System.out.println("返回:"+re); } /** * 删除路径 * @throws Exception */ @Test public void deletePath() throws Exception{ ZooKeeper zk=new ZooKeeper(conString,2000,null); String path="/root/s4"; zk.delete(path,0); System.out.println("返回:"); } /** * 设置数据 * @throws Exception */ @Test public void setData() throws Exception{ ZooKeeper zk=new ZooKeeper(conString,2000,null); String path="/root/s1"; Stat stat= zk.setData(path,"zzzzz".getBytes(),0); System.out.println("返回:"+stat); } /** * 获取children * @throws Exception */ @Test public void getChildren() throws Exception{ ZooKeeper zk=new ZooKeeper(conString,2000,null); String path="/root/s1"; List<String> list=zk.getChildren("/root",null); list.forEach(a->{ System.out.println("返回:"+a); }); }
网盘测试项目代码和配置下载:
链接:https://pan.baidu.com/s/11Bu9KoQ_1W_hacSjS2kkyw
提取码:3sa3