zookeeper版本选择与配置参数调优

这篇具有很好参考价值的文章主要介绍了zookeeper版本选择与配置参数调优。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、zookeeper 发布策略

Apache ZooKeeper 社区一次支持两个发布分支:stable和current。ZooKeeper的稳定版本是 3.7.x,当前版本是 3.8.x。一旦发布新的次要版本,稳定版本预计将很快退役,大约半年后将宣布为 End-of-Life。在半年的宽限期内,预计只会为该版本发布安全和关键修复程序。宣布 EoL 后,社区不再提供进一步的补丁。所有 ZooKeeper 版本都可以从官方 Apache 档案中访问。

Apache ZooKeeper 3.8.0(当前版本)

Apache ZooKeeper 3.7.1(最新稳定版)

Apache ZooKeeper 3.6.3 (稳定版)

Apache ZooKeeper 3.5.10(3.5 自 2022 年 6 月 1 日起停产)

详细见zookeeper官网:zookeeper 版本介绍

1、版本选择

  • zookeeper版本上面已经介绍了当前最新版本3.8.0,版本选择我们最好不要选择最新版本(除非是修复了以前版本特别严重的bug),也不要选择特别老版本;选择中间版本就好,如上例子我们就可以选择 ZooKeeper 3.6.3 (稳定版)

  • 为什么不选择3.7.1,主要原因有以下2点
    1、业务背景是因为Flink-1.15 放弃对 Zookeeper 3.4.x 的支持,前面测试的zookeeper都是基于zookeeper 3.6.x做测试,这个时候如果我们用的是3.7.x ,那么对于开发而言又要增加测试成本的工作量
    2、这边在了解版本的时候,看到网上基本都是用的 ZooKeeper 3.6.x

  • Apache ZooKeeper 3.6.3 (稳定版)发行说明

  • Apache ZooKeeper 3.6.3 (稳定版)下载包地址

  • zookeeper 各个版本分支详见:zookeeper branch doc

zookeeper版本,zookeeper,zookeeper,flink

2、Flink_ha 特性

Flink1.15 仅支持ZooKeeper3.5/3.6,不再支持3.4。

  • FLINK-25146 Drop support for Zookeeper 3.4
  • FLINK-1.15 Official website

zookeeper版本,zookeeper,zookeeper,flink
zookeeper版本,zookeeper,zookeeper,flink

其中的ZooKeeper Versions描述默认使用3.4,可以自行调整为3.5。从文档上来看自1.11版本就添加了这段描述,到目前最新稳定版本(1.16.0)依然是这么描述的。其实在1.15的 ReleaseNote 中明确写了,不再支持3.4,网上已经有人验证过任务直接报错

二、zookeeper 参数优化

  • 不要使用zk的默认配置,默认配置就是一个定时炸弹

  • 在网上也找了一些相关优化参数,无非就主要的那么几个,下面列出需要调整的相关参数

1. 配置snapshot文件清理策略
autopurge.purgeInterval=1
autopurge.purgeInterval:开启清理事务日志和快照文件的功能,单位是小时。默认是0,表示不开启自动清理功能。
autopurge.snapRetainCount=10
autopurge.snapRetainCount:指定了需要保留的文件数目。默认是保留3个。

2. 限制snapshot数量
snapCount=3000000
每snapCount次事务日志输出后,触发一次快照(snapshot)。 ZooKeeper会生成一个snapshot文件和事务日志文件。 默认是100000。

3. log和data数据分磁盘存储
dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。
dataLogDir:事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。

4. 调整JVM大小
ZooKeeper的JVM内存默认是根据操作系统本身内存大小的一个百分比预先分配的,所以这不是我们所需要的。

在./bin/zkEnv.sh文件中,有如下配置项:
if [ -f "$ZOOCFGDIR/java.env" ]
then
    . "$ZOOCFGDIR/java.env"
fi
我们在./conf/java.env文件中配置JVM的内存,增加如下配置:
export JAVA_HOME=/usr/local/java/jdk1.8.0_151
export JVMFLAGS="-Xms10240m -Xmx20480m $JVMFLAGS"
修改完成使用jmap -heap $pid来验证内存修改情况。

5. ZNode中可以存储数据星的最大值,默认值是1M。
jute.maxbuffer
修改jvm内存参数jute.maxbuffer大小调整到10M=10240KB=10485760Bytes
修改bin/zkServer.sh或者zkEnv.sh
JVMFLAGS="$JVMFLAGS -Djute.maxbuffer=10485760"
tickTime=2000
ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。 默认值2000,单位毫秒。

initLimit=10
Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,Flower在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。
initLimit=30000

syncLimit=5
在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果Leader发出心跳包在syncLimit之后,还没有从Flower那里收到响应,那么就认为这个Flower已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。

maxClientCnxns=500
单个客户端与单台服务器之间的连接数的限制,是ip级别的,默认是60,如果设置为0,那么表明不作任何限制。请注意这个限制的使用范围,仅仅是单台客户端机器与单台ZK服务器之间的连接数限制,不是针对指定客户端IP,也不是ZK集群的连接数限制,也不是单台ZK对所有客户端的连接数限制。

maxSessionTimeout=60000000
Session超时时间限制,如果客户端设置的超时时间不在这个范围,那么会被强制设置为最大或最小时间。默认的Session超时时间是在2 * tickTime ~ 20 * tickTime 这个范围

preAllocSize=131072
预先开辟磁盘空间,用于后续写入事务日志。默认是64M,每个事务日志大小就是64M。如果ZK的快照频率较大的话,建议适当减小这个参数。单位kb。

