Apache Cassandraでの墓石のライフサイクルの検討

この記事は、墓石のライフサイクルと管理に関する一連のブログ記事の最初の部分です。

Cassandraでデータを削除して期限切れにすることは、慎重に計画する必要があります。 特に、大量のデータを一度に削除しようとしている場合。 適切な計画がなければ、読み取り遅延やディスク使用量のフットプリントの増加などの問題がクラスターに発生する可能性があります。 この記事では、これに対処する方法とその注意点について説明します。

まず、基本を見てみましょう。 Cassandraでは、ディスク上に存在するデータファイル(Sstable)は不変ファイルです。 Cassandraで何かを削除すると、マーカーを含む新しいSSTableが作成されます。 このマーカーは、どのパーティション、行、またはセルが削除されたかを、その削除のタイムスタンプとともに示します。 この削除マーカーは墓石と呼ばれます。

削除されたデータと墓石は、gc_grace_secondsと呼ばれる期間、デフォルトでは10日間の間、ディスク上に共存できます。 この間、データはドライブ上に存在する可能性がありますが、照会されてもクライアントには返されません。 つまり、クライアントの観点からは、delete文を実行するとすぐにデータが削除されます。 ただし、操作上の観点からは、データと墓石の両方が依然として存在し、ディスク上の領域を占有する可能性があります。 まだディスク上に存在するこの削除されたデータは、”シャドウデータ”と呼ばれています。”

: 前の段落では、データと墓石が”ディスク上に共存することができる”と言います(”缶”に重点を置いています)。 しかし、gc_grace_secondsが経過していない場合、墓石は残ります。

gc_grace_secondsは、shadowedデータのレプリカを持つすべてのノードにレプリケートするのに十分な時間がtombstoneにあることを確認するための安全メカニズムです。 この安全メカニズムを成功させるには、gc_grace_secondsごとにクラスターを修復できる必要があります。 つまり、gc_grace_secondsにデフォルトの10日間を使用している場合は、10日ごとに修復を開始および終了する必要があります。 この修復は、クラスター内のゾンビデータを防止する目的で使用されます。 これがどのように起こるかについては詳しく説明しませんが、基本的には、データを削除するとゾンビデータが発生しますが、後で返されます。

gc_grace_secondsが経過すると、データと墓石は最終的にディスクから削除され、以前に使用されていたディスク領域が回復されます(図1)。 ディスクスペースを解放するためのETAは、この記事で明確にしたい最初のポイントの1つです。 Cassandraを使用する場合、多くの人がこのメカニズムを驚くべきことに感じています。 この混乱は、通常、人々が墓石とgc_grace_secondsについて学ぶとすぐにすぐに明らかにされます。 しかし、演算子は、gc_grace_secondsが終了した直後にデータと墓石が削除されたと考える傾向があるようです。 実際には、これが真実ではないかもしれない(そしてそうでない傾向がある)ことに注意することが不可欠です。 通常、このエビクションが発生してディスク領域が回復するまでには、gc_grace_secondsよりも時間がかかります。

図1-期限切れおよび期限切れでない墓石を使用したシャドウデータの圧縮

上記のエビクションは、シャドウデータと墓石を持つSstableを含む圧縮が発生したときに発生します。 それだけで、データが効果的に削除され、ディスク領域が回復しました。 Gc_grace_secondsが経過し、シャドウされたデータを持つSSTableが、墓石を持たない別のSSTableと圧縮された場合でも、シャドウされたデータはパージされないことに注意す つまり、削除されたデータが残っているすべてのSstableで墓石を持つSSTableが圧縮されていない場合、墓石はディスクから削除されません。 これが起こる理由は、圧縮中に、Cassandraが圧縮に関与していないSstableに何があるのかを知らないためです。 したがって、墓石を見ることができないため、データを破棄できることを知る方法はありません。 これは図2で確認できますが、両方の墓石でgc_grace_secondsが経過しましたが、圧縮後には何も削除されません。

図2-シャドウされたデータとその墓石を別々に圧縮する

データと墓石マーカーによるディスク使用量のために、墓石の蓄積は読み取りレイテンシに影響

これらの削除が小さくスパースである場合、データの削除は通常問題ではありません。 なぜなら、自然な圧縮のライフサイクルにわたって、Cassandraは最終的にディスク領域とパージされた墓石を回復するからです。 ただし、大量のデータを一度に削除すると、多くの墓石が作成され、読み取り待ち時間にすばやく影響を与える可能性があります。

アドホックベースで大量のデータを削除する必要がある場合は、リスクを軽減するために取ることができる次のブログ記事にいくつかの手順があり

メール

著者

  • ペドロ-ゴルド

ペドロとの仕事に興味がありますか? 技術の呼び出しをスケジュールします。

コメントを残す

メールアドレスが公開されることはありません。