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

2023-10-27

一、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

在这里插入图片描述

2、Flink_ha 特性

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

在这里插入图片描述
在这里插入图片描述

其中的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配置优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zookeeper版本选择与配置参数调优 的相关文章

  • [1143]Flink的Checkpoint和Savepoint

    文章目录 Flink的Checkpoint和Savepoint介绍 第一部分 Flink的Checkpoint 1 Flink Checkpoint原理介绍 2 Checkpoint的简单设置 3 保存多个Checkpoint 4 从Che
  • zookeeper学习网址

    1 分布式服务框架 ZooKeeper 管理分布式环境中的数据 http www ibm com developerworks cn opensource os cn ZooKeeper 2 ZooKeeper系列讲座 很全面 http w
  • Zookeeper 基本操作

    Zookeeper 基本操作 文章目录 Zookeeper 基本操作 1 查看zk的运行状态 2 客户端连接zk 3 ls 查看 4 get 获取节点数据和更新信息 5 stat 获得节点的更新信息 6 ls2 ls命令和stat命令的整合
  • Flink checkPoint和SavePoint

    savepoint和checkpoint都是flink为容错提供的强大功能特性 能够自动或手动保存job的运行状态 两者区别 checkpoint 应用定时触发 用户保存状态 会过期 内部应用失败重启的时候启用 但是手动cancel时 会删
  • 【源码改造】Flink-jdbc-connector源码简析+改造支持谓词下推

    一 需求背景分析 flink sql在维表关联时 会有一个场景 当右表的数据量比较大且有些数据虽然符合join条件 但其实对于下游来说数据可能没用 这样就浪费了flink的计算资源 且拉低了数据处理能力 如果在join前就把维表的数据进一步
  • USDP使用笔记(八)Flink配置及简单测试

    Flink配置Flink配置及简单测试 上一篇 https lizhiyong blog csdn net article details 123560865 将USDP2 0自带的Flink更换为Flink1 14后 还没有来得及改配置
  • zookeeper3.4.6集群部署

    在安装Zookeeper之前 首先需要确保的就是主机名称 可选 hosts都已经更改 并且JDK成功安装 1 安装Zookeeper 使用命令 tar zxvf 命令将gz压缩文件解压 笔者Zookeeper的安装目录为 home Hado
  • Flink设置Source数据源使用kafka获取数据

    流处理说明 有边界的流bounded stream 批数据 无边界的流unbounded stream 真正的流数据 Source 基于集合 package com pzb source import org apache flink ap
  • Dubbo源码分析-服务导出源码解析(三)

    在这个版本中dubbo会通过注解 PostConstruct把ServiceBean实例放到ConfigManager中 public abstract class AbstractConfig implements Serializabl
  • flink学习42:tableAPI的join、union、排序、插入操作

    连接 内连接 外连接 集合操作 union 获取交集 获取差集 in 操作 排序操作 插入操作
  • zookeeper学习草稿纸

    指令重排序 https baijiahao baidu com s id 1701616903992143186 wfr spider for pc JVM JDK JRE 静态方法为什么不能调用非静态成员 重载和重写的区别 可变参数 基本
  • Centos7下安装Zookeeper

    一 配置java环境 1 安装JDK yum install y java 1 8 0 openjdk 2 查看版本 root zookeeper java version openjdk version 1 8 0 362 OpenJDK
  • Apache Flink Checkpoint 应用实践

    Checkpoint 与 state 的关系 Checkpoint 是从 source 触发到下游所有节点完成的一次全局操作 下图可以有一个对 Checkpoint 的直观感受 红框里面可以看到一共触发了 569K 次 Checkpoint
  • [分布式] zookeeper集群与kafka集群

    目录 一 Zookeeper 概述 1 1 Zookeeper定义 1 2 Zookeeper 工作机制 1 3 Zookeeper 特点 1 4 Zookeeper 数据结构 1 5 Zookeeper 应用场景 1 6 Zookeepe
  • 【硬刚大数据之学习路线篇】2021年从零到大数据专家的学习指南(全面升级版)

    欢迎关注博客主页 https blog csdn net u013411339 本文由 王知无 原创 首发于 CSDN博客 本文首发CSDN论坛 未经过官方和本人允许 严禁转载 欢迎点赞 收藏 留言 欢迎留言交流 声明 本篇博客在我之前发表
  • 微服务框架

    微服务框架 1 SOA思想 面向服务的架构 SOA 是一个组件模型 它将应用程序的不同功能单元 称为服务 进行拆分 并通过这些服务之间定义良好的接口和协议联系起来 接口是采用中立的方式进行定义的 它应该独立于实现服务的硬件平台 操作系统和编
  • Flink_05_状态(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 状态 状态就是一块内存 一个变量 如果要访问历史窗口 或批次 的数据
  • SpringCloud使用Zookeeper作为服务注册发现中心

    本篇文章主要记录SpringCloud使用Zookeeper作为服务注册发现中心 通过服务提供者和消费者为例 来真正掌握zk注册中心 目录 一 搭建服务提供者 1 创建cloud provider payment8004项目 2 修改配置
  • 【flink番外篇】4、flink的sink(内置、mysql、kafka、redis、clickhouse、分布式缓存、广播变量)介绍及示例(8) - 完整版

    Flink 系列文章 一 Flink 专栏 Flink 专栏 系统介绍某一知识点 并辅以具体的示例进行说明 1 Flink 部署系列 本部分介绍Flink的部署 配置相关基础内容 2 Flink基础系列 本部分介绍Flink 的基础部分 比
  • 大数据毕设分享 flink大数据淘宝用户行为数据实时分析与可视化

    文章目录 0 前言 1 环境准备 1 1 flink 下载相关 jar 包 1 2 生成 kafka 数据 1 3 开发前的三个小 tip 2 flink sql 客户端编写运行 sql 2 1 创建 kafka 数据源表

随机推荐

  • 硬币组合问题python_关于硬币的python问题

    展开全部 coding utf8 import random def chkcoin acoin basecoin 1 5 10 25 flag False for bc in basecoin 62616964757a686964616f
  • php curl 带入cookie,PHP CURL中传递cookie的方法步骤

    curl的cookie怎么使用 新手都很头疼的 curl的参数太多了 其中cookie部分就涉及了4个 当然了 手册上明白写的curl的cookie是3个 但是嘛 不是还有个header的参数嘛 里面可以包含cookie curl非常的好用
  • chatgpt赋能python:Python文件转pyc文件详解

    Python文件转pyc文件详解 Python作为一门程力语言 在软件工程领域中独树一帜 但是Python解释器每次运行程序都会解释Python代码 这种运行方式会降低程序的运行速度 为了避免这种情况的发生 可以将Python文件编译成字节
  • air724UG + Luat玩转物联网(四) 定时器

    luat已经将定时器封装入sys模块 每创建一个任务就会消耗一个定时器 最大不能超过32个 一 luat定时器使用方法 1 sys timerStart fnc ms 开启一个定时器 参数 参数 释义 fnc fnc 定时器回调函数 ms
  • React项目 管理后台页面框架搭建

    使用 antd 这个框架搭建 使用 Layout 进行页面布局 在文件夹 component 创建一个新的组件 叫做Frame 然后里面在创建一个叫做index js 这是我们管理后台的一个大的布局结构 在index js 里添加代码 首先
  • 【拍照画面异常问题的 buffer dump和处理】

    当拍照遇到画面异常问题 建议先dump拍照对应的raw yuv和jpeg 一 Dump拍照对应的raw图 1 Non zsl拍照 Non zsl拍照会让P1node重新出raw图 而拍照会用到这些raw图中的imgo buffer 1 1
  • Pycharm设置终端自动进入当前python环境

    这里写自定义目录标题 设置Pycharm中的Powershell终端 powershell初始化 设置Pycharm中的Powershell终端 使用系统自带powershell的请忽略此步 在设置 工具 终端中设置默认powershell
  • 人生苦短,Python是岸——别了!Python之父!

    就在7月12日 著名的Python之父Guido van Rossum正式退出Python核心决策层 他在邮件里有点生气又有点伤心的写道 现在PEP 572已经完成 我不再想为一个PEP这么努力争取 而且还发现有这么多人鄙视我的决定 这个完
  • label+input 选择(优化多选按钮)及 input实现全选反选

    1 多选 选择之后不同的背景 input中 id和label中 for对应的值必须相同
  • Tomcat 8和10的安装和修改

    Tomcat10 jdk11没有jre目录了 tomcat安装后需要做一些修改 JAVA HOME usr local jdk11 JAVA BIN JAVA HOME bin export JAVA BIN JAVA HOME bin e
  • 全网最全系统学习爬虫教程,用爬虫进行数据分析(bs4,xpath,正则表达式)

    1 bs4解析基础 2 bs4案例 3 xpath解析基础 4 xpath解析案例 4k图片解析爬取 5 xpath解析案例 58二手房 6 xpath解析案例 爬取站长素材中免费简历模板 7 xpath解析案例 全国城市名称爬取 8 正则
  • jwt 非对称加密 密钥生成

    1 生成证书 有效期 100年 2 证书的名称 pubKey 3 证书生成需要的盐值 7018 z1 在java项目中使用rsa非得对称加密 只需要生成的 证书 pubKey jks以及生成的公钥 私钥一般用不到 如果加密和解密只需要公钥和
  • vs2017试用延长期已到_将Windows 7试用版从30天延长到120天

    vs2017试用延长期已到 Did you know that you can install Windows 7 without any license key and use it for 30 days What you might
  • STM32学习心得(二)点亮LED灯

    STM32学习心得 二 点亮LED灯 在创建好工程模板后 就可以开始真正进入STM32的学习 手下那当然是试着点亮一个LED灯 首先在USER目录下创建一个空文件夹 并命名为bsp led bsp的意思是板级支持包 即该代码仅支持这块板子
  • Git搭建个人博客

    Git搭建个人博客 很多人都有写博客的习惯 所以我这篇博客就讲解一下如何在git上搭建一个个人的博客 环境 搭建个人博客需要配置配置一下环境 这里我是使用win10来搭建的 因为像这种配置或者搭建东西 一般都是win系统比较麻烦 在mac和
  • Sqlilabs-16

    相较于第 15 关 单引号变成了双引号 括号 查列 uname admin and if ascii substr select group concat table name from information schema tables
  • bash: /root/.bashrc: 行 102: 语法错误: 未预期的文件结尾

    问题描述 解决方案 在添加内容的末尾加上fi
  • idea使用sonarlint插件

    JDH 邹老板 一 插件安装 由于是内网环境 根据自己安装的idea版本 去官网下载离线插件包进行离线安装 我的idea是IntelliJ IDEA 2020 2 3 安装包如下 二 sonarlint服务器配置 插件安装完成之后 在设置里
  • YaRN: Efficient Context Window Extension of Large Language Models

    本文是LLM系列文章 针对 YaRN Efficient Context Window Extension of Large Language Models 的翻译 YaRN 大型语言模型的有效上下文窗口扩展 摘要 1 引言 2 背景和相关
  • zookeeper版本选择与配置参数调优

    一 zookeeper 发布策略 Apache ZooKeeper 社区一次支持两个发布分支 stable和current ZooKeeper的稳定版本是 3 7 x 当前版本是 3 8 x 一旦发布新的次要版本 稳定版本预计将很快退役 大