反馈已提交

网络繁忙

部署Kafka:KRaft模式

  • 文档创建者:Wendy123456
  • 历史版本:17
  • 最近更新:Wendy123456 于 2024-11-06
  • 1. 概述

    FineDataLink 支持使用 Kafka 作为数据同步的中间件,暂存来源数据库中的数据,便于目标数据库写入数据,实现实时数据同步。

    本文介绍 Kafka KRaft 模式的部署方案,以便后续配置数据管道任务

    注:此示例为 Linux 系统下部署 Kafka;Kafka 建议安装在 Linux 系统中(Kafka 也支持安装在 Windows 中,但性能会受到限制,仅做演示使用,不建议用于生产环境 )。

    2. KRaft 模式与 ZooKeeper 模式说明

    在 Kafka 2.8 之前,Kafka 重度依赖 ZooKeeper 集群做元数据管理、Controller 的选举等(统称为共识服务);当 ZooKeeper 集群性能发生抖动时,Kafka 的性能也会受到很大的影响。如下图所示:

    注1:Kafka ZooKeeper 模式的部署方案请参见:部署Kafka:ZooKeeper模式

    注2:Kafka KRaft 模式、ZooKeeper 模式的详细介绍可自行百度。

    1711442396732232.png

    在 Kafka 2.8 之后,引入了基于 Raft 协议的 KRaft 模式,支持取消对 ZooKeeper 的依赖。在 2022 年 10 月 Kafka 发布 3.3.1 版本之后,将名为 KRaft 的新元数据管理方案标记为生产环境可用。

    在此模式下,一部分 Kafka Broker 被指定为 Controller ,另一部分则为 Broker 。这些 Controller 的作用就是以前由 ZooKeeper 提供的共识服务,并且所有的元数据都将存储在 Kafka 主题中并在内部进行管理。

    1711442806500311.png

    KRaft 模式相比 ZooKeeper 模式的主要优势如下:

    • 运维简化:只需部署 Kafka,不再依赖 ZooKeeper。

    • 横向扩展能力提升:Kafka 集群能支持的 Partition 数量是衡量其横向扩展能力的重要指标。此前这个值受 ZooKeeper 与 Controller 之间传递元数据的限制,只能到十万量级,而 KRaft 模式不需要这种传递, 因此可以提升到百万量级。

    • 元数据传播提效:元数据通过 Kafka 的 Topic 管理,并利用 Topic 的生产消费传播,集成性更好的同时也提升了一些底层实现的性能。

    3. 前提条件

    1)Kafka 运行需要 Java 环境,因此需要确保服务器中已经指定了可使用的 Java 环境(指定 JAVA_HOME环境变量)。注1:jdk版本不能低于 1.8。

    注2:若 kafka 和 FineDataLink 部署在同一个服务器上,可以使用同一个 JAVA 环境,操作步骤如下:

    在 etc/profile 文件中配置 Java环境,增加如下内容:

    注:下面代码中%FineDataLink%替换为实际 FineDataLink 安装路径。

    export JAVA_HOME=%FineDataLink%/jdk/jre
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar

    并执行source /etc/profile保存,使修改立即生效。

    2)Kafka 性能可参考官方文档: Apache Kafka

    4. 操作步骤

    4.1 下载安装包

    点击下载安装包:Kafka 安装包

    注:Kafka KRaft 模式在生产环境使用限制:Kafka 3.3.1 之后的版本

    4.2 解压安装包

    1)上传 kafka 安装包。本文示例中,将安装包上传到/opt/kafka下。如下图所示:

    21.png

    2)使用命令 tar zxvf kafka安装包文件名.tgz 解压安装包,例如如下图所示:

    1711453671151178.png

    注:(请勿直接在windows环境下解压后,进行文件上传,这样会造成文件被修改,常见报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录)

    4.3 修改 Kafka 存储数据的目录

    注:用户也可忽略本节内容,使用默认的数据存储位置。

    Kafka 在使用时需要存储数据到指定文件夹,因此需要新建文件夹用来存放暂存在 Kafka 中的数据。

    示例在 /data 目录下新建:kafka-logs,如下图所示:

    注:建议文件夹新建在服务器中磁盘空间相对大的位置,文件夹位置可自行设置。

    1711454203993698.png

    打开/opt/kafka/kafka_2.13-3.5.1/config/kraft目录下的 server.properties 文件(/opt/kafka/kafka_2.13-3.5.1为 kafka 安装目录),找到 log.dirs=,修改数据存储位置,把等于号后边的值替换为创建好的给 Kafka 保存数据的目录,修改之后保存。如下图所示:

    注:此处路径为示例,用户可根据实际情况设置保存数据目录位置。

    1711454387650393.png

    4.4 修改 listeners

    如果 kafka 和 FDL 不在同一个服务器,则需要修改 server.properties 文件的 listeners。详情请参见:增加配置

     kafka 和 FDL 在同一个服务器,忽略本节内容。

    注:Kafka 配置中无需指定 topic,FineDataLink 会自动创建,每张表对应一个topic。

    4.5 格式化 kafka 数据存储目录

    1)生成存储目录唯一ID

    进入 kafka 安装目录的 bin 目录下,执行下面语句生成存储目录唯一ID。

    ./kafka-storage.sh  random-uuid

    1711454837947803.png

    2)格式化存储目录

    QRgd035ZQEqI9RPltqK7cg 为上一步生成的存储目录唯一ID;/opt/kafka/kafka_2.13-3.5.1 为 kafka 安装目录。用户根据实际情况修改。

    ./kafka-storage.sh  format -t QRgd035ZQEqI9RPltqK7cg   -c  /opt/kafka/kafka_2.13-3.5.1/config/kraft/server.properties

    26.png

    4.6 启动 kafka

    1)进入 Kafka 安装目录的 bin 目录下,执行下面语句启动 Kafka:

    ./kafka-server-start.sh -daemon ../config/kraft/server.properties

    1711455254457188.png

    2)使用ps -ef|grep kafka语句查看 Kafka 是否启动成功。 

    28.png

    5. 后续步骤

    安装部署好 Kafka 后,即可在 FinedataLink 中配置传输队列

    6. 运维命令

    重启 Kafka 前,需要先手动暂停管道任务,重启 Kafka 后,再手动重启管道任务,否则管道任务会有异常。

    /opt/kafka/kafka_2.13-3.5.1为 kafka 安装目录,用户根据实际情况修改语句。

    1)可使用cat /opt/kafka/kafka_2.13-3.5.1/logs/server.log语句,查看 Kafka 服务日志,服务日志记录了 Kafka 服务组件的启动、关闭、状态变化等信息。

    2)可使用cat /opt/kafka/kafka_2.13-3.5.1/logs/controller.log语句,看 Kafka 控制器日志,控制器日志记录了 Kafka 控制器的运行状态和处理事务的信息,如选举新控制器、分配副本等。





    附件列表


    主题: 数据管道
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持