Azure Synapse Analytics での Apache Spark

Apache Spark は、ビッグ データ分析アプリケーションのパフォーマンスを向上させるメモリ内処理をサポートする並列処理フレームワークです。 Azure Synapse Analytics の Apache Spark は、Apache Spark を Microsoft がクラウドに実装したものです。 Azure Synapse では、サーバーレス Apache Spark プールを Azure に簡単に作成して構成することができます。 Azure Synapse の Spark プールは、Azure Storage および Azure Data Lake Generation 2 ストレージと互換性があります。 そのため、Spark プールを使用して、Azure に格納されているデータを処理することができます。

Diagram shows Spark SQL, Spark MLib, and GraphX linked to the Spark core engine, above a YARN layer over storage services.

Apache Spark とは

Apache Spark には、クラスターの計算処理をインメモリで行うための基本的な要素が備わっています。 Spark ジョブは、データをメモリに読み込んでキャッシュし、それを繰り返しクエリできます。 メモリ内計算は、ディスクベースのアプリケーションよりもはるかに高速です。 また Spark は、さまざまなプログラミング言語との親和性が高く、分散データ セットをローカル コレクションのように扱うことができます。 計算内容をすべて map 処理と reduce 処理に分ける必要がありません。 詳細については、「Apache Spark for Synapse」の動画を参照してください。

Diagram shows Traditional MapReduce, with disk-based apps and Spark, with cache-based operations.

Azure Synapse の Spark プールでは、フル マネージドの Spark サービスを利用できます。 以下の一覧は、Azure Synapse Analytics で Spark プールを作成する利点をまとめたものです。

特徴量 説明
スピードと効率 Spark インスタンスの起動時間は、60 ノード未満の場合で約 2 分、それより多いの場合には約 5 分となります。 インスタンスの既定のシャットダウン時間は、ノートブック接続によって維持される場合を除き、最後のジョブ実行から 5 分後です。
作成のしやすさ Azure Synapse には、Azure portal、Azure PowerShell、Synapse Analytics .NET SDK のいずれかを使用して新しい Spark プールを数分で作成できます。 Azure Synapse Analytics の Spark プールの概要に関するページを参照してください。
使いやすさ Synapse Analytics には、nteract から派生したカスタム ノートブックが含まれています。 対話型のデータ処理と視覚化にこれらの Notebook を使用できます。
REST API Azure Synapse Analytics の Spark には、ジョブの送信と監視をリモートで実行する REST API ベースの Spark ジョブ サーバーである Apache Livy が含まれています。
Azure Data Lake Storage Generation 2 のサポート Azure Synapse の Spark プールでは、Azure Data Lake Storage Gen2 と BLOB ストレージを使用できます。 Data Lake Store の詳細については、「Azure Data Lake Store の概要」を参照してください。
サード パーティ製 IDE との統合 Azure Synapse には、アプリケーションを作成して Spark プールに送信するうえで役立つ JetBrains の IntelliJ IDEA 用 IDE プラグインが用意されています。
読み込み済みの Anaconda ライブラリ Azure Synapse の Spark プールには、プレインストールされた Anaconda ライブラリが付属しています。 Anaconda は、機械学習、データ分析、視覚化などのテクノロジための 200 個近いライブラリを提供します。
スケーラビリティ Azure Synapse プールの Apache Spark で自動スケールを有効にすると、必要に応じてノードを追加したり削除したりすることによって、プールをスケーリングすることができます。 また、すべてのデータは Azure Storage または Data Lake Storage に格納されるため、Spark プールはデータの損失なしでシャットダウンできます。

Azure Synapse の Spark プールには、プールで既定で利用できる次のコンポーネントが含まれています。

Spark プールのアーキテクチャ

Spark アプリケーションは、"ドライバー プログラム" と呼ばれる、メイン プログラムの SparkContext オブジェクトによって調整される、独立したプロセスのセットとしてプールで実行されます。

SparkContext は、アプリケーション間でリソースを割り当てるクラスター マネージャーに接続できます。 クラスター マネージャーは Apache Hadoop YARN です。 接続されると、Spark はプール内のノードで Executor を取得します。Executor は、アプリケーションの計算を実行し、データを格納するプロセスです。 次に、SparkContext に渡される JAR または Python ファイルで定義されたアプリケーション コードを Executor に送信します。 最後に、SparkContext はタスクを Executor に送信して実行させます。

SparkContext は、ユーザーの main 関数を実行し、ノードでさまざまな並列処理を実行します。 その後、SparkContext は各操作の結果を収集します。 ノードによるデータの読み取りと書き込みは、ファイル システムとの間で行われます。 また、ノードは、変換後のデータを Resilient Distributed Dataset (RDD) としてメモリ内にキャッシュします。

SparkContext は Spark プールに接続し、アプリケーションを有向非巡回グラフ (DAG) に変換する処理を担います。 グラフは、ノードの Executor プロセス内で実行される個々のタスクで構成されます。 アプリケーションはそれぞれ独自の Executor プロセスを取得します。これらは、アプリケーションが終了するまで稼働し続けながら、複数のスレッドでタスクを実行します。

Azure Synapse Analytics での Apache Spark のユース ケース

Azure Synapse Analytics の Spark プールでは、以下に挙げる主なシナリオを実現できます。

  • Data Engineering とデータ準備

Apache Spark には、大量データの準備と処理をサポートする多くの言語機能が含まれているため、データの価値を高め、それを Azure Synapse Analytics 内の他のサービスから利用することができます。 これは、複数の言語 (C#、Scala、PySpark、Spark SQL) と、処理および接続を目的に提供されているライブラリによって実現されています。

  • Machine Learning

Apache Spark には、Spark を基に作成された機械学習ライブラリである MLlib が付属し、Azure Synapse Analytics の Spark プールから使用できます。 Azure Synapse Analytics の Spark プールには、Anaconda も含まれています。Anaconda は、機械学習を始めとするデータ サイエンス用のさまざまなパッケージを含む Python ディストリビューションです。 ノートブックの組み込みサポートを併用すれば、機械学習アプリケーションを作成するための環境が得られます。

  • データのストリーミング

サポートされているバージョンの Azure Synapse Spark ランタイム リリースを実行している限り、Synapse Spark は Spark 構造化ストリーミングをサポートします。 すべてのジョブは 7 日間稼働できます。 これはバッチ ジョブとストリーミング ジョブの両方に適用され、通常、お客様は Azure Functions を使用して再起動プロセスを自動化します。

どこから始めるか

Azure Synapse Analytics の Apache Spark の詳細については、次の記事を参照してください。

Note

Apache Spark の公式ドキュメントの一部では、Spark コンソールの使用を前提としていますが、これは Azure Synapse Spark では利用できません。 代わりに、ノートブックまたは IntelliJ のエクスペリエンスを使用してください。

次のステップ

この概要では、Azure Synapse Analytics の Apache Spark の基本について説明しました。 次の記事に進んで、Azure Synapse Analytics の Spark プールの作成方法を学習してください。