kafka集群中有些服務器磁盤IO util很高導致機器load居高不下,想把這些機器的partition數據文件夾分到多個掛載不同磁盤的目錄上降低單個磁盤的IO。主要有兩種方法:
刪除當前的數據文件夾下所有內容
重新配置server.properties中l(wèi)og.dirs參數,添加多個目錄,逗號隔開,重啟kafka。該操作會刪除掉該機器所有數據,重啟后該節(jié)點會去其他kafka節(jié)點找尋replication并拉取,新的數據會寫入到配置的多個目錄中。即,該方法適合于GB級別的數據量,如果數據量較大,節(jié)點重新加入ISR的時間會很長,并且會給網絡/集群帶來很高負載。移動部分partitions文件夾并修改offset-checkpoint文件
每個log.dirs設置的目錄下都會有三個offset-checkpoint文件和meta.properties文件:replication-offset-checkpoint, recovery-point-offset-checkpoint和cleaner-offset-checkpoint,這三個文件中包含partition當前提交的offset等信息,meta.properties文件包含當前版本號和該節(jié)點的id信息。我們只需要拷貝并修改這四個信息文件,然后移動partition數據文件夾到新文件夾中重啟kafka即可,由于該節(jié)點之前的數據未丟失,所以節(jié)點重啟后會很快恢復加入ISR。
offset-checkpoint文件的說明和該方法的具體操作.
當然直接停掉kafka然后移動部分partition數據文件夾到新目錄做軟鏈也可行,只是當刪除該topic的時候也只會刪除鏈接文件