Cassandra

Cassandra nodetool 修復並行性:“parallel”與“dc_parallel”

  • May 31, 2017

如果我執行,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,這與順序沒有什麼不同。

引用自:https://dba.stackexchange.com/questions/156739