Azure HDInsight の ML Services 向けの Azure storage ソリューションAzure storage solutions for ML Services on Azure HDInsight

HDInsight 上の ML Services には、分析結果を含んだオブジェクトや、データ、コードを永続化するための異なるストレージ ソリューションがあります。ML Services on HDInsight can use different storage solutions to persist data, code, or objects that contain results from analysis. そのソリューションの例を次に示します。These solutions include the following options:

ご自身の HDInsight クラスターで、複数の Azure ストレージ アカウント (またはコンテナー) にアクセスすることもできます。You also have the option of accessing multiple Azure storage accounts or containers with your HDInsight cluster. Azure File Storage は、エッジ ノード用としての利便性に優れたデータ ストレージ オプションです。このストレージを選択した場合、Azure Storage ファイル共有を Linux ファイル システムなどにマウントすることができます。Azure File storage is a convenient data storage option for use on the edge node that enables you to mount an Azure storage file share to, for example, the Linux file system. ただし Azure ファイル共有は、サポートされている オペレーティング システム (Windows や Linux など) を使用している任意のシステムでマウントし、使用することができます。But Azure File shares can be mounted and used by any system that has a supported operating system such as Windows or Linux.

HDInsight で Apache Hadoop クラスターを作成するときに、Azure storage アカウントまたは Data Lake Storage のどちらかを指定します。When you create an Apache Hadoop cluster in HDInsight, you specify either an Azure Storage account or Data Lake Storage. そのアカウントの特定のストレージ コンテナーが、作成したクラスターのファイル システム (Hadoop 分散ファイル システムなど) を保持します。A specific storage container from that account holds the file system for the cluster that you create (for example, the Hadoop Distributed File System). 詳しい情報とガイダンスについては、次のドキュメントを参照してください。For more information and guidance, see:

ML Services クラスターで Azure BLOB ストレージ アカウントを使用するUse Azure Blob storage accounts with ML Services cluster

次の手順は、ML Services クラスターを作成するときに複数のストレージ アカウントを指定した場合に、ML Services クラスターでのデータ アクセスと操作に対して、どのようにセカンダリ アカウントを使用するかを説明します。If you specified more than one storage account when creating your ML Services cluster, the following instructions explain how to use a secondary account for data access and operations on an ML Services cluster. ここでは、ストレージ アカウント storage1 と、container1 と呼ばれる既定のコンテナー、および storage2container2 を想定しています。Assume the following storage accounts and container: storage1 and a default container called container1, and storage2 with container2.

警告

パフォーマンス上の理由から、HDInsight クラスターは、指定したプライマリ ストレージ アカウントと同じデータ センターに作成されます。For performance purposes, the HDInsight cluster is created in the same data center as the primary storage account that you specify. HDInsight クラスター以外の場所でストレージ アカウントを使用することはできません。Using a storage account in a different location than the HDInsight cluster is not supported.

HDInsight で ML Services を使って既定のストレージを使用するUse the default storage with ML Services on HDInsight

  1. SSH クライアントを使用して、使用しているクラスターのエッジ ノードに接続します。Using an SSH client, connect to the edge node of your cluster. SSH と HDInsight クラスターの使用については、HDInsight での SSH の使用に関するページをご覧ください。For information on using SSH with HDInsight clusters, see Use SSH with HDInsight.

  2. サンプル ファイル mysamplefile.csv を /share ディレクトリにコピーします。Copy a sample file, mysamplefile.csv, to the /share directory.

    hadoop fs –mkdir /share
    hadoop fs –copyFromLocal mycsv.scv /share
    
  3. R Studio または別の R コンソールに切り替えて、R コードを記述して、名前ノードを既定に設定し、アクセスするファイルの場所を設定します。Switch to R Studio or another R console, and write R code to set the name node to default and location of the file you want to access.

    myNameNode <- "default"
    myPort <- 0
    
    #Location of the data:  
    bigDataDirRoot <- "/share"  
    
    #Define Spark compute context:
    mySparkCluster <- RxSpark(nameNode=myNameNode, consoleOutput=TRUE)
    
    #Set compute context:
    rxSetComputeContext(mySparkCluster)
    
    #Define the Hadoop Distributed File System (HDFS) file system:
    hdfsFS <- RxHdfsFileSystem(hostName=myNameNode, port=myPort)
    
    #Specify the input file to analyze in HDFS:
    inputFile <-file.path(bigDataDirRoot,"mysamplefile.csv")
    

