Von der Dokumentation:
Die Verwendung der nodetool repair -pr (–partitioner-range) Option repariert nur den Primärbereich für diesen Knoten, die anderen Replikate für diesen Bereich müssen weiterhin die Merkle-Tree-Berechnung durchführen, was zu einer Validierungs-Kompaktierung führt. Da alle Replikate gleichzeitig kompaktieren, kann es sein, dass alle Knoten für diesen Teil der Daten langsam reagieren.
Es gibt wahrscheinlich niemals einen Zeitpunkt, an dem ich akzeptieren kann, dass alle Knoten für einen bestimmten Teil der Daten langsam sind. Aber ich frage mich: Warum passiert das (oder gibt es vielleicht einfach eine Verwechslung mit der "-par" Option in der Dokumentation?!), wenn nodetool repair
anscheinend klüger ist:
Standardmäßig erstellt der Reparatur-Befehl sofort einen Snapshot von jedem Replikat und repariert dann sequenziell jedes Replikat aus den Snapshots. Zum Beispiel, wenn Sie RF=3 haben und A, B und C drei Replikate repräsentieren, erstellt dieser Befehl sofort einen Snapshot von jedem Replikat und repariert dann sequenziell jedes Replikat aus den Snapshots (A<->B, A<->C, B<->C) anstatt A, B und C gleichzeitig zu reparieren. Dies ermöglicht dem dynamischen Snitch, die Leistung für Ihre Anwendung über die anderen Replikate aufrechtzuerhalten, weil mindestens ein Replikat im Snapshot nicht repariert wird.
Der Datastax Blog geht jedoch auf dieses Problem ein:
Die erste Phase kann jedoch intensiv auf die Festplatten-E/A sein. Sie können dies in gewissem Maße mit Kompaktierungsdrosselung abmildern (da diese Phase das ist, was wir eine Validierungs-Kompaktierung nennen). Manchmal reicht das jedoch nicht aus, und einige Leute versuchen, dies weiter zu mildern, indem sie die -pr (–partitioner-range) Option für nodetool repair verwenden, die nur den Primärbereich für diesen Knoten repariert. Leider müssen die anderen Replikate für diesen Bereich weiterhin die Merkle-Tree-Berechnung durchführen, was zu einer Validierungs-Kompaktierung führt. Dies kann ein Problem sein, da alle Replikate dies gleichzeitig durchführen, was sie alle langsam machen kann, um für diesen Teil Ihrer Daten zu antworten. Glücklicherweise gibt es hiermit umzugehen, indem Sie die -snapshot Option verwenden.
Das könnte nett sein, aber tatsächlich gibt es keine -snapshot
Option für nodetool repair
(siehe die manpage oder die Dokumentation) (wurde diese Option entfernt?!)
Insgesamt also:
- Ich kann anscheinend
nodetool repair -pr
nicht verwenden, da ich immer mindestens sicherstellen muss, dass das System reaktionsschnell genug ist, um mit einer Konsistenz von EINS zu lesen/schreiben, ohne wesentliche Verzögerung. (Anmerkung: Wir haben nur ein Rechenzentrum.) Oder übersehe/verstehe ich etwas? - Warum ist
nodetool repair
klug, indem es einen Knoten reaktionsschnell hält, währendnodetool repair -pr
alle Knoten für einen Teil der Daten langsam macht? - Wo ist die
-snapshot
Option: Wurde sie entfernt, nie implementiert oder funktioniert sie jetzt vielleicht automatisch so, auch wennnodetool repair -pr
verwendet wird?