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

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

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

Spark とはWhat is 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. メモリ内計算は、HDFS 経由でデータを共有する Hadoop などのディスク ベースのアプリケーションよりもはるかに高速です。In-memory computing is much faster than disk-based applications, such as Hadoop, which shares data through 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.

FeatureFeature 説明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 での Spark クラスターの概要See Get started with Spark cluster in HDInsight
使いやすさEase of use HDInsight の Spark クラスターには、Jupyter Notebook と Zeppelin Notebook が含まれています。Spark cluster in HDInsight include Jupyter and Zeppelin notebooks. 対話型のデータ処理と視覚化にこれらの Notebook を使用できます。You can use these notebooks for interactive data processing and visualization.
REST APIREST APIs HDInsight の Spark クラスターには、ジョブの送信と監視をリモートで実行する REST API ベースの Spark ジョブ サーバーである Livy が含まれています。Spark clusters in HDInsight include Livy, a REST API-based Spark job server to remotely submit and monitor jobs.
Azure Data Lake Store のサポートSupport for Azure Data Lake Store HDInsight の Spark クラスターは、プライマリ ストレージまたは追加のストレージの両方として、Azure Data Lake Store を使用できます。Spark clusters in HDInsight can use Azure Data Lake Store as both the primary storage or additional storage. Data Lake Store の詳細については、「 Azure Data Lake Store の概要」を参照してください。For more information on Data Lake Store, see Overview of Azure Data Lake Store.
Azure サービスとの統合Integration with Azure services HDInsight の Spark クラスターには、Azure Event Hubs へのコネクタが付属しています。Spark cluster in HDInsight comes with a connector to Azure Event Hubs. Spark の一部として既に使用できる Kafka に加えて、Event Hubs を使用してストリーミング アプリケーションを作成できます。You can build streaming applications using the Event Hubs, in addition to 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. 詳細については、HDInsight での ML Server の使用開始に関するページをご覧ください。For more information, see Get started using ML Server in 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 の使用HDInsight for VS Code の使用Azure Toolkit for Eclipse の使用に関する各ページを参照してください。For more information, see Use Azure Toolkit for IntelliJ IDEA, Use HDInsight 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.
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, etc.
スケーラビリティScalability HDInsight により、クラスター ノードの数を変更できます。HDInsight allow you to change the number of cluster nodes. また、すべてのデータは Azure Storage または Data Lake Store に格納されるため、Spark クラスターはデータの損失なしで削除できます。Also, Spark clusters can be dropped with no loss of data since all the data is stored in Azure Storage or Data Lake Store.
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 の Spark クラスターには、クラスターで使用できる以下のコンポーネントが既定で含まれています。Spark clusters in HDInsight include the following components that are available on the clusters by default.

HDInsight の Spark クラスターでは、Microsoft Power BI などの BI ツールから HDInsight の Spark クラスターに接続するための ODBC ドライバーも提供されます。Spark clusters in HDInsight also provide an ODBC driver for connectivity to Spark clusters in HDInsight from BI tools such as Microsoft Power BI.

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

HDInsight Spark のアーキテクチャ

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

Spark アプリケーションは、メイン プログラム (ドライバー プログラムと呼ばれる) の SparkContext オブジェクトによって調整された、独立したプロセスのセットとしてクラスターで実行されます。Spark applications run as independent sets of processes on a cluster, 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 allocate resources across applications. これらのクラスター マネージャーには、Apache Mesos、Apache YARN、または Spark クラスター マネージャーが含まれます。These cluster managers include Apache Mesos, Apache 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 分散ファイル システム (HDFS) との間で行われます。The worker nodes read and write data from and to the Hadoop distributed file system (HDFS). また、ワーカー ノードは、変換後のデータを Resilient Distributed Dataset (RDD) としてメモリ内にキャッシュします。The worker nodes also cache transformed data in-memory as Resilient Distributed Datasets (RDDs).

SparkContext は Spark マスターに接続し、worker ノードの Executor プロセス内で実行される個々のタスクの有向グラフ (DAG) にアプリケーションを変換する処理を行います。The SparkContext connects to the Spark master and is responsible for converting an application to a directed graph (DAG) of individual 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 Storage または Azure Data Lake Store にデータが格納されます。Apache Spark in HDInsight stores data in Azure Storage or Azure Data Lake Store. ビジネス エキスパートや重要な意思決定者は、そのデータを分析してレポートを作成し、分析されたデータから Microsoft Power BI を使用して対話型レポートを作成できます。Business experts and key decision makers can analyze and build reports over that data 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 such as Tableau making it easier for data analysts, business experts, and key decision makers.

    チュートリアル: Power BI を使用して Spark データを視覚化するTutorial: Visualize Spark data using Power BI

  • Spark Machine LearningSpark Machine Learning

    Apache Spark には、Spark を基に作成された機械学習ライブラリである MLlib が付属し、HDInsight の Spark クラスターから使用できます。Apache Spark comes with MLlib, 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 a variety of packages for machine learning. これと Jupyter および Zeppelin Notebook の組み込みサポートを組み合わせることにより、機械学習アプリケーションを作成するための環境が得られます。Couple this with a built-in support for Jupyter and Zeppelin notebooks, and you have an environment for creating machine learning applications.

    チュートリアル: HVAC データを使用して建物の温度を予測する チュートリアル: 食品検査の結果を予測するTutorial: Predict building temperatures using HVAC data Tutorial: Predict food inspection results

  • 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 ソケットなどの多数のソースからデータを取り込むためのコネクタがありますが、HDInsight の Spark では Azure Event Hubs からデータを取り込むためのファーストクラスのサポートが追加されます。While Spark already has connectors to ingest data from many sources like Kafka, Flume, Twitter, ZeroMQ, or TCP sockets, 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 an out-of-the-box support for Event Hubs makes Spark clusters in HDInsight an ideal platform for building real-time analytics pipeline.

どこから始めるかWhere do I start?

HDInsight の Spark の詳細については、次の記事を使用できます。You can use the following articles to learn more about Spark in HDInsight:

次の手順Next Steps

この概要では、Azure HDInsight の Apache Spark の基本について理解します。In this overview, you get some basic understanding of Apache Spark in Azure HDInsight. 次の記事に進む前に、HDInsight Spark クラスターを作成し、いくつかの Spark SQL クエリを実行する方法を確認します。Advance to the next article to learn how to create an HDInsight Spark cluster and run some Spark SQL queries: