kafka的消費者們只消費訊息,消費後並不是立即清除,那麼kafka是怎樣進行日誌清理?
kafka的日誌清理機制一般分為兩種:日誌清除和日誌壓縮。這兩種機制是需要config/server.properties檔案配置後才會選中,二選一。常見使用的是日誌清除,至於日誌壓縮 適合特別場景。
config/server.properties檔案配置如下
# 日誌片段檔案的檢查週期,檢視它們是否達到了刪除策略的設定(log.retention.hours或log.retention.bytes)
log.retention.check.interval.ms=60000
# 日誌清理策略(delete|compact)
log.cleanup.policy = delete
# 日誌儲存時間 (hours|minutes),預設為7天(168小時)。超過這個時間會根據policy處理資料。bytes和minutes無論哪個先達到都會觸發。
log.retention.hours=168
# 日誌資料儲存的最大位元組數。超過這個bytes會根據policy處理資料。
#log.retention.bytes=1073741824
#檔案在索引中清除後保留的時間一般不需要去修改【被標記.deleted的檔案會在這個延遲時間後清除】
log.delete.delay.ms =60000
第乙個配置是kafka日誌管理器中有專門的任務負責周期性地檢測、刪除不符合條件的日誌分段檔案,該週期可通過引數log.rentention.check.interval.ms來配置。
第二個配置是log.cleanup.policy=delete。表明選中日誌清除機制。日誌清除機制又分為三種:基於時間的刪除策略、基於日誌大小的刪除策略、基於日誌起始偏移量的刪除策略。
# 日誌儲存時間 (hours|minutes),預設為7天(168小時)。超過這個時間會根據policy處理資料。bytes和minutes無論哪個先達到都會觸發。
log.retention.hours=168
#檔案在索引中清除後保留的時間一般不需要去修改【被標記.deleted的檔案會在這個延遲時間後清除】
log.delete.delay.ms =60000
一般是加上上面的兩個配置。
定期檢查日誌檔案是否有超過log.retention.hours時間【根據日誌分段的最大時間戳largesttimesta mp計算,查詢該segment分段所對應的時間戳索引檔案.timeindex中最後一條索引項】的日誌segment分段。
執行日誌分段的刪除任務時,會首先從log物件中維護的日誌分段的跳躍表中移除需要刪除的日誌分段,然後將日誌分段所對應的資料檔案和索引檔案新增.deleted字尾。最後轉交給名稱為delete-file任務來刪除以.deleted為字尾的檔案,執行延遲時間可通過引數log.delete.delay.ms控制,預設為1分鐘。
# 日誌資料儲存的最大位元組數。超過這個bytes會根據policy處理資料。
#log.retention.bytes=1073741824
#檔案在索引中清除後保留的時間一般不需要去修改【被標記.deleted的檔案會在這個延遲時間後清除】
log.delete.delay.ms =60000
配置檔案中不能少上面的配置資訊。
該策略會依次檢查每個日誌中的日誌分段是否超出指定的大小(log.retention.bytes),對超出指定大小的日誌分段採取刪除策略。
如果log.retention.bytes和log.retention.hours同時配置,一般任意乙個滿足條件的話,都會刪除的。
乙個partiton分割槽會有很多分割槽segment段檔案。
log.retention.hours比較好理解。確定這個分割槽上的segment檔案們的時間,超過時間的刪除。
log.retention.bytes是表示的這個分割槽總的超過閾值【總大小- log.retention.bytes值=超過閾值】大於乙個segment段的大小時,才會觸發刪除。
例如:假設日誌段大小是500mb,當前分割槽共有3個日誌段檔案,大小分別是500mb,500mb,130mb【130m那個檔案是最新正在使用的segment檔案】。此時該分割槽總日誌大小是2*500mb+130mb=1130m,如果log.retention.bytes閾值設定為1000mb,那麼超出閾值的部分就是130m < 500m,故kafka不會執行任何刪除操作;如果log.retention.bytes閾值設定為600mb,超過閾值是530m,此時kafka會刪除最老的那個日誌段檔案,到時會剩下500m,130m的兩個segment檔案。
Hadoop Yarn的日誌清理
hadoop yarn的日誌清理可以分為兩個子話題討論 我們這裡討論的日誌清理並不是通過定時的日誌刪除命令去實現,這一做法顯然優雅,具體的做法下面會分別進行討論。hadoop yarn使用log4j進行日誌輸出,所以對於它們本地日誌的清理,最好的方式是通過修改log4j的配置配置檔案,以rollin...
日誌清理 sh
bin bash log dir var log root uid 0 lines 50 e xcd 66 e notroot 67 e wrongargs 65 if uid ne root uid then echo must be root to run this script.exit e ...
清理登入日誌
root localhost root echo var log wtmp 此檔案預設開啟時亂碼,可查到ip等資訊 root localhost root last 此時即查不到使用者登入資訊 清除登陸系統失敗的記錄 root localhost root echo var log btmp 此檔案...