Apache Spark とは - Azure HDInsight
Apache Spark は、ビッグデータ分析アプリケーションのパフォーマンスを向上させるメモリ内処理をサポートする並列処理フレームワークです。 Azure HDInsight の Apache Spark は、Microsoft によるクラウドでの Apache Spark の実装であり、Azure のいくつかの Spark オファリングの 1 つです。
Azure HDInsight の Apache Spark を使用すると、Spark クラスターを簡単に作成および構成できるため、Azure 内で完全な Spark 環境をカスタマイズして使用することができます。
Azure Synapse Analytics の Spark プールでは、管理された Spark プールを使用して、Azure 内での分析情報のためにデータの読み込み、モデル化、処理、分散を行うことができます。
Azure Databricks の Apache Spark は Spark クラスターを使用して、ユーザー間のコラボレーションを可能にして複数のデータソースからデータを読み取り、それを画期的な洞察につなげるための対話型ワークスペースを提供します。
Azure Data Factory の Spark アクティビティを使用すると、オンデマンドまたは既存の Spark クラスターを使用して、データ パイプラインで Spark の分析を使用できます。
Azure HDInsight で Apache Spark を使用すると、すべてのデータを Azure 内に格納して処理することができます。 HDInsight の Spark クラスターは、Azure Blob Storage または Azure Data Lake Storage Gen2 と互換性があり、既存のデータ ストアに Spark の処理を適用できます。
Azure HDInsight で Apache Spark の使用を開始するには、このチュートリアルに従って HDInsight Spark クラスターを作成します。
Apache Spark の詳細および Azure との対話方法については、下の記事を参照してください。
コンポーネントとバージョン情報については、Azure HDInsight での Apache Hadoop のコンポーネントとバージョンに関するページを参照してください。
Apache Spark とは
Spark には、クラスターの計算処理をインメモリで行うための基本的な要素が備わっています。 Spark ジョブは、データをメモリに読み込んでキャッシュし、それを繰り返しクエリできます。 メモリ内計算は、Hadoop 分散ファイル システム (HDFS) 経由でデータを共有する Hadoop などのディスクベースのアプリケーションよりもはるかに高速です。 また Spark は、Scala プログラミング言語との親和性が高く、分散データ セットをローカル コレクションのように扱うことができます。 計算内容をすべて map 処理と reduce 処理に分ける必要がありません。
Azure HDInsight の Spark クラスターでは、フル マネージドの Spark サービスを利用できます。 以下の一覧は、HDInsight で Spark クラスターを作成する利点をまとめたものです。
機能 | 説明 |
---|---|
簡単な作成 | Azure Portal、Azure PowerShell、または HDInsight .NET SDK を使用すると、HDInsight に新しい Spark クラスターを数分で作成できます。 HDInsight での Apache Spark クラスターの概要に関する記事を参照してください。 |
使いやすさ | HDInsight の Spark クラスターには、Jupyter Notebook と Apache Zeppelin Notebook が含まれています。 対話型のデータ処理と視覚化にこれらの Notebook を使用できます。 Apache Spark での Apache Zeppelin ノートブックの使用と Apache Spark クラスターでのデータの読み込みとクエリの実行に関するページを参照してください。 |
REST API | HDInsight の Spark クラスターには、ジョブの送信と監視をリモートで実行する REST API ベースの Spark ジョブ サーバーである Apache Livy が含まれています。 「Apache Spark REST API を使用してリモート ジョブを HDInsight Spark クラスターに送信する」を参照してください。 |
Azure Storage のサポート | HDInsight の Spark クラスターは、プライマリ ストレージまたは追加ストレージの両方として、Azure Data Lake Storage Gen2 を使用できます。 Data Lake Storage Gen2 について詳しくは、Azure Data Lake Storage Gen2 に関する記事を参照してください。 |
Azure サービスとの統合 | HDInsight の Spark クラスターには、Azure Event Hubs へのコネクタが付属しています。 Event Hubs を使用してストリーミング アプリケーションを作成できます。 Spark の一部として既に使用できる Apache Kafka が含まれます。 |
サード パーティ製 IDE との統合 | HDInsight は、アプリケーションを作成して HDInsight Spark クラスターに送信するために役立つ複数の IDE プラグインを備えています。 詳しくは、Azure Toolkit for IntelliJ IDEA の使用、Spark & Hive for VS Code の使用、Azure Toolkit for Eclipse の使用に関する各ページをご覧ください。 |
同時クエリ | HDInsight の Spark クラスターでは同時クエリがサポートされます。 この機能により、1 人のユーザーからの複数のクエリまたは複数のユーザーおよびアプリケーションからの複数のクエリが、同じクラスター リソースを共有できます。 |
SSD へのキャッシュ | データのキャッシュ先を、メモリまたはクラスター ノードに取り付けられている SSD から選択できます。 メモリ内キャッシュは、最高のクエリ パフォーマンスを発揮しますが、コストが高くなることがあります。 SSD へのキャッシュは、メモリ内のデータセット全体を収めるのに必要なサイズのクラスターを作成する必要なしにクエリのパフォーマンスを向上できる優れたオプションです。 「Azure HDInsight IO キャッシュを使用して Apache Spark のワークロードのパフォーマンスを改善する」を参照してください。 |
BI ツールとの統合 | HDInsight の Spark クラスターには、データ分析用の Power BI などの BI ツールへのコネクタが用意されています。 |
読み込み済みの Anaconda ライブラリ | HDInsight の Spark クラスターには、Anaconda ライブラリが事前にインストールされています。 Anaconda は、機械学習、データ分析、視覚化などのための 200 個近いライブラリを提供します。 |
適応性 | HDInsight を使用すると、自動スケーリング機能で動的にクラスター ノードの数を変更できます。 「Azure HDInsight クラスターを自動的にスケール調整する」を参照してください。 また、すべてのデータは Azure Blob storage または Azure Data Lake Storage Gen2 に格納されるので、データを失うことなく Spark クラスターを削除できます。 |
SLA | HDInsight の Spark クラスターでは、24 時間無休体制のサポートと、アップタイム 99.9% の SLA が提供されます。 |
HDInsight の Apache Spark クラスターには、クラスターで使用できる以下のコンポーネントが既定で含まれています。
- Spark Core。 Spark Core、Spark SQL、Spark ストリーミング API、GraphX、MLlib が含まれます。
- Anaconda
- Apache Livy
- Jupyter Notebook
- Apache Zeppelin Notebook
HDInsight の Spark クラスターには、Microsoft Power BI などの BI ツールからの接続を可能にする ODBC ドライバーが用意されています。
Spark クラスターのアーキテクチャ
HDInsight クラスターで Spark を実行する方法を理解することで、Spark のコンポーネントを理解しやすくなります。
Spark アプリケーションは、独立したプロセスのセットとしてクラスターで実行されます。 メイン プログラム (ドライバー プログラムと呼ばれる) の SparkContext オブジェクトによって調整されます。
SparkContext は、アプリケーション間でリソースを割り当てる複数の種類のクラスター マネージャーに接続できます。 これらのクラスター マネージャーには、Apache Mesos、Apache Hadoop YARN、または Spark クラスター マネージャーが含まれます。 HDInsight では、YARN クラスター マネージャーを使って Spark が実行されます。 接続されると、Spark はクラスター内の worker ノードで Executor を取得します。Executor は、アプリケーションの計算を実行し、データを格納するプロセスです。 次に、アプリケーション コード (SparkContext に渡される JAR ファイルまたは Python ファイルで定義された) を Executor に送信します。 最後に、SparkContext はタスクを Executor に送信して実行させます。
SparkContext は、ユーザーの main 関数を実行し、worker ノードでさまざまな並列処理を実行します。 その後、SparkContext は操作の結果を収集します。 ワーカー ノードによるデータの読み取りと書き込みは、Hadoop 分散ファイル システムとの間で行われます。 また、ワーカー ノードは、変換後のデータを Resilient Distributed Dataset (RDD) としてメモリ内にキャッシュします。
SparkContext は Spark マスターに接続し、個々のタスクの有向グラフ (DAG) にアプリケーションを変換する処理を担います。 ワーカー ノードの Executor プロセス内で実行されるタスクです。 アプリケーションはそれぞれ独自の Executor プロセスを取得します。これらは、アプリケーションが終了するまで稼働し続けながら、複数のスレッドでタスクを実行します。
HDInsight の Spark のユース ケース
HDInsight の Spark クラスターでは、以下に挙げる主なシナリオを実現できます。
対話型のデータ分析と BI
HDInsight の Apache Spark では、Azure Blob Storage と Azure Data Lake Storage Gen2 にデータが格納されます。 ビジネス エキスパートや重要な意思決定者は、そのデータを分析してレポートを作成することができます。 分析されたデータから Microsoft Power BI を使用して対話型レポートを作成します。 アナリストはクラスター ストレージ内の非構造化データや半構造化データから作業を開始し、そのデータのスキーマを Notebook を使用して定義してから、Microsoft Power BI を使用してデータ モデルを作成することができます。 HDInsight の Spark クラスターでは、多くのサードパーティ製の BI ツールもサポートされます。 Tableau などにより、データ アナリスト、ビジネス エキスパート、および重要な意思決定者にとって容易になります。
Spark Machine Learning
Apache Spark には MLlib が付属します。 MLlib は、Spark を基に作成された機械学習ライブラリで、HDInsight の Spark クラスターから使用できます。 HDInsight の Spark クラスターには、機械学習用のさまざまな種類のパッケージを含む Python ディストリビューションである Anaconda も含まれています。 さらに、Jupyter および Zeppelin Notebook の組み込みサポートを組み合わせることにより、機械学習アプリケーションを作成するための環境が得られます。
Spark のストリーミングおよびリアルタイム データ分析
HDInsight の Spark クラスターには、リアルタイム分析ソリューションを構築するための豊富なサポートが用意されています。 Spark には既に、Kafka、Flume、X、ZeroMQ、TCP ソケットなどの多数のソースからデータを取り込むためのコネクタがあります。 さらに、Azure Event Hubs からデータを取り込むためのファーストクラスのサポートが HDInsight の Spark によって追加されます。 Event Hubs は、Azure で最も広く使用されているキュー サービスです。 Event Hubs が完全にサポートされることから、HDInsight の Spark クラスターは、リアルタイム分析パイプラインを構築するうえで理想的なプラットフォームです。
次の手順
この概要では、Azure HDInsight の Apache Spark の基本的な事柄について説明しました。 HDInsight の Apache Spark について詳しくは、次の記事を参照してください。HDInsight Spark クラスターを作成して、いくつかのサンプル Spark クエリを実行できます。