ディレクトリとファイルの参照はすべて、ストレージ アカウント wasbs://container1@storage1.blob.core.windows.net を指しています。All the directory and file references point to the storage account wasbs://container1@storage1.blob.core.windows.net. これは、HDInsight クラスターに関連付けられる既定のストレージ アカウントです。This is the default storage account that's associated with the HDInsight cluster.

HDInsight で ML Services を使って追加のストレージを使用するUse the additional storage with ML Services on HDInsight

ここで、storage2container2 の /private ディレクトリにある mysamplefile1.csv というファイルを処理するとします。Now, suppose you want to process a file called mysamplefile1.csv that's located in the /private directory of container2 in storage2.

R コードで、名前ノード参照が storage2 ストレージ アカウントを指すようにします。In your R code, point the name node reference to the storage2 storage account.

myNameNode <- "wasbs://container2@storage2.blob.core.windows.net"
myPort <- 0

#Location of the data:
bigDataDirRoot <- "/private"

#Define Spark compute context:
mySparkCluster <- RxSpark(consoleOutput=TRUE, nameNode=myNameNode, port=myPort)

#Set compute context:
rxSetComputeContext(mySparkCluster)

#Define HDFS file system:
hdfsFS <- RxHdfsFileSystem(hostName=myNameNode, port=myPort)

#Specify the input file to analyze in HDFS:
inputFile <-file.path(bigDataDirRoot,"mysamplefile1.csv")

ここでは、ディレクトリとファイルの参照はすべて、ストレージ アカウント wasbs://container2@storage2.blob.core.windows.net を指しています。All of the directory and file references now point to the storage account wasbs://container2@storage2.blob.core.windows.net. これは、先ほど指定した名前ノードです。This is the Name Node that you’ve specified.

次のように、/user/RevoShare/<SSH username>storage2 ディレクトリを構成します。Configure the /user/RevoShare/<SSH username> directory on storage2 as follows:

hadoop fs -mkdir wasbs://container2@storage2.blob.core.windows.net/user
hadoop fs -mkdir wasbs://container2@storage2.blob.core.windows.net/user/RevoShare
hadoop fs -mkdir wasbs://container2@storage2.blob.core.windows.net/user/RevoShare/<RDP username>

ML Services クラスターで Azure Data Lake Storage を使用するUse Azure Data Lake Storage with ML Services cluster

ご自身の HDInsight クラスターで Data Lake Storage を使用するには、使用する各 Azure Data Lake Storage にご自身のクラスター アクセスを付与する必要があります。To use Data Lake Storage with your HDInsight cluster, you need to give your cluster access to each Azure Data Lake Storage that you want to use. 既定のストレージ (または追加のストレージ) として Azure Data Lake Storage アカウントを使用する HDInsight クラスターを Azure portal で作成する方法については、Azure portal を使用して、Data Lake Storage を使用する HDInsight クラスターを作成する方法に関するページを参照してください。For instructions on how to use the Azure portal to create a HDInsight cluster with an Azure Data Lake Storage account as the default storage or as additional storage, see Create an HDInsight cluster with Data Lake Storage using Azure portal.

その後、(前の手順で説明した) セカンダリ Azure ストレージ アカウントと同じように、このストレージを R スクリプトで使用します。You then use the storage in your R script much like you did a secondary Azure storage account as described in the previous procedure.

Azure Data Lake Storage へのクラスター アクセスの追加Add cluster access to your Azure Data Lake Storage

HDInsight クラスターに関連付けられている Azure Active Directory (Azure AD) サービス プリンシパルを使用して、Data Lake Storage にアクセスします。You access Data Lake Storage by using an Azure Active Directory (Azure AD) Service Principal that's associated with your HDInsight cluster.

  1. HDInsight クラスターを作成するときに、 [データ ソース] タブの [クラスター AAD ID] を選択します。When you create your HDInsight cluster, select Cluster AAD Identity from the Data Source tab.

  2. [クラスター AAD ID] ダイアログ ボックスの [AD サービス プリンシパルの選択] で、 [新規作成] を選択します。In the Cluster AAD Identity dialog box, under Select AD Service Principal, select Create new.

