0

ここの問題に似た独特の問題があります。

https://news.ycombinator.com/item?id=8368509

約 5 Gbps でキャプチャする高速トラフィック分析ボックスがあり、そこから特定のパケットを取り出して、C++ プログラムで何らかの形式に保存します。毎日、おそらく 1 ~ 3 TB がディスクに書き込まれます。これはネットワーク データであるため、すべてナノ秒レベルまでの時系列ですが、秒またはミリ秒レベルで保存し、後で別のアプリケーションに埋め込まれた高解像度のタイムスタンプを並べ替えても問題ありません。私の問題は、使用する形式を決定することです。私の2つの要件は次のとおりです。

  1. いくつかの異なるタイムスタンプ付きパラメーターを使用して、約 50 MB/秒で連続してディスクに書き込むことができます。
  2. このデータのチャンクを MATLAB (HDF5) にエクスポートできます。
  3. 分析目的で、このデータを 1 日に 1 回または 2 回クエリします。

難しい要件ではないもう1つの優れた点は次のとおりです。

  1. これらのボックスは 4 つ独立して実行されます。可能であれば、それらすべてに対してクエリを実行し、データを結合するとよいでしょう。これらの 4 つのボックスはすべて物理的に異なる場所にあるため、データを共有する際にオーバーヘッドが発生します。

2 つ目はアプリケーションが古いため変更できませんが、1 つ目のほうが重要だと思います。私が matlab にエクスポートしたいクエリのタイプは、「時間 Y と Z の間にメトリック X をプルする」のようなものなので、最終的には HDF5 形式にする必要があります。必要に応じて matlab ファイルを作成するために使用できる MatIO という外部ライブラリがありますが、変換ステップがなければさらに良いでしょう。上記のスレッド全体を読みましたが、kdb+、Cassandra、PyTables、および OpenTSDB など、際立っているように見える多くのオプションがあります。これらはすべて私が望むことをしているように見えますが、MATLAB HDF5 形式に変換するのがどれほど簡単か、またこれらのいずれかが他のものよりも難しくなるかどうかはわかりません。

誰かが同じようなことをした経験があるなら、それは大きな助けになるでしょう. ありがとう!

4

1 に答える 1

1

KDB+ ティッカープラントは確かにその速度でデータをキャプチャできますが、確認する必要があることがたくさんあります (選択するソリューションが何であれ)。

  • データをキャプチャしているマシンには十分なコアがありますか? tasksetたとえば、他に競合するものがないコアに、ティッカープラントに最適
  • 同様にディスク - SSD の場合、バスに競合がないことを確認してください
  • ワークロードを分離する - 異なるタイプのデータを書き込むことができます (おそらく、パケットはソースまたはストリームによって分割できますか?) 異なる cpus/disks/tickerplant プロセスに書き込みます。

基本的に、これをカットする方法はたくさんあります。ただし、適切なハードウェアがあれば、KDB+ で十分に機能すると言えます。ただし、HDF5 が必要な場合は、データをキャプチャし、オンザフライでディスクに書き込み/変換する単純なプロセスを使用する方がよいでしょう。

于 2015-02-22T17:21:06.143 に答える