IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ZooKeeper安装及简单操作 -> 正文阅读

[大数据]ZooKeeper安装及简单操作

ZooKeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper包含一个简单的原语集, [1] 提供Java和C的接口。

官网:https://zookeeper.apache.org

ZooKeeper安装

安装环境:

1、系统:CentOS 7

2、Java环境:JDK8

zookeeper有单机、伪集群、集群三种部署方式,本例使用的zookeeper版本是:zookeeper-3.4.12

单机模式

下载ZooKeeper

地址:http://mirrors.hust.edu.cn/apache/zookeeper/

注意版本,启动报错可能找不到主类,可以下载源码版

解压

# 解压到local
tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz -C /usr/local/
# 更改文件夹名称
mv apache-zookeeper-3.5.8-bin zookeeper

解压后目录如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDNWPd07-1628336083589)(ZooKeeper%E5%AE%89%E8%A3%85%E5%8F%8A%E7%AE%80%E5%8D%95%E6%93%8D%E4%BD%9C.assets/1628330679064.png)]

创建zoo.cfg

进入conf目录,创建一个zookeeper的配置文件zoo.cfg,可复制conf/zoo_sample.cfg作为配置文件

cd conf
cp zoo_sample.cfg zoo.cfg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QvV7KWZt-1628336083592)(ZooKeeper%E5%AE%89%E8%A3%85%E5%8F%8A%E7%AE%80%E5%8D%95%E6%93%8D%E4%BD%9C.assets/1628331023759.png)]

配置文件说明

# The number of milliseconds of each tick
# tickTime:CS通信心跳数
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000

# The number of ticks that the initial
# synchronization phase can take
# initLimit:LF初始通信时限
# 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。
initLimit=5

# The number of ticks that can pass between
# sending a request and getting an acknowledgement
# syncLimit:LF同步通信时限
# 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2

# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
# dataDir:数据文件目录
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/data/soft/zookeeper-3.4.12/data


# dataLogDir:日志文件目录
# Zookeeper保存日志文件的目录。
dataLogDir=/data/soft/zookeeper-3.4.12/logs

# the port at which the clients will connect
# clientPort:客户端连接端口
# 客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181

# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir 保留数量3
autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature 清理时间间隔1小时
autopurge.purgeInterval=1


# 服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
# 这个配置项的书写格式比较特殊,规则如下:

# server.N=YYY:A:B

# 其中N表示服务器编号,YYY表示服务器的IP地址,A为LF通信端口,表示该服务器与集群中的leader交换的信息的端口。B为选举端口,表示选举新leader时服务器间相互通信的端口(当leader挂掉时,其余服务器会相互通信,选择出新的leader)。一般来说,集群中每个服务器的A端口都是一样,每个服务器的B端口也是一样。但是当所采用的为伪集群时,IP地址都一样,只能时A端口和B端口不一样。

启动

4、可以不修改zoo.cfg,默认配置就行,进去zookeeper安装目录,启动ZooKeeper

  • 启动命令:./bin/zkServer.sh start

  • 停止命令:./bin/zkServer.sh stop

  • 重启命令:./bin/zkServer.sh restart

  • 状态查看命令:./bin/zkServer.sh status

伪集群模式

伪集群模式就是在同一主机启动多个zookeeper并组成集群

在同一台主机上,通过复制得到三个zookeeper实例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EsJPirpG-1628336083595)(ZooKeeper%E5%AE%89%E8%A3%85%E5%8F%8A%E7%AE%80%E5%8D%95%E6%93%8D%E4%BD%9C.assets/1628332905014.png)]

对三个zookeeper节点进行配置

zookeeper1配置文件conf/zoo.cfg修改如下

zookeeper1配置文件conf/zoo.cfg修改如下:

注:server.1中的数字1为服务器的ID,需要与myid文件中的id一致,下一步将配置myid

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12181/data
dataLogDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12181/logs
clientPort=12181

server.1=127.0.0.1:12888:13888
server.2=127.0.0.1:14888:15888
server.3=127.0.0.1:16888:17888

注:server.1中的数字1为服务器的ID,需要与myid文件中的id一致,下一步将配置myid

