適用于 Azure HDInsight 上ML服務的 Azure 儲存體解決方案

重要

此內容已淘汰,未來將不會更新。 自 2020 年 12 月 31 日起,Azure HDInsight 3.6 ML Services (Machine Learning Server) 叢集類型已淘汰

ML HDInsight 上的服務可以使用不同的儲存解決方案來保存包含分析結果的資料、程式碼或物件。 這些解決方案包括下列選項:

您也可以使用 HDInsight 叢集存取多個 Azure 儲存體帳戶或容器。 Azure 檔案儲存體是一個方便的資料儲存體選項,可讓您在邊緣節點上使用,例如將 Azure 檔案共用掛接至 Linux 檔案系統。 但是,任何具有支援作業系統的系統,例如 Windows 或 Linux,都可以掛接及使用 Azure 檔案共用。

當您在 HDInsight 中建立 Apache Hadoop 叢集時,您可以指定Azure Blob 儲存體帳戶或Data Lake Storage Gen1。 來自該帳戶的特定儲存體容器,會保留您所建立叢集的檔案系統 (例如,Hadoop 分散式檔案系統)。 如需詳細資訊與指導方針,請參閱:

搭配 ML 服務叢集使用 Azure Blob 儲存體帳戶

如果您在建立 ML 服務叢集時指定一個以上的儲存體帳戶,下列指示說明如何針對在 ML 服務叢集上的資料存取和作業使用次要帳戶。 假設下列儲存體帳戶和容器:storage1 和名為 container1 的預設容器,以及具有 container2storage2

警告

基於效能目的,系統會在與您指定的主要儲存體帳戶相同資料中心內建立 HDInsight 叢集。 不支援在與 HDInsight 叢集不同的位置中使用儲存體帳戶。

搭配 HDInsight 上的 ML 服務使用預設儲存體

  1. 使用 SSH 用戶端,連線到您叢集的邊緣節點。 如需搭配 HDInsight 叢集使用 SSH 的相關資訊,請參閱搭配 HDInsight 使用 SSH

  2. 在 /share 目錄建立範例檔案 mysamplefile.csv。

    hadoop fs –mkdir /share
    hadoop fs –copyFromLocal mycsv.scv /share
    
  3. 切換至 R Studio 或其他 R 主控台,然後撰寫 R 程式碼,將名稱節點設定為預設和您想要存取的檔案位置。

    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。 這是與 HDInsight 叢集關聯的「預設儲存體帳戶」

搭配 HDInsight 上的 ML 服務使用其他儲存體

現在,假設您想要處理名為 mysamplefile1.csv 的檔案,該檔案位於storage2container2的 /private 目錄。

在 R 程式碼中,將名稱節點參考指向 storage2 儲存體帳戶。

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。 這是您已指定的 名稱節點

設定 /user/RevoShare/<SSH username>storage2 上的目錄,如下所示:

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 Gen1

若要搭配 HDInsight 叢集使用Data Lake Storage Gen1,您必須將叢集存取權授與您想要使用的每個 Azure Data Lake Storage Gen1。 如需如何使用 Azure 入口網站 建立具有 Azure Data Lake Storage Gen1 的 HDInsight 叢集作為預設儲存體或額外儲存體的指示,請參閱使用 Azure 入口網站 建立具有 Data Lake Storage Gen1 的 HDInsight 叢集

接著,您會以和使用次要 Azure 儲存體帳戶的方式 (如先前程序所述) 很像的方式,在 R 指令碼中使用儲存體。

將叢集存取新增至您的 Azure Data Lake Storage Gen1

您可以使用與 HDInsight 叢集相關聯的Azure Active Directory (Azure AD) 服務主體來存取Data Lake Storage Gen1。

  1. 當您建立 HDInsight 叢集時,請從 [資料來源] 索引標籤選取[叢集Azure AD身分識別]。

  2. 在 [叢集Azure AD身分識別] 對話方塊的[選取 AD 服務主體] 底下,選取 [新建]。

在為服務主體命名並建立密碼後,請按一下 [管理 ADLS 存取],以將該服務主體與您的 Data Lake Storage 產生關聯。

建立叢集之後,也可以將叢集存取新增至一或多個 Data Lake Storage Gen1 帳戶。 開啟Data Lake Storage Gen1 Azure 入口網站專案,然後移至Data Explorer > Access > Add

如何從 HDInsight 上的 ML 服務存取 Data Lake Storage Gen1

一旦您獲得Data Lake Storage Gen1的存取權,就可以在 HDInsight 上的 ML Services 叢集中使用儲存體,就像是次要 Azure 儲存體帳戶一樣。 唯一的差異在於前置詞 wasbs:// 變更為 adl:// ,如下所示:

# 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檔案:

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 服務使用Azure 檔案儲存體

另外還有一個方便的資料儲存選項,可在稱為Azure 檔案儲存體的邊緣節點上使用。 它可以讓您將 Azure 儲存體的檔案共用掛接至 Linux 檔案系統。 此選項對於儲存資料檔案、R 指令碼與結果物件相當便利,該結果物件在稍後可以於邊緣節點 (而不是 HDFS) 上使用原生檔案系統時需要。

Azure 檔案的主要優點是,只要是擁有受支援作業系統 (例如 Windows 或 Linux) 的系統,就可以掛接和使用檔案共用。 例如,您本人或您的小組成員所擁有的另一個 HDInsight 叢集,或是 Azure VM 甚或內部部署系統均可使用 Azure 檔案。 如需詳細資訊,請參閱

下一步