HDInsight 上の ML Services 向けのコンピューティング コンテキスト オプションCompute context options for ML Services on HDInsight

Azure HDInsight 上の ML Services は、コンピューティング コンテキストを設定することによって呼び出しの実行方法を制御します。ML Services on Azure HDInsight controls how calls are executed by setting the compute context. この記事では、HDInsight クラスターやエッジ ノードの複数のコア間で実行を並列化するかどうかとその方法を指定する際に利用できるオプションについて説明します。This article outlines the options that are available to specify whether and how execution is parallelized across cores of the edge node or HDInsight cluster.

クラスターのエッジ ノードは、クラスターへの接続と R スクリプトの実行に便利な場所です。The edge node of a cluster provides a convenient place to connect to the cluster and to run your R scripts. エッジ ノードでは、エッジ ノード サーバーのコア間で、RevoScaleR の並列化された分散関数を実行できます。With an edge node, you have the option of running the parallelized distributed functions of RevoScaleR across the cores of the edge node server. また、RevoScaleR の Hadoop Map Reduce または Apache Spark コンピューティング コンテキストを使用して、クラスターのノード間でこれらの関数を実行することもできます。You can also run them across the nodes of the cluster by using RevoScaleR’s Hadoop Map Reduce or Apache Spark compute contexts.

Azure HDInsight 上の ML ServicesML Services on Azure HDInsight

Azure HDInsight の ML Services は、R ベースの分析を行うための最新の機能を備えています。ML Services on Azure HDInsight provides the latest capabilities for R-based analytics. Apache Hadoop HDFS 内の Azure Blob ストレージ アカウントのコンテナー、Data Lake Store、またはローカルの Linux ファイル システムに格納されているデータを使用します。It can use data that is stored in an Apache Hadoop HDFS container in your Azure Blob storage account, a Data Lake Store, or the local Linux file system. ML Services はオープンソース R が基になっているため、構築する R ベースのアプリケーションでは、8,000 を超えるオープンソース R パッケージのどれでも適用できます。Since ML Services is built on open-source R, the R-based applications you build can apply any of the 8000+ open-source R packages. また、RevoScaleR (ML Services に付属する Microsoft のビッグ データ分析パッケージ) のルーチンも使用できます。They can also use the routines in RevoScaleR, Microsoft’s big data analytics package that is included with ML Services.

エッジ ノードに対する計算コンテキストCompute contexts for an edge node

一般に、エッジ ノードの ML Services で実行される R スクリプトは、そのノードの R インタープリター内で実行されます。In general, an R script that's run in ML Services cluster on the edge node runs within the R interpreter on that node. RevoScaleR 関数を呼び出すステップは例外です。The exceptions are those steps that call a RevoScaleR function. RevoScaleR 呼び出しは、RevoScaleR コンピューティング コンテキストの設定方法によって決定されるコンピューティング環境で実行されます。The RevoScaleR calls run in a compute environment that is determined by how you set the RevoScaleR compute context. エッジ ノードから R スクリプトを実行する際に設定可能なコンピューティング コンテキストの値は次のとおりです。When you run your R script from an edge node, the possible values of the compute context are:

  • local sequential (local)local sequential (local)
  • local parallel (localpar)local parallel (localpar)
  • Map ReduceMap Reduce
  • SparkSpark

オプション locallocalpar の違いは、rxExec 呼び出しを実行する方法のみです。The local and localpar options differ only in how rxExec calls are executed. RevoScaleR の numCoresToUse オプションの使用を通じて別途指定されている (rxOptions(numCoresToUse=6) など) 場合を除き、どちらも、他の rx 関数呼び出しは使用可能なすべてのコアで並列に実行します。They both execute other rx-function calls in a parallel manner across all available cores unless specified otherwise through use of the RevoScaleR numCoresToUse option, for example rxOptions(numCoresToUse=6). 並列実行は、パフォーマンスの面で最も有利なオプションです。Parallel execution options offer optimal performance.

次の表は、呼び出しの実行方法を設定する各種コンピューティング コンテキスト オプションをまとめたものです。The following table summarizes the various compute context options to set how calls are executed:

計算コンテキストCompute context 設定方法How to set 実行コンテキストExecution context
Local sequentialLocal sequential rxSetComputeContext('local')rxSetComputeContext('local') エッジ ノード サーバーのコアの実行の並列化 (順次実行される rxExec 呼び出しを除く)Parallelized execution across the cores of the edge node server, except for rxExec calls, which are executed serially
Local parallelLocal parallel rxSetComputeContext('localpar')rxSetComputeContext('localpar') エッジ ノード サーバーのコアの実行の並列化Parallelized execution across the cores of the edge node server
SparkSpark RxSpark()RxSpark() HDI クラスターのノード間での、Spark を介した分散実行の並列化Parallelized distributed execution via Spark across the nodes of the HDI cluster
Map ReduceMap Reduce RxHadoopMR()RxHadoopMR() HDI クラスターのノード間での Map Reduce を介した分散実行の並列化Parallelized distributed execution via Map Reduce across the nodes of the HDI cluster

コンピューティング コンテキストの決定に関するガイドラインGuidelines for deciding on a compute context

並列実行の 3 つの方法のうち、どれを選ぶかは、分析作業の性質、データのサイズ、データの場所によって決まります。Which of the three options you choose that provide parallelized execution depends on the nature of your analytics work, the size, and the location of your data. どのコンピューティング コンテキストを使用すればよいかをはっきり示す基準はありません。There's no simple formula that tells you, which compute context to use. ただし、適切なものを選択したり、少なくともベンチマークの実行前に選択肢を絞り込んだりするのに役立つ、いくつかの基本原則はあります。There are, however, some guiding principles that can help you make the right choice, or, at least, help you narrow down your choices before you run a benchmark. これらの基本原則を次に示します。These guiding principles include:

  • ローカルの Linux ファイル システムは HDFS より処理が高速です。The local Linux file system is faster than HDFS.
  • データがローカルで XDF にある場合、繰り返しの分析の処理が速くなります。Repeated analyses are faster if the data is local, and if it's in XDF.
  • テキスト データ ソースから少量のデータをストリーミングすることをお勧めします。It's preferable to stream small amounts of data from a text data source. データ量が多い場合は、分析の前に XDF に変換してください。If the amount of data is larger, convert it to XDF before analysis.
  • 分析用のエッジ ノードにデータをコピーまたはストリーミングする際に生じるオーバーヘッドは、データ量が非常に多いと管理できなくなります。The overhead of copying or streaming the data to the edge node for analysis becomes unmanageable for very large amounts of data.
  • ApacheSpark は、Hadoop での分析については Map Reduce より高速です。ApacheSpark is faster than Map Reduce for analysis in Hadoop.

これらの原則を考慮したうえで、コンピューティング コンテキストを選択するための、いくつかの一般的な経験則を以降のセクションで取り上げます。Given these principles, the following sections offer some general rules of thumb for selecting a compute context.


  • 分析するデータが少量で、繰り返し分析が必要ない場合は、データを分析ルーチンに直接ストリーミングして、local または localpar を使用します。If the amount of data to analyze is small and doesn't require repeated analysis, then stream it directly into the analysis routine using local or localpar.
  • 分析するデータが少量または中規模の量で、繰り返し分析が必要である場合は、データをローカル ファイル システムにコピーして XDF にインポートし、local または localpar を使用して分析します。If the amount of data to analyze is small or medium-sized and requires repeated analysis, then copy it to the local file system, import it to XDF, and analyze it via local or localpar.

Apache SparkApache Spark

  • 分析するデータが大量である場合、RxHiveData または RxParquetData を使用して Spark データフレームにインポートするか、ストレージに問題がなければ、HDFS の XDF にインポートし、Spark コンピューティング コンテキストを使用して分析を行います。If the amount of data to analyze is large, then import it to a Spark DataFrame using RxHiveData or RxParquetData, or to XDF in HDFS (unless storage is an issue), and analyze it using the Spark compute context.

Apache Hadoop Map ReduceApache Hadoop Map Reduce

  • Map Reduce コンピューティング コンテキストは、一般に処理が低速になるため、Spark コンピューティング コンテキストを使用して解決不可能な問題が発生した場合のみ使用してください。Use the Map Reduce compute context only if you come across an insurmountable problem with the Spark compute context since it's generally slower.

rxSetComputeContext のインライン ヘルプInline help on rxSetComputeContext

RevoScaleR コンピューティング コンテキストの詳細と例については、次のようにして rxSetComputeContext メソッドの R のインライン ヘルプを参照してください。For more information and examples of RevoScaleR compute contexts, see the inline help in R on the rxSetComputeContext method, for example:

> ?rxSetComputeContext

Machine Learning Server documentation (Machine Learning Server ドキュメント)」の「Distributed computing overview (分散コンピューティングの概要)」にも関連情報があります。You can also refer to the Distributed computing overview in Machine Learning Server documentation.

次のステップNext steps

この記事では、HDInsight クラスターやエッジ ノードの複数のコア間で実行を並列化するかどうかとその方法を指定する際に利用できるオプションについて説明しました。In this article, you learned about the options that are available to specify whether and how execution is parallelized across cores of the edge node or HDInsight cluster. HDInsight クラスターで ML Services を使用する方法の詳細については、次のトピックを参照してください。To learn more about how to use ML Services with HDInsight clusters, see the following topics: