教學課程:使用 Azure Data Factory 在 HDInsight 中建立隨選 Apache Hadoop 叢集

在本教學課程中,您將瞭解如何使用 Azure Data Factory 在 Azure HDInsight 中視需要建立 Apache Hadoop 叢集。 接著,您會在 Azure Data Factory 中使用資料管線來執行 Hive 作業,並刪除叢集。 在本教學課程結束時,您將瞭解如何 operationalize 執行巨量數據作業,以排程執行叢集建立、作業執行和叢集刪除。

本教學課程涵蓋下列工作:

  • 建立 Azure 儲存體帳戶
  • 瞭解 Azure Data Factory 活動
  • 使用 Azure 入口網站 建立數據處理站
  • 建立連結服務
  • 建立新管線
  • 觸發管線
  • 監視管線
  • 確認輸出

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

  • 安裝 PowerShell Az 模組

  • Microsoft Entra 服務主體。 建立服務主體之後,請務必使用連結文章中的指示來擷取 應用程式標識碼驗證密鑰 。 您稍後在本教學課程中需要這些值。 此外,請確定服務主體是訂用帳戶或叢集建立所在的資源群組參與者角色的成員。 如需擷取必要值並指派正確角色的指示,請參閱 建立 Microsoft Entra 服務主體

建立初步的 Azure 物件

在本節中,您會建立各種物件,以用於您隨選建立的 HDInsight 叢集。 建立的記憶體帳戶將包含範例 HiveQL 腳本, partitionweblogs.hql您用來模擬在叢集上執行的範例 Apache Hive 作業。

本節會使用 Azure PowerShell 腳本來建立記憶體帳戶,並複製記憶體帳戶內的必要檔案。 本節中的 Azure PowerShell 範例腳本會執行下列工作:

  1. 登入 Azure。
  2. 建立 Azure 資源群組。
  3. 建立 Azure 儲存體帳戶。
  4. 在記憶體帳戶中建立 Blob 容器
  5. 複製 Blob 容器範例 HiveQL 腳本 (partitionweblogs.hql)。 範例腳本已在另一個公用 Blob 容器中使用。 下列 PowerShell 腳本會將這些檔案的複本複製到它所建立 Azure 儲存體 帳戶。

建立記憶體帳戶和複製檔案

重要

指定文稿所建立的 Azure 資源群組和 Azure 記憶體帳戶的名稱。 記下文本所輸出的資源組名記憶體帳戶名稱和記憶體帳戶名稱和記憶體帳戶密鑰。 您在下一節中需要這些記錄值。

$resourceGroupName = "<Azure Resource Group Name>"
$storageAccountName = "<Azure Storage Account Name>"
$location = "East US"

$sourceStorageAccountName = "hditutorialdata"  
$sourceContainerName = "adfv2hiveactivity"

$destStorageAccountName = $storageAccountName
$destContainerName = "adfgetstarted" # don't change this value.

####################################
# Connect to Azure
####################################
#region - Connect to Azure subscription
Write-Host "`nConnecting to your Azure subscription ..." -ForegroundColor Green
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
    Connect-AzAccount
}

# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"

#endregion

####################################
# Create a resource group, storage, and container
####################################

#region - create Azure resources
Write-Host "`nCreating resource group, storage account and blob container ..." -ForegroundColor Green

New-AzResourceGroup `
    -Name $resourceGroupName `
    -Location $location

New-AzStorageAccount `
    -ResourceGroupName $resourceGroupName `
    -Name $destStorageAccountName `
    -Kind StorageV2 `
    -Location $location `
    -SkuName Standard_LRS `
    -EnableHttpsTrafficOnly 1

$destStorageAccountKey = (Get-AzStorageAccountKey `
    -ResourceGroupName $resourceGroupName `
    -Name $destStorageAccountName)[0].Value

$sourceContext = New-AzStorageContext `
    -StorageAccountName $sourceStorageAccountName `
    -Anonymous

$destContext = New-AzStorageContext `
    -StorageAccountName $destStorageAccountName `
    -StorageAccountKey $destStorageAccountKey

New-AzStorageContainer `
    -Name $destContainerName `
    -Context $destContext
#endregion

####################################
# Copy files
####################################
#region - copy files
Write-Host "`nCopying files ..." -ForegroundColor Green

$blobs = Get-AzStorageBlob `
    -Context $sourceContext `
    -Container $sourceContainerName `
    -Blob "hivescripts\hivescript.hql"

$blobs|Start-AzStorageBlobCopy `
    -DestContext $destContext `
    -DestContainer $destContainerName `
    -DestBlob "hivescripts\partitionweblogs.hql"

Write-Host "`nCopied files ..." -ForegroundColor Green
Get-AzStorageBlob `
    -Context $destContext `
    -Container $destContainerName
#endregion

Write-host "`nYou will use the following values:" -ForegroundColor Green
write-host "`nResource group name: $resourceGroupName"
Write-host "Storage Account Name: $destStorageAccountName"
write-host "Storage Account Key: $destStorageAccountKey"

Write-host "`nScript completed" -ForegroundColor Green

確認記憶體帳戶

  1. 登入 Azure 入口網站
  2. 從左側流覽至 [所有服務>] [一般>資源群組]。
  3. 選取您在PowerShell腳本中建立的資源組名。 如果您列出太多資源群組,請使用篩選條件。
  4. 從 [概觀] 檢視中,除非您與其他專案共用資源群組,否則您會看到列出一個資源。 該資源是您稍早指定名稱的記憶體帳戶。 選取記憶體帳戶名稱。
  5. 選取 [ 容器] 圖格。
  6. 選取 adfgetstarted 容器。 您會看到名為 hivescripts的資料夾。
  7. 開啟 資料夾,並確定它包含範例腳本檔案 partitionweblogs.hql

瞭解 Azure Data Factory 活動

Azure Data Factory 會協調並自動化數據的行動和轉換。 Azure Data Factory 可以建立 HDInsight Hadoop 叢集 Just-In-Time 來處理輸入數據配量,並在處理完成時刪除叢集。

在 Azure Data Factory 中,數據處理站可以有一或多個數據管線。 數據管線有一或多個活動。 這些活動可成分兩種類型:

  • 數據移動活動。 您可以使用資料移動活動,將資料從源資料存放區移至目的地資料存放區。
  • 數據轉換活動。 您可以使用資料轉換活動來轉換/處理資料。 HDInsight Hive 活動是 Data Factory 支援的其中一個轉換活動。 在本教學課程中,您會使用Hive轉換活動。

在本文中,您會設定Hive活動以建立隨選 HDInsight Hadoop 叢集。 當活動執行以處理數據時,以下是會發生的情況:

  1. 系統會自動建立 HDInsight Hadoop 叢集,讓您即時處理配量。

  2. 輸入數據會藉由在叢集上執行HiveQL腳本來處理。 在本教學課程中,與Hive活動相關聯的HiveQL腳本會執行下列動作:

    • 使用現有的數據表 (hivesampletable) 建立另一個數據表 HiveSampleOut
    • 在HiveSampleOut數據表中,只填入原始hivesampletable的特定數據行。
  3. HDInsight Hadoop 叢集會在處理完成之後刪除,且叢集閑置的時間量(timeToLive 設定)。 如果下一個數據配量可用於處理此時間ToLive 空閒時間,則會使用相同的叢集來處理配量。

建立資料處理站

  1. 登入 Azure 入口網站

  2. 從左側功能表中,流覽至 + Create a resource>[分析>Data Factory]。

    Azure Data Factory on the portal.

  3. 輸入或選擇[新增資料處理站] 圖格的下列值:

    屬性
    名稱 輸入 Data Factory 的 [名稱] 。 此名稱必須是全域唯一的。
    版本 留在 V2
    訂用帳戶 選取 Azure 訂閱。
    資源群組 選取您使用PowerShell腳本建立的資源群組。
    Location 位置會自動設定為您稍早建立資源群組時所指定的位置。 在本教學課程中,位置會設定為 美國東部。
    啟用 GIT 取消核取此方塊。

    Create Azure Data Factory using Azure portal.

  4. 選取 建立。 建立數據處理站可能需要 2 到 4 分鐘的時間。

  5. 建立數據處理站之後,您會收到部署 成功 通知,其中包含 [移至資源 ] 按鈕。 選取 [移至資源 ] 以開啟Data Factory 預設檢視。

  6. 選取 [撰寫和監視] 以啟動 Azure Data Factory 撰寫和監視入口網站。

    Azure Data Factory portal overview.

建立連結服務

在本節中,您會在數據處理站內撰寫兩個鏈接的服務。

  • Azure 儲存體 連結服務,可將 Azure 記憶體帳戶連結至數據處理站。 隨選 HDInsight 叢集會使用此記憶體。 它也包含叢集上執行的Hive腳本。
  • 隨選 HDInsight 鏈接服務。 Azure Data Factory 會自動建立 HDInsight 叢集並執行 Hive 腳本。 接著,它會在叢集閑置之後刪除 HDInsight 叢集,以預先設定的時間。

建立 Azure 儲存體鏈接服務

  1. 從 [讓我們開始使用] 頁面的左窗格中,選取 [作者] 圖示。

    Create an Azure Data Factory linked service.

  2. 從視窗左下角選取 連線,然後選取 [+新增]。

    Create connections in Azure Data Factory.

  3. 在 [新增鏈接服務] 對話框中,選取 [Azure Blob 儲存體],然後選取 [繼續]。

    Create Azure Storage linked service for Data Factory.

  4. 為記憶體連結服務提供下列值:

    屬性
    名稱 輸入 HDIStorageLinkedService
    Azure 訂用帳戶 從下拉式清單中選取您的訂用帳戶。
    儲存體帳戶名稱 選取您在PowerShell腳本中建立的 Azure 儲存體 帳戶。

    選取 [ 測試連線 ],如果成功,請選取 [ 建立]。

    Provide name for Azure Storage linked service.

建立隨選 HDInsight 鏈接服務

  1. 再次選取 [ + 新增 ] 按鈕,以建立另一個鏈接服務。

  2. 在 [ 新增鏈接服務 ] 視窗中,選取 [ 計算] 索引標籤。

  3. 選取 [Azure HDInsight],然後選取 [ 繼續]。

    Create HDInsight linked service for Azure Data Factory.

  4. 在 [ 新增鏈接服務 ] 視窗中,輸入下列值,並將其餘值保留為預設值:

    屬性
    名稱 輸入 HDInsightLinkedService
    類型 選取 [ 隨選 HDInsight]。
    Azure 儲存體 連結服務 選取 HDIStorageLinkedService
    叢集類型 選取 hadoop
    存留時間 提供您希望 HDInsight 叢集在自動刪除之前可使用的持續時間。
    服務主體識別碼 提供您在必要條件中建立之 Microsoft Entra 服務主體的應用程式識別碼。
    服務主體金鑰 提供 Microsoft Entra 服務主體的驗證金鑰。
    叢集名稱前置詞 提供值,其前面會加上 Data Factory 所建立的所有叢集類型。
    訂用帳戶 從下拉式清單中選取您的訂用帳戶。
    選取資源群組 選取您在稍早使用的PowerShell腳本中建立的資源群組。
    OS 類型/叢集 SSH 用戶名稱 輸入 SSH 使用者名稱,通常是 sshuser
    OS 類型/叢集 SSH 密碼 提供 SSH 用戶的密碼
    OS 類型/叢集用戶名稱 輸入叢集使用者名稱,通常是 admin
    OS 類型/叢集密碼 提供叢集用戶的密碼。

    然後選取建立

    Provide values for HDInsight linked service.