ZooKeeper的磁盘建议使用SSD,因为zookeeper必须具有低延迟磁盘写入才能以最佳方式执行。对zookeeper的每个请求都必须提交到仲裁中每个服务器上的磁盘上,然后才能读取结果。对于生产部署,建议在每个zookeeper服务器上使用大小至少为64 gb的专用ssd。

三、最终参数配置

# cat conf/zoo.cfg 
autopurge.purgeInterval=24
autopurge.snapRetainCount=5
clientPort=2181
dataDir=/data/zookeeper
dataLogDir=/log/zookeeper
initLimit=10
maxClientCnxns=500
maxSessionTimeout=60000
minSessionTimeout=4000
syncLimit=5
tickTime=2000
4lw.commands.whitelist=*
metricsProvider.exportJvmInfo=true
skipACL=yes
forceSync=no
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
metricsProvider.httpPort=7000
server.1=0.0.0.1:2888:3888
server.2=0.0.0.2:2888:3888
server.3=0.0.0.3:2888:3888

1、其他参数介绍

  • 主要配置上面已经介绍了,有几个参数没有介绍的,参数介绍如下
# 3.4.10 中的新功能,此属性包含逗号分隔的四字母单词命令列表。引入它是为了对 ZooKeeper 可以执行的命令集提供细粒度的控制
4lw.commands.whitelist=*
# 如果将此属性设置为true,则Prometheus.io将导出有关JVM的指标,默认值为true
metricsProvider.exportJvmInfo=true
# metric Prometheus 监控配置,如果用的其它监控方案这里可以注释掉
metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
# metric Prometheus 监控端口,同上,如果用的其它监控方案这里可以注释掉
metricsProvider.httpPort=7000

相关参考借鉴:
Flink_zookeeper版本
zookeeper配置优化文章来源地址https://www.toymoban.com/news/detail-781763.html

到了这里,关于zookeeper版本选择与配置参数调优的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink|《Flink 官方文档 - 部署 - 内存配置 - 调优指南 & 常见问题》学习笔记

    学习文档: 《Flink 官方文档 - 部署 - 内存配置 - 调优指南》 《Flink 官方文档 - 部署 - 内存配置 - 常见问题》 学习笔记如下: 独立部署模式(Standalone Deployment)下的内存配置 通常无需配置进程总内存,因为不管是 Flink 还是部署环境都不会对 JVM 开销进行限制,它只与机器的

    2024年02月19日
    浏览(42)
  • flink任务内存调优,TaskManager、JobManager内存配置

            Flink是基于java的JVM运行,拥有高效的数据处理能力,但是考虑到用户在 Flink 上运行的应用的多样性,尽管flink框架已经为所有配置项提供合理的默认值,仍无法满足所有情况下的需求。 为了给用户生产提供最大化的价值, Flink 允许用户在整体上以及细粒度上对集

    2024年02月06日
    浏览(47)
  • CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败

    CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn不能正常启动,而在CHD Web页面,flink日志报错提示不明确,不能定位具体错误。CM WEB启动失败错误日志如下图所示: CM查看完成错误日志 CM管理页面查看异常日志,始终不能定位启动异常原因,此时查看flink详情启动日志,日志文

    2024年02月03日
    浏览(52)
  • JVM——配置常用参数,GC调优策略

    Java内存区域常见配置参数概览 堆参数; 回收器参数; 项目中常用配置; 常用组合; Java内存区域常见配置参数概览 堆参数 回收器参数 如上表所示,目前 主要有串行、并行和并发三种 ,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种。并行

    2024年02月12日
    浏览(41)
  • 大数据Flink(四十九):框架版本介绍和编程语言选择

    文章目录 框架版本介绍和编程语言选择 一、框架版本介绍 二、编程语言选择

    2024年02月15日
    浏览(51)
  • SpringBoot+内置Tomcat配置,参数调优,最大并发量,最大连接数

    SpringBoot开发最大的好处是简化配置,内置了Tomcat, 在SpringBoot2.0.x版本中内置Tomcat版本是8.5.x,SpringBoot内置Tomcat的默认设置中,Tomcat的等待队列长度默认是100,Tomcat的最小工作线程数默认分配10,Tomcat的最大线程数是200,最大连接数是10000,至于最大并发量和最大连接数,常常理

    2024年02月09日
    浏览(42)
  • Spark参数配置和调优,Spark-SQL、Config

    一、Hive-SQL / Spark-SQL参数配置和调优 二、shell脚本spark-submit参数配置 三、sparkSession中配置参数

    2024年02月13日
    浏览(47)
  • 【ZooKeeper高手实战】ZooKeeper 集群读写性能及生产环境参数配置

    🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注:【11来了】),及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景 、 中间件系列笔记 和 编程高频电子书 ! 文章导读地址:点击查看文章导读!

    2024年02月21日
    浏览(41)
  • TOMCAT部署及优化(Tomcat配置文件参数优化,Java虚拟机(JVM)调优)

    TOMCAT tomcat :是一个开放源代码的web应用服务器,基于java代码开发的。也可以理解为tomacat就是处理动态请求和基于java代码的页面开发。可以在html当中写入java代码,tomcat可以解析html页面当中的java,执行动态请求,动态页面。 tomcat是机制存在一些问题,如果不对tomcat进行优化

    2024年02月13日
    浏览(31)
  • 11、Flink配置flink-conf.yaml详细说明(HA配置、checkpoint、web、安全、zookeeper、historyserver、workers、zoo.cfg)

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年02月11日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包