Apache Spark とは - Azure HDInsightWhat is Apache Spark in Azure HDInsight

Apache Spark は、ビッグデータ分析アプリケーションのパフォーマンスを向上させるメモリ内処理をサポートする並列処理フレームワークです。Apache Spark is a parallel processing framework that supports in-memory processing to boost the performance of big-data analytic applications. Azure HDInsight の Apache Spark は、クラウドでの Apache Spark の Microsoft の実装です。Apache Spark in Azure HDInsight is the Microsoft implementation of Apache Spark in the cloud. HDInsight により、Azure での Spark クラスターの作成と構成が簡単になります。HDInsight makes it easier to create and configure a Spark cluster in Azure. HDInsight の Spark クラスターは、Azure Blob StorageAzure Data Lake Storage Gen1Azure Data Lake Storage Gen2 と互換性があります。Spark clusters in HDInsight are compatible with Azure Blob storage, Azure Data Lake Storage Gen1, or Azure Data Lake Storage Gen2. そのため、HDInsight Spark クラスターを使用して、Azure に格納されているデータを処理できます。So you can use HDInsight Spark clusters to process your data stored in Azure. コンポーネントとバージョン情報については、Azure HDInsight での Apache Hadoop のコンポーネントとバージョンに関するページを参照してください。For the components and the versioning information, see Apache Hadoop components and versions in Azure HDInsight.

Spark: 一元化されたフレームワーク

Apache Spark とはWhat is Apache Spark?

Spark には、クラスターの計算処理をインメモリで行うための基本的な要素が備わっています。Spark provides primitives for in-memory cluster computing. Spark ジョブは、データをメモリに読み込んでキャッシュし、それを繰り返しクエリできます。A Spark job can load and cache data into memory and query it repeatedly. メモリ内計算は、Hadoop 分散ファイル システム (HDFS) 経由でデータを共有する Hadoop などのディスクベースのアプリケーションよりもはるかに高速です。In-memory computing is much faster than disk-based applications, such as Hadoop, which shares data through Hadoop distributed file system (HDFS). また Spark は、Scala プログラミング言語との親和性が高く、分散データ セットをローカル コレクションのように扱うことができます。Spark also integrates into the Scala programming language to let you manipulate distributed data sets like local collections. 計算内容をすべて map 処理と reduce 処理に分ける必要がありません。There's no need to structure everything as map and reduce operations.

従来の MapReduce と Spark

Azure HDInsight の Spark クラスターでは、フル マネージドの Spark サービスを利用できます。Spark clusters in HDInsight offer a fully managed Spark service. 以下の一覧は、HDInsight で Spark クラスターを作成する利点をまとめたものです。Benefits of creating a Spark cluster in HDInsight are listed here.

