У нас есть 3-узловый кластер Kafka.Для хранения данных у нас есть 2 смонтированных диска - /data/disk1
и /data/disk2
в каждом из 3
узлов.Значение log.dirs
в kafka.properties
:
log.dirs=/data/disk1/kafka-logs,/data/disk2/kafka-logs
Так получилось, что на одном из узлов Node1
раздел диска /data/disk2/kafka-logs
заполнен 100%
заполнен.
Причина, по которой это произошло, заключается в том, что мы воспроизводили данные из filebeat в тему kafka, и многие данные были переданы за очень короткое время.Я временно изменил срок хранения для этой темы на 1 day
с 7 days
, поэтому размер темы стал нормальным.
Проблема в том, что в Node1
заполнено /data/disk2/kafka-logs
100%Процесс kafka просто не запустится и не выдаст ошибку:
Jul 08 12:03:29 broker01 kafka[23949]: [2019-07-08 12:03:29,093] INFO Recovering unflushed segment 0 in log my-topic-0. (kafka.log.Log)
Jul 08 12:03:29 broker01 kafka[23949]: [2019-07-08 12:03:29,094] INFO Completed load of log my-topic-0 with 1 log segments and log end offset 0 in 2 ms (kafka.log.Log)
Jul 08 12:03:29 broker01 kafka[23949]: [2019-07-08 12:03:29,095] ERROR There was an error in one of the threads during logs loading: java.lang.InternalError: a fault occurred in a recent unsafe memory access operation in compiled Java code (kafka.log.LogManager)
Jul 08 12:03:29 broker01 kafka[23949]: [2019-07-08 12:03:29,101] FATAL [Kafka Server 1], Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)
Jul 08 12:03:29 broker01 kafka[23949]: java.lang.InternalError: a fault occurred in a recent unsafe memory access operation in compiled Java code
Jul 08 12:03:29 broker01 kafka[23949]: at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)
Jul 08 12:03:29 broker01 kafka[23949]: at java.nio.ByteBuffer.allocate(ByteBuffer.java:335)
Jul 08 12:03:29 broker01 kafka[23949]: at org.apache.kafka.common.record.FileLogInputStream$FileChannelLogEntry.loadRecord(FileLogInputStream.java:135)
Jul 08 12:03:29 broker01 kafka[23949]: at org.apache.kafka.common.record.FileLogInputStream$FileChannelLogEntry.record(FileLogInputStream.java:149)
Jul 08 12:03:29 broker01 kafka[23949]: at kafka.log.LogSegment.$anonfun$recover$1(LogSegment.scala:22
Коэффициент репликации для большинства тем: 2
или 3
.Итак, мне интересно, могу ли я сделать следующее:
- Изменить коэффициент репликации на
2
для всех тем (Узел 2 и Узел 3 работают нормально) delete
некоторые вещи из Node1. - Перезапуск
Node 1
- Измените коэффициент репликации обратно на
2
или 3
, как было изначально.
Кто-нибудь знает лучший способили лучшее предложение?
Обновление : необходимы шаги 1 и 4 not
.Достаточно просто 2
и 3
, если у вас есть реплики.