乐趣区

关于clickhouse:技术分享-ClickHouseKeeper-初探

作者:陈宇

现任爱可生南区项目经理,负责我的项目整体品质、平安、进度、老本治理的责任保证体系。对开源技术执着,为客户负责,喜爱极限运动,足球。

本文起源:原创投稿

* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。


一、ClickHouse-Keeper 是什么:

ClickHouse 社区在 21.8 版本中开始引入了 ClickHouse-Keeper,直至 ClickHouse 21.12 发布公告提到 ClickHouse Keeper 性能根本实现。

ClickHouse Keeper 是 ZooKeeper 的替代品,与 ZooKeeper 不同,ClickHouse Keeper 是用 C++ 编写的,并应用 RAFT 算法实现,该算法容许对读写具备线性化能力,具备多种不同语言的开源实现。

二、Zookeeper 与 ClickHouse-Keeper 一些场景比照

为什么要引入 ClickHouse-Keeper 呢?次要是 ClickHouse 应用 Zookeeper 有着泛滥痛点:

  • 应用 java 开发
  • 运维不便
  • 要求独立部署
  • zxid overflow 问题
  • snapshot 和 log 没有通过压缩
  • 不反对读的线性一致性

而 ClickHouse-Keeper 存在着以下长处:

  • 应用 C++ 开发,技术栈与 ClickHouse 对立
  • 即可独立部署,又可集成到 ClickHouse 中
  • 没有 zxid overflow 问题
  • 读性能更好,写性能相当
  • 反对对 snapshot 和 log 的压缩和校验
  • 反对读写的线性一致性

三、配置形式

相较之前的集群配置,没有太大区别,而 ClickHouse-Keeper 仅当 <keeper_server> 标签存在于配置中时才会运行,配置模板如下:

四、启动命令

clickhouse-keeper --config /etc/your_path_to_config/config.xml

五、参数阐明

  • tcp_port:客户端连贯的端口(ZooKeeper 的默认值为 2181)
  • tcp_port_secure:用于客户端和 keeper-server 之间 SSL 连贯的平安端口
  • server_id:Keeper 集群的每个节点惟一 ID
  • log_storage_path:日志门路,最好将日志存储在 IO 性能强设施
  • snapshot_storage_path:快照门路

<keeper_server>.<coordination_settings> 局部

  • operation_timeout_ms:单个客户端操作超时配置
  • min_session_timeout_ms:客户端会话最小超时
  • session_timeout_ms:客户端会话的最大超时
  • dead_session_check_period_ms:查看过期会话并将其删除的频率
  • heart_beat_interval_ms:leader 向 follower 发送心跳的频率
  • election_timeout_lower_bound_ms:如果 follower 在此工夫距离内没有收到 leader 的心跳,则能够发动 leader 选举
  • rotate_log_storage_interval:在单个文件中存储多少日志记录
  • reserved_log_items:压缩前要存储多少日志记录
  • snapshot_distance:创立快照的频率
  • snapshots_to_keep:快照保留份数
  • max_requests_batch_size:在将申请发送到 RAFT 之前,申请中的最大批处理申请大小
  • raft_logs_level:raft 日志记录级别
  • auto_forwarding:容许将 follower 的写申请转发给 leader
  • shutdown_timeout:期待实现外部连贯并敞开的工夫

<keeper_server>.<raft_configuration> 局部

  • Id:集群的每个节点 ID
  • Hostname:服务器的主机名
  • Port:服务器监听端口

六、状态查看

6.1、ruok 次要用于诊断 Keeper 的客户端 / 服务器

命令如下:

echo ruok | nc 127.0.0.1 9181

胜利则返回 imok

6.2、确保 ClickHouse-Server 晓得 keeper 集群,咱们能够查问 system.zookeeper 表

注:输入以上信息代表装置胜利

七、如何迁徙 Zookeeper 至 ClicHouse-Keeper

既然 ClickHouse-Keeper 劣势这么显著,那么如何将 Zookeeper 中的数据迁徙到 ClickHouse-Keeper 中呢?官网提供了迁徙工具 ClickHouse-Keeper-Converter, 它可能将 Zookeeper 中的数据 dump 成 ClicHouse-Keeper 可能加载的 snapshot。

迁徙步骤如下

  • 进行所有 Zookeeper 节点
  • 找到 Zookeeper-leader 节点并再次进行 (这一步是为了让 leader 节点生成一份 snapshot)
  • 运行 ClickHouse-Keeper-Converter,生成 Keeper 的 snapshot 文件

命令参考:

clickhouse-keeper-converter --zookeeper-logs-dir /var/lib/zookeeper/version-2 --zookeeper-snapshots-dir /var/lib/zookeeper/version-2 --output-dir /path/to/clickhouse/keeper/snapshots
  • 启动 ClickHouse-Keeper,使其加载上一步中的 snapshot

参考文献:https://clickhouse.com/docs/e…

退出移动版