9

現在、21 ノードのクラスターを 0.8 からバージョン 1.0.11 にアップグレード中です。Cassandra のアップグレード プロセスでは、ソフトウェアのアップグレード後に (nodetool upgradesstables を使用して) sstables を最新の形式に更新する必要があります。このプロセスには非常に長い時間がかかるようです。48 時間実行しているノードが 1 つありますが、まだ完了していません。

これをすべてのノードで並行して行うことが賢明かどうかを知りたいです。具体的には、パフォーマンスへの影響は何ですか? このクラスターは、読み取り/書き込みがかなり頻繁に使用されており、24 時間年中無休で利用できる必要があります。

4

2 に答える 2

7

圧縮中、ノードは「compaction_throughput_mb_per_sec」の速度ですべての sstable を再書き込みします。

私の推測では、パフォーマンスへの影響は、この設定の値に直接関係しています。低い値 (デフォルトは 16Mb です。これより低くすることもできます) では、クラスターの速度を落とさずにアップグレードできます。

于 2013-09-24T20:34:38.990 に答える
1

すべてのノードで同時にアップグレードを実行します。コマンドを実行します(Linux上)

nohup nodetool upgradesstables &

ログアウトして実行したままにします。これは優先度の低いタスクであり、書き換えが必要なすべての sstable を書き換えるのに必要なだけの時間がかかります。アップグレードの実行中に遅延の問題に気付いたことはありません。

たとえば、ノードごとに 1 TB のデータがある場合 (いたずら!)、アップグレードでは、複数のファイルにまたがる 1 TB のデータすべてを書き換える必要があります。これほど多くのデータを低速で読み書きするには、数日かかる場合があります。

: sstable は不変であり、バックアップは sstable ファイルへのハードリンクを作成することによって取得されるため、アップグレード プロセスが機能していると、使用されるディスク容量が 2 倍になります。そのため、特にノードがデータ用に 50% 以上のディスク領域を使用している場合は、ディスク領域に注意し、必要に応じてスナップショットを削除して領域を解放してください。

于 2016-01-19T14:42:03.850 に答える