2013-05-14 18 views
5

私はカサンドラの初心者です - 私はカサンドラのコミットとクラッシュリカバリに関する情報を単一のノードで検索していました。そして、誰かが詳細を明らかにすることを望む。カサンドラ単一ノードでのコミットとリカバリ

私はCassandraをテストしています。そのため、単一ノードで設定してください。私はdatastaxにstresstoolを使用して何百万もの行を挿入しています。停電やシステムの停止が発生した場合はどうなりますか? Cassandraのメモリにあったすべてのデータは、Cassandraの再起動時にディスクに書き込まれますか(私はコミットログが仲介者として機能すると思います)。このプロセスはどのくらいの期間ですか?

ありがとうございます!

答えて

11

カサンドラのコミットログは、カサンドラの耐久性のある書き込みを提供します。 Cassandraに書き込むと、書き込みがクライアントに確認される前に、書き込みがコミットログに追加されます。これは、クライアントが成功したレスポンスを受け取るすべての書き込みが、コミット・ログに書き込まれることが保証されていることを意味します。書き込みは現在のmemtableにも行われ、最終的に十分な大きさのときにSSTableとしてディスクに書き込まれます。これは、書き込みが行われてから長い時間がかかる可能性があります。

ただし、パフォーマンス上の理由から、コミットログはすぐにはディスクに同期されません。デフォルトはperiodicモードです(cassandra.yamlのcommitlog_syncパラメータで設定)。周期は10秒です(cassandra.yamlのcommitlog_sync_period_in_msで設定)。つまり、コミットログは10秒ごとにディスクに同期されます。この動作により、サーバーの電源が切れた場合に最大10秒の書き込みが失われる可能性があります。クラスタに複数のノードがあり、1より大きいレプリケーションファクタを使用した場合は、データを失うのに10秒以内に複数のノードに電力を供給する必要があります。

このリスクウィンドウが受け入れられない場合は、コミットログにバッチモードを使用できます。このモードでは、コミットログがディスクに同期されるまでクライアントへの書き込みを確認しません。時間ウィンドウはcommitlog_sync_batch_window_in_msによって設定され、デフォルトは50msです。これにより、書込みレイテンシが大幅に増加し、スループットも低下する可能性があるため、承認された書込みを失うコストが高い場合にのみこれを使用してください。このモードを使用するときは、コミットログを別のドライブに保存することが特に重要です。

サーバの電源が切れた場合、起動時にCassandraはコミットログを再生してmemtableを再構築します。このプロセスは非常に重いサーバーを書く場合に数秒(場合によっては数分)かかるでしょう。

memtables内のデータがディスクに書き込まれるようにするには、 'ノードデフルフラッシュ'を実行できます(これはノードごとに動作します)。これにより、新しいSSTableが作成され、フラッシュされたmemtables内のデータを参照するコミットログが削除されます。

+3

細かくよく書かれた説明をありがとうございます - 今ははっきりしています。私はこれが私のような他の初心者にも役立つことを願っています。 – user1680784

+0

あなたは「バッチ」と「定期的」バックワードを持っているように見えます...定期的に、承認があなたがバッチに切り替えるのを待つようにするために、デフォルトですか? –

+0

@リチャード私はこの問題に直面しています。カサンドラのコミットログが壊れています。助言がありますか?私はここに質問を投稿しました:http://stackoverflow.com/questions/33304367/cassandra-exiting-due-to-error-while-processing-commit-log-during-initializatio – Dojo

0

あなたは、SQL * Loaderを使用してOracleにロードされている時刻データでネットワーク障害が発生した場合にどうどう

  1. のようなものを求めていますか?
  2. また、データの転送中にSqoopが何らかの状態で処理を停止するとどうなりますか?

だけで何のデータが、それは同じままになり、電気的障害やシステムシャットダウンの前に転送されています。

memtableに空きがなくなったとき、つまりキーの数が一定の制限(デフォルトは128)を超えたときや、時間(クラスタクロック)に達したときにsstableに格納されている、不変のスペース。

+0

2番目の部分はお役に立ちました - ありがとう! – user1680784

関連する問題