zookeeper1的data/myid配置,使用如下命令(即新建一个文件data/myid,在其中添加内容为

echo '1' > data/myid

zookeeper2配置文件conf/zoo.cfg修改如下:

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12183/data
dataLogDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12183/logs
clientPort=12182

server.1=127.0.0.1:12888:13888
server.2=127.0.0.1:14888:15888
server.3=127.0.0.1:16888:17888

zookeeper2的data/myid配置,使用如下命令:

echo '2' > data/myid

zookeeper3配置文件conf/zoo.cfg修改如下:

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12183/data
dataLogDir=/data/soft/zookeeper-cluster/zookeeper-3.4.12-12183/logs
clientPort=12183

server.1=127.0.0.1:12888:13888
server.2=127.0.0.1:14888:15888
server.3=127.0.0.1:16888:17888

zookeeper3的data/myid配置,使用如下命令:

echo '3' > data/myid

分别启动三个zookeeper节点

./usr/local/zookeeper1/bin/zkServer.sh start
./usr/local/zookeeper2/bin/zkServer.sh start
./usr/local/zookeeper3/bin/zkServer.sh start

查看节点状态

./usr/local/zookeeper1/bin/zkServer.sh status
./usr/local/zookeeper2/bin/zkServer.sh status
./usr/local/zookeeper3/bin/zkServer.sh status

集群模式

集群模式就是在不同主机上安装zookeeper然后组成集群的模式,可以参考伪集群模式安装

在三台机器上分别部署1个ZooKeeper实例

zookeeper配置文件conf/zoo.cfg,如下

tickTime=2000
initLimit=5
syncLimit=2
dataDir=/data/soft/zookeeper-3.4.12/data
dataLogDir=/data/soft/zookeeper-3.4.12/logs
clientPort=2181

server.1=127.0.0.1:2888:3888
server.2=127.0.0.2:2888:3888
server.3=127.0.0.3:2888:3888

zookeeper的data/myid配置,使用如下命令:

echo '1' > data/myid

当然zookeeper1 对应的是 1,zookeeper2 对应的是 2,zookeeper3 对应的是 3

分别启动三个zookeeper节点,即完成对ZooKeeper集群的安装

ZooKeeper简单操作

下面操作在zookeeper单机模式下完成的

使用客户端连接ZooKeeper服务

./usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

./bin/zkCli.sh默认连接到本地127.0.0.1:2181

[root@localhost /]# ./usr/local/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181
Connecting to 127.0.0.1:2181
2021-08-07 19:24:33,897 [myid:] - INFO  [main:Environment@109] - Client environment:zookeeper.version=3.5.8-f439ca583e70862c3068a1f2a7d4d068eec33315, built on 05/04/2020 15:07 GMT
2021-08-07 19:24:33,903 [myid:] - INFO  [main:Environment@109] - Client environment:host.name=localhost
2021-08-07 19:24:33,903 [myid:] - INFO  [main:Environment@109] - Client environment:java.version=1.8.0_144
2021-08-07 19:24:33,905 [myid:] - INFO  [main:Environment@109] - Client environment:java.vendor=Oracle Corporation
2021-08-07 19:24:33,905 [myid:] - INFO  [main:Environment@109] - Client environment:java.home=/usr/local/java/jdk1.8.0_144/jre
2021-08-07 19:24:33,905 [myid:] - INFO  [main:Environment@109] - Client environment:java.class.path=/usr/local/zookeeper/bin/../zookeeper-server/target/classes:/usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../zookeeper-server/target/lib/*.jar:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/zookeeper-jute-3.5.8.jar:/usr/local/zookeeper/bin/../lib/zookeeper-3.5.8.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.7.25.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.7.25.jar:/usr/local/zookeeper/bin/../lib/netty-transport-native-unix-common-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-transport-native-epoll-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-transport-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-resolver-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-handler-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-common-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-codec-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/netty-buffer-4.1.48.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.17.jar:/usr/local/zookeeper/bin/../lib/json-simple-1.1.1.jar:/usr/local/zookeeper/bin/../lib/jline-2.11.jar:/usr/local/zookeeper/bin/../lib/jetty-util-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-servlet-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-server-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-security-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-io-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/jetty-http-9.4.24.v20191120.jar:/usr/local/zookeeper/bin/../lib/javax.servlet-api-3.1.0.jar:/usr/local/zookeeper/bin/../lib/jackson-databind-2.10.3.jar:/usr/local/zookeeper/bin/../lib/jackson-core-2.10.3.jar:/usr/local/zookeeper/bin/../lib/jackson-annotations-2.10.3.jar:/usr/local/zookeeper/bin/../lib/commons-cli-1.2.jar:/usr/local/zookeeper/bin/../lib/audience-annotations-0.5.0.jar:/usr/local/zookeeper/bin/../zookeeper-*.jar:/usr/local/zookeeper/bin/../zookeeper-server/src/main/resources/lib/*.jar:/usr/local/zookeeper/bin/../conf:.:/usr/local/java/jdk1.8.0_144/jre/lib/rt.jar:/usr/local/java/jdk1.8.0_144/lib/dt.jar:/usr/local/java/jdk1.8.0_144/lib/tools.jar
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:java.io.tmpdir=/tmp
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:java.compiler=<NA>
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:os.name=Linux
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:os.arch=amd64
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:os.version=3.10.0-1160.el7.x86_64
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:user.name=root
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:user.home=/root
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:user.dir=/
2021-08-07 19:24:33,906 [myid:] - INFO  [main:Environment@109] - Client environment:os.memory.free=13MB
2021-08-07 19:24:33,909 [myid:] - INFO  [main:Environment@109] - Client environment:os.memory.max=247MB
2021-08-07 19:24:33,909 [myid:] - INFO  [main:Environment@109] - Client environment:os.memory.total=15MB
2021-08-07 19:24:33,918 [myid:] - INFO  [main:ZooKeeper@868] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@6996db8
2021-08-07 19:24:33,926 [myid:] - INFO  [main:X509Util@79] - Setting -D jdk.tls.rejectClientInitiatedRenegotiation=true to disable client-initiated TLS renegotiation
2021-08-07 19:24:33,947 [myid:] - INFO  [main:ClientCnxnSocket@237] - jute.maxbuffer value is 4194304 Bytes
2021-08-07 19:24:33,960 [myid:] - INFO  [main:ClientCnxn@1653] - zookeeper.request.timeout value is 0. feature enabled=
2021-08-07 19:24:33,976 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1112] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2021-08-07 19:24:34,197 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@959] - Socket connection established, initiating session, client: /127.0.0.1:48252, server: localhost/127.0.0.1:2181
2021-08-07 19:24:34,309 [myid:127.0.0.1:2181] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1394] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x100008e5f4a0000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0]

使用 ls 命令来查看当前 ZooKeeper 中所包含的内容:

命令:ls /

[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]

创建了一个新的 znode 节点“ zk ”以及与它关联的字符串

命令:create /zk myData

[zk: 127.0.0.1:2181(CONNECTED) 2] create /zk myData 
Created /zk
[zk: 127.0.0.1:2181(CONNECTED) 3] ls /
[zk, zookeeper]

获取znode节点“ zk ”

命令:get /zk

[zk: 127.0.0.1:2181(CONNECTED) 4] get /zk 
myData

删除znode节点“ zk ”

命令:delete /zk

[zk: 127.0.0.1:2181(CONNECTED) 5] delete /zk  
[zk: 127.0.0.1:2181(CONNECTED) 6] 

退出客户端

命令quit

[zk: 127.0.0.1:2181(CONNECTED) 6] quit

WATCHER::

WatchedEvent state:Closed type:None path:null
2021-08-07 19:30:15,086 [myid:] - INFO  [main:ZooKeeper@1422] - Session: 0x100008e5f4a0001 closed
2021-08-07 19:30:15,087 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@524] - EventThread shut down for session: 0x100008e5f4a0001

原文

【ZooKeeper】ZooKeeper安装及简单操作 - H__D - 博客园 (cnblogs.com)

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:24:53  更:2021-08-08 11:24:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 19:24:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码