卡夫卡日志目录无法在一个代理中创建平衡

时间:2018-12-27 03:39:06

标签: java apache-kafka

就像图片所示,这是在我的一个代理中,我注意到日志分区目录没有位于两个目录中的平衡位置(挂载在两个磁盘上),我已经阅读了相关代码,看起来很平衡,就像在两个目录中都应该有4个__consumer_offset-x,与图片所示不同,一个目录拥有3个__consumer_offset-x,另一个目录拥有5个,所以有人可以告诉我为什么会这样,因为这会导致磁盘I / O倾斜。

一个目录: enter image description here

另一个目录:enter image description here

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)
    }
  }

0 个答案:

没有答案