サービス プリンシパルに名前を付けてパスワードを設定したら、 [ADLS アクセスを管理する] をクリックして、サービス プリンシパルをご自身の Data Lake Storage と関連付けます。After you give the Service Principal a name and create a password for it, click Manage ADLS Access to associate the Service Principal with your Data Lake Storage.

また、クラスター作成後に 1 つ以上の Data Lake ストレージ アカウントへのクラスター アクセスを追加することもできます。It's also possible to add cluster access to one or more Data Lake storage accounts following cluster creation. そのためには、Data Lake Storage の Azure portal エントリを開き、 [データ エクスプローラー]、[アクセス]、[追加] の順に移動します。Open the Azure portal entry for a Data Lake Storage and go to Data Explorer > Access > Add.

HDInsight で ML Services から Data Lake Storage Gen1 にアクセスする方法How to access Data Lake Storage Gen1 from ML Services on HDInsight

Data Lake Storage Gen1 へのアクセスを付与したら、Azure セカンダリ ストレージ アカウントと同様に、HDInsight の ML Services クラスターでストレージを使用できます。Once you've given access to Data Lake Storage Gen1, you can use the storage in ML Services cluster on HDInsight the way you would a secondary Azure storage account. 唯一の違いは、プレフィックスが次のように wasbs:// から adl:// に変わることです。The only difference is that the prefix wasbs:// changes to adl:// as follows:

# Point to the ADL Storage (e.g. ADLtest)
myNameNode <- "adl://rkadl1.azuredatalakestore.net"
myPort <- 0

# Location of the data (assumes a /share directory on the ADL account)
bigDataDirRoot <- "/share"  

# Define Spark compute context
mySparkCluster <- RxSpark(consoleOutput=TRUE, nameNode=myNameNode, port=myPort)

# Set compute context
rxSetComputeContext(mySparkCluster)

# Define HDFS file system
hdfsFS <- RxHdfsFileSystem(hostName=myNameNode, port=myPort)

# Specify the input file in HDFS to analyze
inputFile <-file.path(bigDataDirRoot,"mysamplefile.csv")

次に示すコマンドは、RevoShare ディレクトリを含む Data Lake Storage Gen1 アカウントを構成し、前の例のサンプル .csv ファイルを追加します。The following commands are used to configure the Data Lake Storage Gen1 account with the RevoShare directory and add the sample .csv file from the previous example:

hadoop fs -mkdir adl://rkadl1.azuredatalakestore.net/user
hadoop fs -mkdir adl://rkadl1.azuredatalakestore.net/user/RevoShare
hadoop fs -mkdir adl://rkadl1.azuredatalakestore.net/user/RevoShare/<user>

hadoop fs -mkdir adl://rkadl1.azuredatalakestore.net/share

hadoop fs -copyFromLocal /usr/lib64/R Server-7.4.1/library/RevoScaleR/SampleData/mysamplefile.csv adl://rkadl1.azuredatalakestore.net/share

hadoop fs –ls adl://rkadl1.azuredatalakestore.net/share

HDInsight で ML Services を使って Azure File Storage を使用するUse Azure File storage with ML Services on HDInsight

Azure Files という、エッジ ノード上で使用できる便利なデータ ストレージを選択することも可能です。There's also a convenient data storage option for use on the edge node called Azure Files. Azure Files を使用すると、Azure Storage ファイル共有を Linux ファイル システムにマウントできます。It enables you to mount an Azure Storage file share to the Linux file system. このストレージは特に、HDFS ではなくエッジ ノード上でネイティブ ファイル システムを使用する方がよい場合に、後で必要となる可能性があるデータ ファイル、R スクリプト、結果オブジェクトを格納するのに便利です。This option can be handy for storing data files, R scripts, and result objects that might be needed later, especially when it makes sense to use the native file system on the edge node rather than HDFS.

Azure Files の大きな利点は、サポートされている OS (Windows や Linux など) を使用している任意のシステムで、ファイル共有をマウントして使用できることです。A major benefit of Azure Files is that the file shares can be mounted and used by any system that has a supported OS such as Windows or Linux. たとえば、チーム内のメンバーが所有する他の HDInsight クラスターや、Azure VM、オンプレミスのシステムでも使用できます。For example, it can be used by another HDInsight cluster that you or someone on your team has, by an Azure VM, or even by an on-premises system. 詳細については、次を参照してください。For more information, see:

次のステップNext steps