2016-12-08 8 views
2

9ノードのcassandraクラスタを作成しました。それぞれに4Coresと16G RAMが装備されています。私たちは28桁の15-25百万レコードを書いています。Cassandraマテリアライズド・ビューのパフォーマンスに関する問題

私たちが設計したデータモデルは以下の通りです(私は列の名前を変更し、簡略化のために実際のスキーマを短縮しました)。

CREATE TABLE main_table(
col1 ... col28, 
PRIMARY KEY((col1,col2),col_date,col_with_some_seq_number)) 
WITH CLUSTERING ORDER BY (col_date DESC,col_with_some_seq_number desc) AND default_time_to_live = 5270400; 

CREATE MATERIALIZED VIEW mv_for_main_table AS 
SELECT [col1.. col11], 
FROM main_table 
WHERE col1 IS NOT NULL AND col2 IS NOT NULL AND col_date IS NOT NULL AND col_with_some_seq_number IS NOT NULL 
PRIMARY KEY ((col1),col2, col_date, col_with_some_seq_number) 
WITH CLUSTERING ORDER BY (col_date DESC, col_with_some_seq_number DESC, col2 DESC); 

だけ にクラスタリングキーにパーティションキーのいずれかを移動する、そのマテリアライズド・ビュー。

私たちはsparkからデータをロードしており、キャッサンドラ関連の設定は変更していません。

約150万レコードを摂取した後、摂取が失敗し始め、各ノードは、突然変異の障害の多くを与えています。

マテリアライズド・ビューのパフォーマンスに問題はありますか。または私が使用した定義は効率的ではありません。

同時書き込み、スループットMBの削減など、構成の変更をほとんど試しました。すべての試行の後、我々はマテリアライズドビューをドロップし、すべてのものがうまく動作し始めた。

我々は、ビューを含めることをマテリア後にのみ書き込みが巨大なマージンだけ遅くなっていると変異がドロップなっていると結論するのに十分なテストを行っています。

私たちは、代わりに上記の構成のためのマテリアライズド・ビューの別々のテーブルを持っていることを計画している、しかし、私は、我々が使用しているマテリアライズド・ビューまたはデータモデルとの間違いがあるかどうかを知りたいです。

答えて

2

マテリアライズド・ビューは、別の表を作成してメイン表に書き込むときに書き出します。したがって、マテリアライズド・ビューを削除して別の表を手動で作成すると、同じボートに乗ることになります。

私の意見では、パフォーマンスの問題は1つの特定のノードが過負荷になっているためです。実際に、のPARTITION KEY列のうちの1つをクラスタリングキー列に降格するとき、同じデータ取り込みパターン(各書き込みが別の表に反映されていることが前提となっている)を前提とすると、ホットスポットを作成しますより多くのデータが同一のパーティションにある傾向があるからです。これは、より長い圧縮と読み取り修復、一般的なクラスタへの負荷の増大(各ノードが各パーティションごとにより多くのデータをソートする必要があるなど)につながります。深さのマテリアライズド・ビュー(MV)を理解するための

+0

の画面キャプチャを投稿してください。?マテリアライズド・ビューは、毎日2,500万行をメイン・テーブルに取り込むシナリオに適していますか?私たちがMVを持っていれば、パフォーマンスは大幅に低下します。スパークジョブの出力行は、MVなしで約20Kであり、MVでは1秒あたり約1Kでさえありません – Srini

+0

おそらく、パフォーマンスを誇張していますが、摂取障害のより重要な側面は、突然変異と突然変異の段階がnodetool tpstats指数関数的に増加している。 MVがなければ、保留中のステージは決してそこにはなく、もしあれば、2または3に制限され、次の秒にクリアされます。 – Srini

3

一つの場所:http://www.doanduyhai.com/blog/?p=1930

のMVを持ったときにベーステーブルのパーティションのロックがあります。このローカル・ロックは、コスト(私のブログの記事で参照)

私はあなたのハードウェアのサイジングについても、別の発言を持っており、4CPUsは8つのCPUである公式の推薦を下回っている:カサンドラでhttp://cassandra.apache.org/doc/latest/operating/hardware.html

書き込みワークロードされましたCPU-あなたのCPUはSparkでも使用されているので、あなたのボトルネックを説明するかもしれません。

はどのようにマテリアライズド・ビューおよびそれの他の側面のread_ahead_writeについて、またここにdstathtop

関連する問題