私はBig Dataテクノロジ、特にCassandraにはかなり新しいので、私はあなたがしなければならない作業についてのアドバイスが必要です。私はtimeseriesを扱うことに関するDatastaxの例を探していましたが、このトピックについてはここでは別の議論がありますが、もし私が何かを見逃してしまったかもしれないと思ったら、教えてください。 これは私の問題です。Hadoop/Cassandra - 何千ものセンサーのデータを保存し分析する方法は?
私たちがテストしている約100個のセンサーステーションからのデータを保存し分析する必要があります。各センサステーションには、数千個のセンサがあります。したがって、各ステーションでは、センサーが数ミリ秒ごとに情報を記録している間に(ブール値、整数または浮動小数点数)、いくつかのテストを実行します(それぞれ約2時間30分程度)。各テストの記録はテスト中にステーションに保存され、テストが完了したら私に送信されます。テストごとに約10 GBを意味します(各パラメータは約1 MBの情報です)。 Hierarchy description
は今、私はテストのためのスパークとカサンドラの小さなHadoopのクラスタへのアクセス権を持っている:ここでは
は、階層構造を説明するためのスキーマです。私は他のツールをインストールすることができるかもしれませんが、Spark/Cassandraとの作業を続けていただければ幸いです。私の質問は、これらのセンサーからの情報を保存して保存するための最良のデータモデルとは何でしょうか? 「分析」により
、Iは平均:
はMIN、MAX、特定ステーションに特定のセンサによって記録された特定のパラメータに平均値を求めます。または特定のパラメータの値をすべてのステーションで見つけることができます。特定のパラメータの値を見つけることができますが、同じステーションの他のパラメータ(1つまたは2つ)が限界より高い場合は、1つまたは複数のパラメータの展開を視覚的にプロットします(異なるステーションの同じパラメータ、または同じステーション上の異なるパラメータ)
パラメータまたはステーション間の相関分析を行います(たとえば、センサが機能していないかどうかを調べるなど)。
私は、次のデータ・モデルとカサンドラ表内のすべての情報を置くことを考えていた
:
CREATE TABLE data_stations (
station text, // station ID
test int, // test ID
parameter text, // name of recorded parameter/sensor
tps timestamp, // timestamp
val float, // measured value
PRIMARY KEY ((station, test, parameter), tps)
);
つのテーブルには、すべてのデータを処理できるようになる場合は、私は知りません:各パーティションが「唯一」であっても、前例のデータモデル(100ステーション×10テスト×10 000パラメータ×9,000,000ms(2h30ミリ秒)〜= 10^14)に従って、10^14の異なる行を与える行。
他のアイデアは、異なるテーブル(たとえば、ステーションごとに1つのテーブル、またはステーションごとにテストごとに1つのテーブルなど)でデータを分割することでした。私は何を選択するかわからないので、アドバイスは大歓迎です!
ご連絡いただきありがとうございます。詳細や詳細が必要な場合は、さらにお気軽にお問い合わせください。
Piar
感謝を。私はSparkとCassandraが私の問題の良い選択だと聞いてうれしいです! 送信したリンクを確認しましたが、これは本当に面白いです。しかし、「パーティション当たり2億セル」という制限は、パーティションが200億セル未満であれば、何も制限なしに同じテーブルに必要なデータを置くことができますか?その場合、私は最初のメッセージで与えた最初のデータモデルを使用することができます、それはあなたの気持ちですか? もう一度お返事いただきありがとうございます。 – Piar
はい、すべてのデータを異なるパーティション(それぞれ20億個未満のセル)にテーブル/列ファミリに入れることができます。 __しかし、すべての[カサンドラの限界](http://wiki.apache.org/cassandra/CassandraLimitations)__ –
を参考にしてください。正解とリンクをありがとう。それは本当に便利だった、私はそれを試してみよう! – Piar