zoukankan      html  css  js  c++  java
  • Kafka在线修改topic日志保存时长(不停机,不重启)

    使用场景:

    某些时候,当几个topic生产者突发产生大量消息时,会造成磁盘空间紧张,这时,除了增加磁盘,另一个方法就是修改配置文件,将日志的保存时间修改小一点,但这两种方案,都必须停机和重启kafka,显然,这在生产集群上,是不能这么处理的。这里,可以通过在线修改单个topic的配置,以覆盖默认配置,临时解决磁盘空间紧张的问题。

    优点:在线修改,不需要重启和停机

    修改后,新的配置会在 log.retention.check.interval.ms 时间内被检查并应用到整个集群,该值在 kafka/config/server.properties 中配置,默认为 300 秒
    注意,修改前日志保存时长,必然会清除掉超过这个时长的旧数据,在生产环境中,这需要和业务方共同评估和确认

    下面以修改名为 my_test_topic 的 topic 为例

    #1,查看当前topic配置

    ./kafka-topics.sh --describe --topic my_test_topic --zookeeper test.myzk.com:2181/kafkacluster

    #2,调整topic配置

    ./kafka-topics.sh --topic my_test_topic --zookeeper test.myzk.com:2181/kafkacluster --alter --config retention.ms=43200000
    # 时长毫秒 43200000ms=12h

    #3,检查修改的配置是否生效

    同第一步,查看输出的第一行,类似如下:
    Topic:__consumer_offsets PartitionCount:50 ReplicationFactor:3 Configs:segment.bytes=104857600,delete.retention.ms=86400000,retention.ms=43200000,cleanup.policy=delete,compression.type=producer

    其他可选的调整参数:

    segment.bytes=104857600       #单个日志文件大小,默认1G
    delete.retention.ms=86400000 #对于压缩日志保留的最长时间,也是客户端消费消息的最长时间,与retention.ms的区别在于一个控制未压缩数据,一个控制压缩后的数据
    retention.ms=86400000            #如果使用“delete”的retention策略,这项配置就是指删除日志前日志保存的时间
    cleanup.policy=delete               #默认方式 delete 将会丢弃旧的部分 compact 将会进行日志压缩
    compression.type=producer     #压缩类型,此配置接受标准压缩编码 gzip, snappy, lz4 ,另外接受 uncompressed 相当于不压缩, producer 意味着压缩类型由producer指定
    ./zookeeper-shell.sh test.myzk.com:2181/kafkacluster  #查看zk中kafka集群信息

    另外,需要注意的是:
    kafka 0.10+ 之后的版本,有个 __consumer_offsets 的topic也是需要清理的,需要定期注意该topic占用空间情况

    生产环境kafka内核优化参数

    vm.min_free_kbytes=4194304 即4G 系统16C32G内存
    cat /proc/sys/vm/min_free_kbytes
    该值表示强制Linux VM最低保留多少空闲内存 单位Kbytes
    当可用内存低于该参数时,系统开始回收cache内存,以释放内存,直到可用内存大于该值
    目的:让系统更加积极的回收cache内存

    vm.zone_reclaim_mode=1
    cat /proc/sys/vm/zone_reclaim_mode
    管理当一个内存区域zone内部的内存耗尽时,是从其内部进行内存回收还是可以从其他zone进行回收
    0 关闭zone_reclaim模式,允许从其他zone或NUMA节点回收内存[默认]
    1 打开zone_reclaim模式,这样内存回收只会发生在本地节点内
    2 在本地回收内存时,可以将cache中的脏数据写回硬盘,以回收内存
    4 可以用swap方式回收内存
    目的:限制内存回收不跨zone

    清空cache (可选)
    echo 1 > /proc/sys/vm/drop_caches

    生产集群参数参考
    zookeeper

    zoo.cfg 配置文件

    echo "1">/data/server/zkdata/myid
    ./zkServer.sh status

    zookeeper日志清理zookeeper日志清理
    ./zkCleanup.sh  /data/server/zookeeper/data -n 100
    ./zkCleanup.sh 参数1 -n 参数2
    参数1,zk data目录,即zoo.cfg文件中dataDir值
    参数2,保存最近的多少个快照
    kafka

    server.properties 配置文件

    在kafka启动脚本中,需要添加JMX的支持,方便在kafkamanager中查看到更加丰富的数据
    kafka-server-start.sh

    使用supervisor管理zookeeper和kafka
    kafka-manager

    项目地址:https://github.com/yahoo/kafka-manager

    让一般用户免密登录,且只有查看权限:
    修改conf/application.conf

    topic 操作
    Delete Topic 删除 topic
    Reassign Partitions 平衡集群负载
    Add Partitions 增加分区
    Update Config Topic 配置信息更新
    Manual Partition Assignments 手动为每个分区下的副本分配 broker
    Generate Partition Assignments 系统自动为每个分区下的副本分配 broker

    一般而言,手动调整、系统自动分配分区和添加分区之后,都需要调用 Reassign Partition

    转载请注明:轻风博客 » Kafka在线修改topic日志保存时长(不停机,不重启)

  • 相关阅读:
    IPhone手机页面中点击文本输入框,弹出键盘,网页会放大,如何解决
    JQuery让input从disabled变成enabled
    c# winform 获取当前程序运行根目录,winform 打开程序运行的文件夹
    如何让Snippet Compiler 2008 支持linq
    org.in2bits.MyXls.XlsDocument 生成excel文件 ; 如果想读取模板再另外生成的话,试试 NPOI
    Vue学习笔记八:v-for,v-if,v-show指令
    Vue学习笔记七:Vue中的样式
    Vue学习笔记六:v-model 数据双向绑定
    Vue学习笔记五:事件修饰符
    Vue学习笔记四:跑马灯效果
  • 原文地址:https://www.cnblogs.com/xingxiz/p/14085955.html
Copyright © 2011-2022 走看看