# 后臺維護任務
原文鏈接 : [http://kudu.apache.org/docs/background_tasks.html](http://kudu.apache.org/docs/background_tasks.html)
譯文鏈接 : [http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813641](http://cwiki.apachecn.org/pages/viewpage.action?pageId=10813641)
貢獻者 : [小瑤](/display/~chenyao) [ApacheCN](/display/~apachecn) [Apache中文網](/display/~apachechina)
## Apache Kudu 后臺維護任務
**Kudu** 依賴于許多重要的自動維護活動運行后臺任務。這些任務包括將數據從內存刷新到磁盤,壓縮數據以提高性能,釋放磁盤空間等。
## Maintenance manager ( 維護管理 )
**maintenance manager** 安排并運行后臺任務。在任何給定的時間點,**maintenance manager**?根據當時所需的改進來確定下一個任務的優先級,例如減輕內存壓力,提高讀取性能或釋放磁盤空間。通過設置 **--maintenance_manager_num_thread**s 可以控制專用于運行后臺任務的工作線程數。
## Flushing data to disk ( 將數據刷新到磁盤 )
從內存到磁盤 **flush** 數據可以緩解內存壓力,并可通過從 **MemRowSet** 中的寫入優化的面向行的內存中格式切換到磁盤上讀取優化的以列為單位的格式來提高讀取性能。刷新數據的后臺任務包括 **FlushMRSOp** 和 **FlushDeltaMemStoresOp** 。
與這些操作相關聯的 **metrics** 分別具有前綴 **flush_mrs** 和 **flush_dms** 。
## Compacting on-disk data ( 壓縮磁盤數據 )
**Kudu** 不斷執行幾種類型的壓縮任務,以便在一段時間內保持一致的讀寫性能。將多個 **DiskRowSets** 組合到一個 **DiskRowSet** 中的合并壓縮由 **CompactRowSetsOp** 運行。還可以運行兩種類型的 **delta** 存儲壓縮操作:**MinorDeltaCompactionOp** 和 **MajorDeltaCompactionOp** 。
有關這些不同類型的壓實操作的更多信息,請參閱 [**Kudu Tablet** 設計文檔](https://github.com/apache/kudu/blob/master/docs/design-docs/tablet.md)。
## Write-ahead log GC ( 預寫日志 GC?)
**Kudu** 每個 **tablet** 維護一個預先記錄日志( **WAL** ),分為固定大小的分段。當活動段達到配置大小(由 **--log_segment_size_mb** 控制)時,**tablet** 會定期將 **WAL** 滾動到新的日志段。為了節省磁盤空間并減少啟動時間,稱為 **LogGCOp** 的后臺任務嘗試通過從本地節點不再需要它們的持久性而將其從磁盤中刪除,從而對其進行垃圾收集( **GC** )舊的 **WAL** 段。
與此后臺任務相關聯的 **metrics ?**具有前綴 **log_gc** 。
## Tablet history GC and the ancient history mark ( tablet 歷史GC和古代歷史記號?)
因為 **Kudu** 使用多重并發控制( **MVCC** )機制來確保快照掃描可以從新的更改隔離到一個表中,所以定期對舊的歷史數據進行垃圾回收(刪除)以釋放磁盤空間。雖然 **Kudu** 不會刪除在最新版本的數據中可見的行或數據,但 **Kudu** 會刪除不再可見的舊更改的記錄。
歷史上的 **MVCC** 數據變得無法訪問并被自由刪除的時間點被稱為古代歷史記錄( **AHM** )。可以通過設置 **--tablet_history_max_age_sec** 來配置 **AHM** 。
有兩個后臺任務,**GC** 歷史 **MVCC** 數據早于 **AHM** :運行合并壓縮(稱為 **CompactRowSetsOp** (見上))的后臺任務,以及一個單獨的后臺任務,可以刪除舊的撤消增量塊,稱為 **UndoDeltaBlockGCOp** 。運行 **UndoDeltaBlockGCOp** 可減少所有工作負載中的磁盤空間使用情況,特別是在更新或升級版本較高的系統中。
與此后臺任務相關聯的 **metrics?**具有前綴 **undo_delta_block** 。