首页 理论教育 ZooKeeper分布式集群的部署优化方案

ZooKeeper分布式集群的部署优化方案

时间:2023-06-24 理论教育 版权反馈
【摘要】:鉴于ZooKeeper 本身的特点,服务器集群的节点数推荐设置为奇数台。ZooKeeper 的下载此处使用的是ZooKeeper 3.4.10 版本。解压安装将下载的文件解压并安装到ZooKeeper 的目录下,解压缩后的目录图如图5.7 所示。高级配置①dataLogDir:将事务日志存储在该路径下,这个日志存储的设备效率会影响ZooKeeper 的写吞吐量。③preAllocSize:默认值64 MB,以“KB”为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4 KB 时,就会又分配64 MB,如此循环。

ZooKeeper分布式集群的部署优化方案

鉴于ZooKeeper 本身的特点,服务器集群的节点数推荐设置为奇数台。这里规划为三台,分别为hadoop1、hadoop2 和hadoop3。

(1)ZooKeeper 的下载

此处使用的是ZooKeeper 3.4.10 版本。

(2)解压安装

将下载的文件解压并安装到ZooKeeper 的目录下,解压缩后的目录图如图5.7 所示。

[hadoop@hadoop1 ~]$tar -zxvf zookeeper-3.4.10.tar.gz -C apps/

图5.7 解压缩后目录图

(3)修改配置文件

找到并修改zoo.cfg 文件,参数如图5.8 所示。

图5.8 修改zoo.cfg 文件参数

(4)基本配置

①tickTime:心跳基本时间单位,毫秒级,ZK 基本上所有的时间都是这个时间的整数倍。

②initLimit:表示在Leader 选举结束后,Followers 与Leader 同步需要的时间,如果Followers比较多或Leader 的数据非常多时,同步时间相应可能会增加,则这个值也需要相应增加。当然,这个值也是Follower 和Observer 在开始同步Leader 的数据时的最大等待时间(setSoTimeout)。

③syncLimit:这时间容易与上面的时间混淆,它也表示Follower 和Observer 与Leader 交互时的最大等待时间,只不过是在与Leader 同步完毕之后,进入正常请求转发或ping 等消息交互时的超时时间。

④dataDir:内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。

⑤clientPort:配置ZK 监听客户端连接的端口,如图5.9 所示。

图5.9 中“server.1 =hadoop1:2888:3888”对应的格式:“server.serverid=host:tickpot:electionport”,其中的参数的意义如下:

①server:固定写法。

②serverid:每个服务器的指定ID(必须处于1 ~255,必须每一台机器不能重复)。

图5.9 配置ZK 监听客户端连接的端口

③host:主机名。

④tickpot:心跳通信端口。

⑤electionport:选举端口。

(5)高级配置

①dataLogDir:将事务日志存储在该路径下,这个日志存储的设备效率会影响ZooKeeper 的写吞吐量

②globalOutstandingLimit:(Java system property: ZooKeeper. globalOutstandingLimit)默认值是“1 000”,限定了所有连接到服务器但还没有返回响应的请求个数(所有客户端请求的总数,不是连接总数),这个参数是针对单台服务器而言的,设定太大可能会导致内存溢出。

③preAllocSize:(Java system property: ZooKeeper.preAllocSize)默认值64 MB,以“KB”为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4 KB 时,就会又分配64 MB,如此循环。

④maxClientCnxns:默认值是“10”,一个客户端能够连接同一个服务器的最大连接数,根据IP 来区分。如果设置为“0”,表示没有任何限制。设置该值是为了防止DoS 攻击。

⑤clientPortAddress:与clientPort 匹配,表示某个IP 地址,如果服务器有多个网络接口(多个IP 地址),如果没有设置这个属性,则clientPort 会绑定所有IP 地址,否则只绑定该设置的IP 地址。

⑥minSessionTimeout:最小的session Time 时间,默认值是2 个tick Time,客户端设置的session Time 如果小于这个值,则会被强制协调为这个最小值。

⑦maxSessionTimeout:最大的session Time 时间,默认值是20 个tick Time. ,客户端设置的session Time 如果大于这个值,则会被强制协调为这个最大值。

(6)集群配置选项

①electionAlg:领导选举算法,默认是“3”,“0”表示Leader 选举算法(基于UDP),“1”表示非授权快速选举算法(基于UDP),“2”表示授权快速选举算法(基于UDP),目前“1”和“2”算法都没有应用,不建议使用,“0”算法未来也可能会被淘汰,只保留“3”(Fast Leader Election)算法,因此,最好直接使用默认值。

③leaderServes:如果该值不是no,则表示该服务器作为Leader 时是需要接受客户端连接的。为了获得更高吞吐量,当服务器数有三台以上时,一般建议设置为“no”。(www.xing528.com)

④cnxTimeout:默认值是5 000,单位“ms”表示leaderelection 时打开连接的超时时间。

(7)分发

将配置文件分发到集群其他机器中:

然后到各个ZooKeeper 服务器节点,新建目录“dataDir = /home/hadoop/data/zkdata”,这个目录就是在“zoo. cfg”中配置的dataDir 的目录,建好之后,在里面新建一个文件,文件名为“myid”,里面存放的内容是服务器的ID,也就是“server.1 =hadoop01:2888:3888”当中的ID,为“1”,那么对应的每个服务器节点都应该作类似操作。

用服务器hadoop1 举例:

当以上所有步骤都完成时,意味着ZooKeeper 的配置文件相关的修改都完成。

(8)配置环境变量

找到.bashrc,并配置环境变量ZOOKEEPER_HOME 和PATH,如图5.10 所示。

修改完成后,保存退出,再执行命令“[hadoop@ hadoop1 ~]$source . bash”刷新. bash文件。

(9)验证

启动软件,并验证安装是否成功:

启动命令:zkServer.sh start

停止命令:zkServer.sh stop

查看状态命令:zkServer.sh status

注意:虽然在配置文件中写明了服务器的列表信息,但还是需要逐个启动每一台服务器,不是一键启动集群模式,每启动一台查看一下状态再启动下一台。

1)启动hadoop1

先启动,然后查看状态,这台机器是从属状态,状态展示如图5.11 所示。

图5.10 配置环境变量

图5.11 状态展示

2)启动hadoop2

先启动,然后查看状态,这台机器是领导状态,状态展示如图5.12 所示。

图5.12 状态展示

3)启动hadoop3

先启动,然后查看状态,这台机器是从属状态,状态展示如图5.13 所示。

图5.13 状态展示

(10)查看进程

3 台机器上都有QuorumPeerMain 进程。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