Cassandra
Cassandra nodetool 修復並行性:“parallel”與“dc_parallel”
如果我執行,
nodetool repair --full
我會看到這樣的設置:repairing keyspace some_keyspace with repair options (parallelism: parallel, primary range: false, incremental: false, job threads: 1, ColumnFamilies: [], dataCenters: [], hosts: [], # of ranges: 735)
但是,如果我執行,
nodetool repair --full --dc-parallel
我會看到:repairing keyspace some_other_keyspace with repair options (parallelism: dc_parallel, primary range: false, incremental: false, job threads: 1, ColumnFamilies: [], dataCenters: [], hosts: [], # of ranges: 1992)
注意
parallelism
設置。自 Cassandra 2.2 以來,“並行”已成為預設設置。我想知道“parallel”和“dc_parallel”之間有什麼區別。文件暗示它更快,dc_parallel
因為它同時在所有 DC 中執行,但在我的簡短測試中,它似乎是相反的;也許這是由於我的複制設置——大多數鍵空間被設置為使用NetworkTopologyStrategy
並在我的每個 DC 中放置相同數量的副本——但我想更確定而不僅僅是猜測。“並行”沒有很好的記錄。對於它的價值,我正在執行 Cassandra 3 (DSE 5.0.3。)
這裡的問題是選項名稱
--dc-parallel
選擇不當,IMO。目前,可以為修復操作指定 3 個“並行度”:順序、並行和數據中心感知(dc-parallel)。
- 並行修復是最古老的選項,它只允許所有節點一次執行修復任務。這可能會佔用大量 CPU。
- 引入順序修復是為了減少修復對整個集群的 CPU 影響。它是通過在所有受影響的節點上拍攝快照然後使用快照執行 Merkle 樹計算來實現的,一次一個節點。它以更長的執行時間和快照佔用的額外空間為代價減輕了 CPU 的壓力。
- 最後,“dc-parallel”修復實際上是每個 DC 內的順序修復,而所有 DC 都可以同時執行這些修復。因此,使用此選項時,每個 DC 一次只有一個節點正在積極進行修復。如果您只有一個 DC,這與順序沒有什麼不同。