建立新管線

  1. + 選取 [加號] 按鈕,然後選取 [管線]。

    Create a pipeline in Azure Data Factory.

  2. 在 [活動] 工具箱中,展開 [HDInsight],然後將 Hive 活動拖曳至管線設計工具介面。 在 [ 一般] 索引標籤中,提供活動的名稱。

    Add activities to Data Factory pipeline.

  3. 請確定您已選取 Hive 活動,選取 [HDI 叢集] 索引標籤 。從 [HDInsight 鏈接服務 ] 下拉式清單中,針對 HDInsight 選取您稍早 建立的連結服務 HDInsightLinkedService

    Provide HDInsight cluster details for the pipeline.

  4. 選取 [文稿] 索引標籤並完成下列步驟:

    1. 針對 [腳本鏈接服務],從下拉式清單中選取 [HDI 儲存體 LinkedService]。 此值是您稍早建立的記憶體連結服務。

    2. 針對 [檔案路徑],選取 [流覽 儲存體,然後流覽至範例 Hive 腳本可用的位置。 如果您稍早執行 PowerShell 文稿, 此位置應該是 adfgetstarted/hivescripts/partitionweblogs.hql

      Provide Hive script details for the pipeline.

    3. 在 [進階>參數] 底下,選取 。Auto-fill from script 此選項會尋找Hive腳本中需要值在運行時間的任何參數。

    4. [值 ] 文字框中,以 格式 wasbs://adfgetstarted@<StorageAccount>.blob.core.windows.net/outputfolder/新增現有的資料夾。 路徑會區分大小寫。 此路徑是將儲存文本輸出的位置。 wasbs架構是必要的,因為記憶體帳戶現在預設會啟用安全傳輸。

      Provide parameters for the Hive script.

  5. 選取 [驗證 ] 以驗證管線。 >> 選取 [右鍵] 按鈕以關閉驗證視窗。

    Validate the Azure Data Factory pipeline.

  6. 最後,選取 [ 全部 發佈] 將成品發佈至 Azure Data Factory。

    Publish the Azure Data Factory pipeline.

觸發管線

  1. 從設計工具介面上的工具列,選取 [立即新增觸發程式>]。

    Trigger the Azure Data Factory pipeline.

  2. 在快顯提要欄中選取 [ 確定 ]。

監視管線

  1. 切換至左側的 [監視] 索引標籤。 您會在 [管線執行] 清單中看到管線執行 。 請注意 [狀態] 資料行下執行的狀態。

    Monitor the Azure Data Factory pipeline.

  2. 選取 [ 重新整理 ] 以重新整理狀態。

  3. 您也可以選取 [ 檢視活動執行 ] 圖示,以查看與管線相關聯的活動執行。 在下列螢幕快照中,您只會看到一個活動執行,因為您建立的管線中只有一個活動。 若要切換回上一個檢視,請選取 頁面頂端的 [管線 ]。

    Monitor the Azure Data Factory pipeline activity.

確認輸出

  1. 若要確認輸出,請在 Azure 入口網站 流覽至您在本教學課程中使用的記憶體帳戶。 您應該看到下列資料夾或容器:

    • 您會看到 adfgerstarted /outputfolder ,其中包含在管線中執行之 Hive 腳本的輸出。

    • 您會看到 adfhdidatafactory-linked-service-name-timestamp>><< 容器。 此容器是作為管線執行一部分所建立之 HDInsight 叢集的預設儲存位置。

    • 您會看到具有 Azure Data Factory 作業記錄的 adfjobs 容器。

      Verify the Azure Data Factory pipeline output.

清除資源

建立隨選 HDInsight 叢集時,您不需要明確刪除 HDInsight 叢集。 叢集會根據您在建立管線時所提供的設定來刪除。 即使在刪除叢集之後,與叢集相關聯的記憶體帳戶仍會繼續存在。 此行為是設計方式,因此您可以保持數據不變。 不過,如果您不想保存資料,您可以刪除您所建立的儲存體帳戶。

或者,您可以刪除您在本教學課程中建立的整個資源群組。 此程式會刪除您建立的記憶體帳戶和 Azure Data Factory。

刪除資源群組

  1. 登入 Azure 入口網站

  2. 選取 左窗格上的 [資源群組 ]。

  3. 選取您在PowerShell腳本中建立的資源組名。 如果您列出太多資源群組,請使用篩選條件。 它會開啟資源群組。

  4. 在 [ 資源 ] 圖格上,除非您與其他專案共用資源群組,否則您必須列出預設記憶體帳戶和數據處理站。

  5. 選取 [刪除資源群組]。 這樣做會刪除記憶體帳戶和儲存在記憶體帳戶中的數據。

    Azure portal delete resource group.

  6. 輸入資源群組名稱以確認刪除,然後選取 [刪除]

下一步

在本文中,您已瞭解如何使用 Azure Data Factory 來建立隨選 HDInsight 叢集並執行 Apache Hive 作業。 請前進到下一篇文章,瞭解如何使用自定義設定建立 HDInsight 叢集。