Spark は、高性能、使いやすさ、高い汎用性を備えた汎用ビッグデータ分析エンジンです。
アーキテクチャ
Spark は、Spark Core 上に構築された 4 つの主要なプログラミングライブラリ(Spark SQL、Spark Streaming、MLlib、GraphX)を提供します(次の図を参照)。これらのライブラリは、オフラインの抽出、変換、書き出し(ETL)、オンライン分析処理(OLAP)、ストリーム処理、機械学習、およびグラフコンピューティングをサポートするために使用されます。詳細については、Apache Spark 公式 Web サイトをご覧ください。
シナリオ
オフライン ETL
オフライン ETL は、データウェアハウスのシナリオに適用されます。これは、大量のデータを抽出、変換、およびロードするプロセスを指します。このプロセスは時間がかかります。ほとんどの場合、スケジュールされたタスクを使用してオフライン ETL が実行されます。
OLAP
OLAP は、ビジネスインテリジェンス(BI)シナリオに適用されます。アナリストがインタラクティブクエリを送信すると、Spark はすぐに結果を返します。Spark に加えて、一般的な OLAP エンジンには、Presto と Impala があります。E-MapReduce(EMR)Spark 2.4 では、Spark 3.0 の主な機能がサポートされています。Spark の機能の詳細については、「Spark SQL ガイド」をご参照ください。
ストリーム処理
ストリーム処理は、リアルタイムのダッシュボード更新、リスク管理、レコメンデーション、監視、アラートなど、リアルタイムのデータ処理シナリオに適用されます。ストリーム処理エンジンには、Spark Streaming と Flink があります。Spark Streaming は、DStream API と Structured Streaming API を提供します。Structured Streaming は DataFrame と同様の方法で使用でき、開発者にとって高い要件はありません。Flink は、低レイテンシが要求されるシナリオに適しています。Spark Streaming は、高スループットが要求されるシナリオに適しています。詳細については、「Structured Streaming プログラミングガイド」をご参照ください。
機械学習
MLlib は、分類、回帰、協調フィルタリング、および集約アルゴリズムを含むスケーラブルな機械学習ライブラリです。MLlib は、モデル選択、自動パラメーター調整、クロスバリデーションなどのツールを提供して、生産性を向上させます。MLlib は、ディープラーニング以外のアルゴリズムモジュールをサポートしています。詳細については、「機械学習ライブラリ(MLlib)ガイド」をご参照ください。
グラフコンピューティング
GraphX はグラフコンピューティングライブラリです。プロパティ演算子、構造演算子、結合演算子、近傍集約演算子など、さまざまなグラフコンピューティング演算子をサポートしています。詳細については、「GraphX プログラミングガイド」をご参照ください。