2016-12-21 13 views
1

私は、数十億のレコードをリレーショナルデータフォーマット(トランザクションID、ユーザー名、ユーザーIDなど)でフォーマットしています。このデータストア(ユーザーID、日付などのようないくつかのフィルタを提供します)は、通常、エクスポートされたファイルは選択されたフィルタに基づいて数千から数百万のレコードを持ちます(出力ファイルはCSVまたは同様の形式です)大量データのエクスポートのためのnoSQL選択の提案

生データ以外にも、データのエクスポート中にいくつかのフィールドでいくつかの動的集約を探しています。

リクエストを送信したユーザとエクスポートされたデータファイルとの間の一般的な時間は、2〜3分以内でなければなりません(最大で4〜5分)。

私はこれまでHadoop map-reduceを使用していましたが、典型的なHDFSデータマップreduceを使用したhadoopバッチジョブ実行は、私の見解ではSLAが期待できないかもしれません。

もう1つの方法は、これまで使用していないSpark map-reduceを使用することですが、典​​型的なHadoop map-reduceバッチジョブの方が速いはずです。

すでに生産段階のRDBMS/OLTPインスタンスを試しましたが、エクスポートするデータのサイズと動的集約のために、正しいオプションではないようです。

ここでスパークの使用に関する提案はありますか?または他のどのような優れたnoSQL?

要約SLAでは、ここでは動的集約と生データ(数百万)が考慮されます。

答えて

1

ETL集計、フィルタリングおよび変換を実行した後にデータをエクスポートする必要がある場合、回答は非常に簡単です。 Apache Sparkが最高です。あなたは、システムを微調整し、メモリまたはメモリ+ディスクまたはシリアライゼーションなどを使用するかどうかを決める必要があります。しかし、ほとんどの場合、他の側面についても考える必要があります。私もそれらを考慮しています。

これは議論の幅広い話題であり、関連する集約、関連する検索クエリ(存在する場合)、開発時間などの多くの側面が含まれます。説明によれば、それはインタラクティブ/ほぼリアルタイムでインタラクティブなシステムのようである。他の側面は、分析が関与しているかどうかです。もう1つの重要なポイントは、システムのタイプ(OLTP/OLAP、報告のみなど)です。私が関与する2つの質問がある参照

-

  1. コンピューティング/データ処理エンジンを使用するために

  2. どのデータストレージ/ NoSQLですか?

- データ処理 -

Apacheのスパークは、コンピューティングのための最良の選択です。私たちは同じ目的のために、フィルタリングと共に、Sparkで実行されるxml変換も実行します。 Hadoop MapReduceと比べると超高速です。 Sparkはスタンドアロンで実行でき、Hadoopの上で実行することもできます。

- ストレージ -

利用可能な多くのNoSQLソリューションがあります。選択は、ボリューム、関連する集計、検索関連のクエリなどの多くの要素に依存します。

  • Hadoop - HadoopはHDFSをストレージシステムとして使用できます。 Haveopエコシステム全体を取得すると、多くのメリットがあります。アナリスト/データ科学者がデータの洞察を取得する必要がある場合は、Hive/Impalaなどのさまざまなツールを使用する場合と同じように、データを使用して再生することをお勧めします。また、リソース管理も容易です。しかし、いくつかのアプリケーションでは、あまりにも多くの場合があります。

  • スケールとパフォーマンスを維持しながら、配布と可用性の問題を解決したストレージエンジンとしてのCassendra - Cassandraスパークと一緒に使用すると驚異がもたらされます。たとえば、複雑な集計を実行します。ところで、私たちはそれを使用しています。あなたのストレージが10 TBまで数TBに及ぶ場合、Elastic Search - Elastic Searchは適切なオプションです。Elastic Search - Elastic Searchは適切なオプションです。それには集計を含む限られた分析機能を提供する木場(UI)が付属しています。開発時間は最小限で済み、実装は非常に迅速です。

だから、あなたの要件に応じて、私は、データ処理(変換/フィルタリング/集計)のためのApacheのスパークをお勧めします。また、ストレージとデータの可視化のための他の技術を考慮することが必要な場合があります。

関連する問題