本文共 2024 字,大约阅读时间需要 6 分钟。
背景介绍:在Kafka搭建过程中,由于磁盘配置过大且成本高昂,需要对现有磁盘进行迁移,以转移到小容量磁盘。
原Kafka配置:
修改后配置:
此外,可以预估调整后的磁盘占用大小。
此类临时配置无需重启Kafka,修改会提交至Zookeeper,Kafka会优先读取Zookeeper中的配置。retention.ms=21600000(表示保存时间,单位毫秒,等于6小时),可以通过以下命令批量处理多个topic:
sh ./bin/kafka-configs.sh --zookeeper {zk配置地址} --alter --add-config 'retention.ms=21600000' --entity-type topics --entity-name {topic_name} 观察kafkaServer.out日志,正常broker每5分钟触发一次删除任务,等看到包含"...delete..."的日志,并且磁盘文件大小已接近预估值时,说明删除完成。
./bin/kafka-server-stop.sh stop
观察日志,出现"shutdown complete"字样时,使用jps -m命令确认Kafka进程已停止。
mkdir -p /data3/kafka-logsmkdir -p /data4/kafka-logsmkdir -p /home/hadoop/kafka_2.11-0.9.0.1/logsnohup 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-logsdf -h
当旧磁盘空间大小与新磁盘一致且没有kafka-logs进程时,拷贝完成。
拷贝完成后,将原目录归档:
mv /data1/kafka /data1/kafka_bakmv /data2/kafka /data2/kafka_bak
vim /home/hadoop/kafka_2.11-0.9.0.1/config/server.properties
将以下配置修改为:
log.dirs=/data3/kafka-logs,/data4/kafka-logslog.retention.hours=72
若需要,调整gc日志配置:
vim /home/hadoop/kafka_2.11-0.9.0.1/bin/kafka-run-class.sh
将KAFKA_GC_LOG_OPTS设置为空:
KAFKA_GC_LOG_OPTS=""
./bin/kafka-server-start.sh -daemon config/server.properties
观察日志,查看启动完成信息,并确认集群中无未同步副本。
验证迁移完成:
tail -f ./logs/kafkaServer.outls -lrth /data1ls -lrth /data2
sh ./bin/kafka-configs.sh --zookeeper {zk配置地址} --alter --delete-config 'retention.ms' --entity-type topics --entity-name {topic_name} 备注:为什么要拷贝磁盘文件而不是直接修改配置重启Kafka?
转载地址:http://dqefk.baihongyu.com/