一、安装 JDK
1、下载 JDK 安装包。在 Oracle 官网上下载需要的 JDK 安装包,安装包可根据操作系统的不同而有所区别,下载后按照默认选项完成安装。
2、配置环境变量。安装完成 JDK 后需要配置相应的环境变量,将 JDK 的 bin 目录加入 PATH 环境变量中。
export JAVA_HOME=/usr/java/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
二、安装 Zookeeper
1、下载 Zookeeper 安装包。在 Apache 官网上下载需要的 Zookeeper 安装包,根据需要选择合适的版本。
2、解压安装包。将下载的安装包解压到指定目录下,例如:/usr/local/zookeeper。
tar -zxvf zookeeper-3.5.6.tar.gz -C /usr/local/zookeeper
3、配置环境变量。同样需要配置环境变量,将 Zookeeper 的 bin 目录加入 PATH 环境变量中。
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$ZOOKEEPER_HOME/bin:$PATH
三、配置 Zookeeper
1、复制配置文件。Zookeeper 需要有一个配置文件,可以在安装包的 conf 目录下找到 zoo_sample.cfg 文件,复制一份文件并改名为 zoo.cfg。
2、修改配置文件。可按需修改配置文件,例如修改 dataDir 选项指定数据存储目录。
cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg
vim $ZOOKEEPER_HOME/conf/zoo.cfg
四、启动 Zookeeper
1、启动 Zookeeper。可以通过命令启动 Zookeeper。
zkServer.sh start
2、查看状态。可以通过命令查看 Zookeeper 的状态。
zkServer.sh status
3、停止 Zookeeper。可以通过命令停止 Zookeeper。
zkServer.sh stop
五、Zookeeper 集群配置
1、复制配置文件。在安装多个 Zookeeper 服务器并组成集群的场景下,需要在每台服务器上都进行上述 Zookeeper 的安装和配置。在配置时只需按需修改配置文件。
2、修改配置文件。在多个服务器组成集群时,需要在配置文件中指定集群的信息。
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/zookeeper/data
clientPort=2181
server.1=zoo1:2888:3888
server.2=zoo2:2888:3888
server.3=zoo3:2888:3888
其中 server.x 表示 Zookeeper 服务器的编号,x 为数字,后面两个数字分别表示该 Zookeeper 服务器与其他服务器通信时监听的端口号。
3、启动 Zookeeper。启动多台服务器上的 Zookeeper,确保各个服务器中的配置文件都是一致的。
六、Zookeeper 客户端操作
1、命令行操作。可以通过命令行进行 Zookeeper 的各种操作。
zkCli.sh
2、Java API 操作。使用 Java 编写程序来操作 Zookeeper,使用 Zookeeper 的客户端库。
import org.apache.zookeeper.*;
public class ZookeeperTest {
public static void main(String[] args) throws Exception{
String connection = "zoo1:2181,zoo2:2181,zoo3:2181";
int sessionTimeout = 3000;
ZooKeeper zooKeeper = new ZooKeeper(connection, sessionTimeout, null);
String path = "/test";
byte[] data = "test".getBytes();
// 创建节点
zooKeeper.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// 获取节点数据
byte[] result = zooKeeper.getData(path, null, null);
String dataStr = new String(result);
System.out.println("node data:" + dataStr);
// 设置节点数据
byte[] newData = "newTest".getBytes();
zooKeeper.setData(path, newData, -1);
// 删除节点
zooKeeper.delete(path, -1);
}
}