首页 > 其他分享 >kafka 磁盘迁移

kafka 磁盘迁移

时间:2023-05-15 22:24:36浏览次数:27  
标签:logs -- kafka topic sh 磁盘 迁移

磁盘迁移

背景介绍:Kafka搭建时,配置的磁盘过大,成本过高,所以需要迁移到小容量磁盘

原kakfa配置:

  • log.dirs=/data1/kafka/var/kafka-logs/1,/data2/kafka/var/kafka-logs/1 (kafka磁盘可以支持多磁盘配置,提高吞吐量)
  • log.retention.hours=168

修改后的kafka配置:

  • log.dirs=/data3/kafka-logs,/data4/kafka-logs
  • log.retention.hours=72

1.修改topic存储时间

适量减少topic存储时间,可以加快迁移节奏,如果本身日志量不大,不超过100G,则没必要执行此步骤

并且可以预估出调整后的磁盘占用大小

# 这种属于临时配置,不需要重启kafka,此修改会提交到zk中,kakfa会优先读取zk中的配置
# retention.ms=21600000 表示此设置topic 数据保存的时间,单位:毫秒,21600000 = 1000*60*60*6 = 6 小时
# 线上可以提前写好 sh脚本,批量处理topic
sh /home/hadoop/kafka_2.11-0.9.0.1/bin/kafka-configs.sh  --zookeeper {zk配置地址} --alter --add-config 'retention.ms=21600000' --entity-type topics --entity-name {topic_name}

观察kafkaServer.out日志,正常broker每5分钟触发一次删除任务,等看到日志中出现 ...delete...日志,并且观察磁盘文件大小,已经变成预估空间大小,则说明已经删除完成

2.停止kafka服务

./bin/kafka-server-stop.sh stop

观察日志,出现 shutdown complete字样的日志时,并且使用 jps -m 命令,找不到kafka的进程之后,表示停止完成

3.执行数据拷贝

mkdir -p /data3/kafka-logs
mkdir -p /data4/kafka-logs
mkdir -p /home/hadoop/kafka_2.11-0.9.0.1/logs