機能Feature 説明Description
簡単な作成Ease creation Azure Portal、Azure PowerShell、または HDInsight .NET SDK を使用すると、HDInsight に新しい Spark クラスターを数分で作成できます。You can create a new Spark cluster in HDInsight in minutes using the Azure portal, Azure PowerShell, or the HDInsight .NET SDK. HDInsight での Apache Spark クラスターの概要に関する記事を参照してください。See Get started with Apache Spark cluster in HDInsight.
使いやすさEase of use HDInsight の Spark クラスターには、Jupyter Notebook と Apache Zeppelin Notebook が含まれています。Spark cluster in HDInsight include Jupyter Notebooks and Apache Zeppelin Notebooks. 対話型のデータ処理と視覚化にこれらの Notebook を使用できます。You can use these notebooks for interactive data processing and visualization. Apache Spark での Apache Zeppelin ノートブックの使用Apache Spark クラスターでのデータの読み込みとクエリの実行に関するページを参照してください。See Use Apache Zeppelin notebooks with Apache Spark and Load data and run queries on an Apache Spark cluster.
REST APIREST APIs HDInsight の Spark クラスターには、ジョブの送信と監視をリモートで実行する REST API ベースの Spark ジョブ サーバーである Apache Livy が含まれています。Spark clusters in HDInsight include Apache Livy, a REST API-based Spark job server to remotely submit and monitor jobs. Apache Spark REST API を使用してリモート ジョブを HDInsight Spark クラスターに送信する」を参照してください。See Use Apache Spark REST API to submit remote jobs to an HDInsight Spark cluster.
Azure Storage のサポートSupport for Azure Storage HDInsight の Spark クラスターは、プライマリ ストレージまたは追加のストレージの両方として、Azure Data Lake Storage Gen1 または Gen2 を使用できます。Spark clusters in HDInsight can use Azure Data Lake Storage Gen1/Gen2 as both the primary storage or additional storage. Data Lake Storage Gen1 について詳しくは、Azure Data Lake Storage Gen1 に関する記事を参照してください。For more information on Data Lake Storage Gen1, see Azure Data Lake Storage Gen1. Data Lake Storage Gen2 について詳しくは、Azure Data Lake Storage Gen2 に関する記事を参照してください。For more information on Data Lake Storage Gen2, see Azure Data Lake Storage Gen2.
Azure サービスとの統合Integration with Azure services HDInsight の Spark クラスターには、Azure Event Hubs へのコネクタが付属しています。Spark cluster in HDInsight comes with a connector to Azure Event Hubs. Event Hubs を使用してストリーミング アプリケーションを作成できます。You can build streaming applications using the Event Hubs. Spark の一部として既に使用できる Apache Kafka が含まれます。Including Apache Kafka, which is already available as part of Spark.
ML Server のサポートSupport for ML Server HDInsight の ML Server のサポートは、クラスターの種類 ML サービス で提供されます。Support for ML Server in HDInsight is provided as the ML Services cluster type. ML サービス クラスターをセットアップして、Spark クラスターによって決められた速度で分散 R 計算を実行できます。You can set up an ML Services cluster to run distributed R computations with the speeds promised with a Spark cluster. 詳細については、「Azure HDInsight での ML Services とは」を参照してください。For more information, see What is ML Services in Azure HDInsight.
サード パーティ製 IDE との統合Integration with third-party IDEs HDInsight は、アプリケーションを作成して HDInsight Spark クラスターに送信するために役立つ複数の IDE プラグインを備えています。HDInsight provides several IDE plugins that are useful to create and submit applications to an HDInsight Spark cluster. 詳細については、Azure Toolkit for IntelliJ IDEA の使用Spark & Hive for VS Code の使用Azure Toolkit for Eclipse の使用に関する各ページを参照してください。For more information, see Use Azure Toolkit for IntelliJ IDEA, Use Spark & Hive Tools for VSCode, and Use Azure Toolkit for Eclipse.
同時クエリConcurrent Queries HDInsight の Spark クラスターでは同時クエリがサポートされます。Spark clusters in HDInsight support concurrent queries. この機能により、1 人のユーザーからの複数のクエリまたは複数のユーザーおよびアプリケーションからの複数のクエリが、同じクラスター リソースを共有できます。This capability enables multiple queries from one user or multiple queries from various users and applications to share the same cluster resources.
SSD へのキャッシュCaching on SSDs データのキャッシュ先を、メモリまたはクラスター ノードに取り付けられている SSD から選択できます。You can choose to cache data either in memory or in SSDs attached to the cluster nodes. メモリ内キャッシュは、最高のクエリ パフォーマンスを発揮しますが、コストが高くなることがあります。Caching in memory provides the best query performance but could be expensive. SSD へのキャッシュは、メモリ内のデータセット全体を収めるのに必要なサイズのクラスターを作成する必要なしにクエリのパフォーマンスを向上できる優れたオプションです。Caching in SSDs provides a great option for improving query performance without the need to create a cluster of a size that is required to fit the entire dataset in memory. Azure HDInsight IO キャッシュを使用して Apache Spark のワークロードのパフォーマンスを改善する」を参照してください。See Improve performance of Apache Spark workloads using Azure HDInsight IO Cache.
BI ツールとの統合Integration with BI Tools HDInsight の Spark クラスターには、データ分析用の Power BI などの BI ツールへのコネクタが用意されています。Spark clusters in HDInsight provide connectors for BI tools such as Power BI for data analytics.
読み込み済みの Anaconda ライブラリPre-loaded Anaconda libraries HDInsight の Spark クラスターには、Anaconda ライブラリが事前にインストールされています。Spark clusters in HDInsight come with Anaconda libraries pre-installed. Anaconda は、機械学習、データ分析、視覚化などのための 200 個近いライブラリを提供します。Anaconda provides close to 200 libraries for machine learning, data analysis, visualization, and so on.
適応性Adaptability HDInsight を使用すると、自動スケーリング機能で動的にクラスター ノードの数を変更できます。HDInsight allows you to change the number of cluster nodes dynamically with the Autoscale feature. Azure HDInsight クラスターを自動的にスケール調整する」を参照してください。See Automatically scale Azure HDInsight clusters. また、すべてのデータは Azure Blob Storage、Azure Data Lake Storage Gen1 または Azure Data Lake Storage Gen2 に格納されるため、Spark クラスターはデータの損失なしで削除できます。Also, Spark clusters can be dropped with no loss of data since all the data is stored in Azure Blob storage, Azure Data Lake Storage Gen1 or Azure Data Lake Storage Gen2.
SLASLA HDInsight の Spark クラスターでは、24 時間無休体制のサポートと、アップタイム 99.9% の SLA が提供されます。Spark clusters in HDInsight come with 24/7 support and an SLA of 99.9% up-time.

