就像图片所示,这是在我的一个代理中,我注意到日志分区目录没有位于两个目录中的平衡位置(挂载在两个磁盘上),我已经阅读了相关代码,看起来很平衡,就像在两个目录中都应该有4个__consumer_offset-x,与图片所示不同,一个目录拥有3个__consumer_offset-x,另一个目录拥有5个,所以有人可以告诉我为什么会这样,因为这会导致磁盘I / O倾斜。
Kafka相关代码:
private def nextLogDir(): File = {
if(logDirs.size == 1) {
logDirs(0)
} else {
// count the number of logs in each parent directory (including 0 for empty directories
val logCounts = allLogs.groupBy(_.dir.getParent).mapValues(_.size)
val zeros = logDirs.map(dir => (dir.getPath, 0)).toMap
val dirCounts = (zeros ++ logCounts).toBuffer
// choose the directory with the least logs in it
val leastLoaded = dirCounts.sortBy(_._2).head
new File(leastLoaded._1)
}
}