# 注意使用异步拷贝,防止当前shell窗口过期
nohup cp -r /data1/kafka/var/kafka-logs/1/* /data3/kafka-logs/ &
nohup cp -r /data2/kafka/var/kafka-logs/1/* /data4/kafka-logs/ &
# 后续可以使用此命令,查看是否拷贝完成
ps -ef | grep kafka-logs
df -h

当观察到 新旧磁盘空间大小一致,且 ps -ef | grep kafka-logs 没有进程之后,说明拷贝完成

# 拷贝完成后,修改原目录名称
mv /data1/kafka /data1/kafka_bak
mv /data2/kafka /data2/kafka_bak

4.修改配置

# 修改kafka 配置文件
vim /home/hadoop/kafka_2.11-0.9.0.1/config/server.properties

# 找到下面配置,并更改
log.dirs=/data3/kafka-logs,/data4/kafka-logs
log.retention.hours=72

# 修改gc日志配置,默认的会一直打印gc日志
vim /home/hadoop/kafka_2.11-0.9.0.1/bin/kafka-run-class.sh
# 找到下面配置,并更改
KAFKA_GC_LOG_OPTS=" "

5.启动kafka服务

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

# 观察日志:查看到启动完成,并且 集群中没有未同步副本时,说明此kafka已经完全启动
tail -f ./logs/kafkaServer.out

# 观察旧的磁盘目录下,没有新文件产生,说明迁移成功
ls -lrth /data1
ls -lrth /data2

6.恢复topic存储时间

千万不要忘了这一步。。。同样写脚本,处理所有topic

sh ./bin/kafka-configs.sh  --zookeeper {zk配置地址} --alter --delete-config 'retention.ms' --entity-type topics --entity-name {topic_name}

备注:

  • 为什么要拷贝磁盘文件,而不是直接修改配置,重启kafka?
    • 如果新的broker启动,加入集群,需要同步topic的数据;同步过程中,会占满带宽或磁盘IO,如果数据量过大,同步时间过长,会造成kakfa长时间不可用,线上数据淤积,影响业务
    • kakfa会在数据磁盘下生成:recovery-point-offset-checkpointreplication-offset-checkpoint这俩文件,会记录当前磁盘下topic数据存储offset信息,拷贝过去之后会根据这俩文件同步数据,不会造成数据错乱问题
    • 所以拷贝磁盘数据在数据量较大时,会是较优的方案

标签:logs,--,kafka,topic,sh,磁盘,迁移
From: https://www.cnblogs.com/lalala1/p/17403317.html

相关文章

  • WM_大屏实时计算深度剖析 flink写es kafka cannal配置 暂时没用
    第1章大屏实时计算深度剖析学习目标目标1:了解实时计算的应用场景目标2:实时流计算的快速入门(Flink的入门使用)目标3:Flink接入技术体系的剖析(hdfs,jdbc,kafka,socket)目标4:Flink数据处理引擎的实战(采用双十一大屏,热销数据统计,区域分类统计,cep复杂事件的处理)目标5:实时......
  • Kafka 高可靠高性能原理探究
    引言在探究Kafka核心知识之前,我们先思考一个问题:什么场景会促使我们使用Kafka? 说到这里,我们头脑中或多或少会蹦出异步解耦和削峰填谷等字样,是的,这就是Kafka最重要的落地场景。异步解耦:同步调用转换成异步消息通知,实现生产者和消费者的解耦。想象一个场景,在商品交易......
  • Newtonsoft.Json 迁移到 System.Text.Json
    从Newtonsoft.Json迁移到System.Text.Json 一.写在前面System.Text.Json是.NETCore3及以上版本内置的Json序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了各种问题,是时候考虑使用System.Text.Json了。本文将从使用......
  • Linux安装KafKa
    Linux安装KafKa​ 官方下载地址:http://kafka.apache.org/downloads.html​ 解压安装包tar-zxvfkafka_2.12-3.3.2.tgz​ 修改配置文件vimserver.properties#broker的全局唯一编号,不能重复,只能是数字broker.id=0#kafka运行日志(数据)存放的路径,路径不需要提前创......
  • 如何在虚拟机下的ubuntu制作磁盘阵列以及对几种磁盘阵列的解释
    一、磁盘阵列的分类raid0:一块硬盘及以上优点:数据读取快缺点:没有冗余能力,硬盘损坏,数据丢失raid1:至少两块硬盘优点:数据安全强,一块硬盘运行,另外一块硬盘做镜像备份数据。一块坏了,另外一块硬盘也有完整的数据,保障运行。缺点:做raid1之后硬盘使用率为50%.raid5:至少三块硬盘优点......
  • 第五章 输入输出系统 5.8 磁盘存储器的性能和调度
    一、磁盘性能简述  1.数据组织和格式物理地址形式:磁道号(柱面号)——磁头号——扇区信息记录在磁道上,多个盘片,正反两面都用来记录信息,每面一个磁头磁道从外缘,以“0”开始编号,往里面递增。所有盘面中处于同一磁道号上的所有磁道组成一个柱面每个扇区大小为600字节(数据512字......
  • 迁移到 Gradle 7.x 使用 Version Catalogs 管理依赖
    一、根目录下build.gradle变更变更前:buildscript{ext.kotlin_version='1.5.0'repository{repository{mavenCentral()jcenter()}dependencies{classpath'com.android.tools.build:gradle:4.0.2'......
  • Ubuntu22.04 将EFI启动分区迁移到另一块硬盘
    机器上有两块硬盘,一块已经安装了Win10,另一块新装Ubuntu22.04,在新硬盘上划分分区的时候,有分出256M给BOOTEFI,但是安装的时候没注意,启动分区不知道怎的跑到Windows所在的硬盘上了记录一下将/boot/efi分区迁移至Ubuntu所在硬盘,并创建Grub的记录.预留的boot......
  • 用扩展的方式在 PHP 中使用 Kafka
    前言:    由于之前在PHP中使用Kafka是通过composer包的方式,由于 nmred/kafka-php很久没有维护,并且网上相关问题的文章也比较少。所以我这次换成PHP扩展 RdKafka继续使用,主要介绍扩展安装和这种方式的基本操作。 安装:1.下载2.目录    由于php-rdkafka......
  • 浅谈Kafka2.8+在Windows下的搭建与使用
    前言:    周末空闲时间无意找到了一套个性化推荐的源码,整体项目运用了SSH,HDFS,Flume,Hive,Kafka,Spark,Scala等。运行时,本来通过spark计算业务埋点数据时,却发现本地没有Kafka。因为我一直也没使用过Kafka,所以也作为新人,浅谈以下Kafka的环境安装与分别在PHP,Scala中的使用。 对比:1......