HDInsight の Apache Spark クラスターには、クラスターで使用できる以下のコンポーネントが既定で含まれています。Apache Spark clusters in HDInsight include the following components that are available on the clusters by default.

HDInsight の Spark クラスターには、Microsoft Power BI などの BI ツールからの接続を可能にする ODBC ドライバーが用意されています。HDInsight Spark clusters an ODBC driver for connectivity from BI tools such as Microsoft Power BI.

Spark クラスターのアーキテクチャSpark cluster architecture

HDInsight Spark のアーキテクチャ

HDInsight クラスターで Spark を実行する方法を理解することで、Spark のコンポーネントを理解しやすくなります。It's easy to understand the components of Spark by understanding how Spark runs on HDInsight clusters.

Spark アプリケーションは、独立したプロセスのセットとしてクラスターで実行されます。Spark applications run as independent sets of processes on a cluster. メイン プログラム (ドライバー プログラムと呼ばれる) の SparkContext オブジェクトによって調整されます。Coordinated by the SparkContext object in your main program (called the driver program).

SparkContext は、アプリケーション間でリソースを割り当てる複数の種類のクラスター マネージャーに接続できます。The SparkContext can connect to several types of cluster managers, which give resources across applications. これらのクラスター マネージャーには、Apache Mesos、Apache Hadoop YARN、または Spark クラスター マネージャーが含まれます。These cluster managers include Apache Mesos, Apache Hadoop YARN, or the Spark cluster manager. HDInsight では、YARN クラスター マネージャーを使って Spark が実行されます。In HDInsight, Spark runs using the YARN cluster manager. 接続されると、Spark はクラスター内の worker ノードで Executor を取得します。Executor は、アプリケーションの計算を実行し、データを格納するプロセスです。Once connected, Spark acquires executors on workers nodes in the cluster, which are processes that run computations and store data for your application. 次に、アプリケーション コード (SparkContext に渡される JAR ファイルまたは Python ファイルで定義された) を Executor に送信します。Next, it sends your application code (defined by JAR or Python files passed to SparkContext) to the executors. 最後に、SparkContext はタスクを Executor に送信して実行させます。Finally, SparkContext sends tasks to the executors to run.

SparkContext は、ユーザーの main 関数を実行し、worker ノードでさまざまな並列処理を実行します。The SparkContext runs the user's main function and executes the various parallel operations on the worker nodes. その後、SparkContext は操作の結果を収集します。Then, the SparkContext collects the results of the operations. ワーカー ノードによるデータの読み取りと書き込みは、Hadoop 分散ファイル システムとの間で行われます。The worker nodes read and write data from and to the Hadoop distributed file system. また、ワーカー ノードは、変換後のデータを Resilient Distributed Dataset (RDD) としてメモリ内にキャッシュします。The worker nodes also cache transformed data in-memory as Resilient Distributed Datasets (RDDs).

SparkContext は Spark マスターに接続し、個々のタスクの有向グラフ (DAG) にアプリケーションを変換する処理を担います。The SparkContext connects to the Spark master and is responsible for converting an application to a directed graph (DAG) of individual tasks. ワーカー ノードの Executor プロセス内で実行されるタスクです。Tasks that get executed within an executor process on the worker nodes. アプリケーションはそれぞれ独自の Executor プロセスを取得します。Each application gets its own executor processes. そのプロセスが、アプリケーション全体が終了するまで稼働し続けながら、複数のスレッドでタスクを実行します。Which stay up for the duration of the whole application and run tasks in multiple threads.

HDInsight の Spark のユース ケースSpark in HDInsight use cases

HDInsight の Spark クラスターでは、以下に挙げる主なシナリオを実現できます。Spark clusters in HDInsight enable the following key scenarios:

対話型のデータ分析と BIInteractive data analysis and BI

HDInsight の Apache Spark では、Azure Blob Storage、Azure Data Lake Gen1 または Azure Data Lake Storage Gen2 にデータが格納されます。Apache Spark in HDInsight stores data in Azure Blob Storage, Azure Data Lake Gen1, or Azure Data Lake Storage Gen2. ビジネス エキスパートや重要な意思決定者は、そのデータを分析してレポートを作成することができます。Business experts and key decision makers can analyze and build reports over that data. 分析されたデータから Microsoft Power BI を使用して対話型レポートを作成します。And use Microsoft Power BI to build interactive reports from the analyzed data. アナリストはクラスター ストレージ内の非構造化データや半構造化データから作業を開始し、そのデータのスキーマを Notebook を使用して定義してから、Microsoft Power BI を使用してデータ モデルを作成することができます。Analysts can start from unstructured/semi structured data in cluster storage, define a schema for the data using notebooks, and then build data models using Microsoft Power BI. また、HDInsight の Spark クラスターでは Tableau などの多数のサードパーティ製 BI ツールもサポートされるので、データ アナリストやビジネス エキスパート、重要な意思決定者にとって使いやすくなります。Spark clusters in HDInsight also support a number of third-party BI tools. Tableau などにより、データ アナリスト、ビジネス エキスパート、および重要な意思決定者にとって容易になります。Such as Tableau, making it easier for data analysts, business experts, and key decision makers.

Spark Machine LearningSpark Machine Learning

Apache Spark には MLlib が付属します。Apache Spark comes with MLlib. MLlib は、Spark を基に作成された機械学習ライブラリで、HDInsight の Spark クラスターから使用できます。MLlib is a machine learning library built on top of Spark that you can use from a Spark cluster in HDInsight. HDInsight の Spark クラスターには、機械学習用のさまざまな種類のパッケージを含む Python ディストリビューションである Anaconda も含まれています。Spark cluster in HDInsight also includes Anaconda, a Python distribution with different kinds of packages for machine learning. さらに、Jupyter および Zeppelin Notebook の組み込みサポートを組み合わせることにより、機械学習アプリケーションを作成するための環境が得られます。And with built-in support for Jupyter and Zeppelin notebooks, you have an environment for creating machine learning applications.

Spark のストリーミングおよびリアルタイム データ分析Spark streaming and real-time data analysis

HDInsight の Spark クラスターには、リアルタイム分析ソリューションを構築するための豊富なサポートが用意されています。Spark clusters in HDInsight offer a rich support for building real-time analytics solutions. Spark には既に Kafka、Flume、Twitter、ZeroMQ、TCP ソケットなどの多数のソースからデータを取り込むためのコネクタがあります。Spark already has connectors to ingest data from many sources like Kafka, Flume, Twitter, ZeroMQ, or TCP sockets. さらに、Azure Event Hubs からデータを取り込むためのファーストクラスのサポートが HDInsight の Spark によって追加されます。Spark in HDInsight adds first-class support for ingesting data from Azure Event Hubs. Event Hubs は、Azure で最も広く使用されているキュー サービスです。Event Hubs is the most widely used queuing service on Azure. Event Hubs が完全にサポートされることから、HDInsight の Spark クラスターは、リアルタイム分析パイプラインを構築するうえで理想的なプラットフォームです。Having complete support for Event Hubs makes Spark clusters in HDInsight an ideal platform for building real-time analytics pipeline.

次の手順Next Steps

この概要では、Azure HDInsight の Apache Spark の基本的な事柄について説明しました。In this overview, you've got a basic understanding of Apache Spark in Azure HDInsight. HDInsight の Apache Spark について詳しくは、次の記事を参照してください。HDInsight Spark クラスターを作成して、いくつかのサンプル Spark クエリを実行できます。You can use the following articles to learn more about Apache Spark in HDInsight, and you can create an HDInsight Spark cluster and further run some sample Spark queries: