共用方式為


教學課程:使用 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. 複製範例 HiveQL 腳本 (partitionweblogs.hql) 至 Blob 容器。 範例指令碼已在另一個公用 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 設定) 內閒置。 如果下一個資料配量在此 timeToLive 閒置時間內可供處理,則會使用相同的叢集來處理配量。

建立資料處理站

  1. 登入 Azure 入口網站

  2. 從左側功能表中,流覽至 + Create a resource>Analytics>Data Factory

    入口網站上的 Azure Data Factory。

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

    房產 價值觀
    名稱 輸入數據處理站的名稱。 此名稱必須是全域唯一的。
    版本 V2 離開。
    Subscription 選取您的 Azure 訂用帳戶。
    資源群組 選取您使用 PowerShell 指令碼建立的資源群組。
    地點 位置會自動設定為您稍早建立資源群組時指定的位置。 在本教學課程中,位置會設定為 美國東部
    啟用 GIT 取消勾選此方塊。

    使用 Azure 入口網站建立 Azure Data Factory。

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

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

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

    Azure Data Factory 入口網站概觀。

建立連結服務

在本節中,您會在資料工廠內建立兩個連結的服務。

  • 將 Azure 儲存體帳戶連結至資料處理站的 Azure 儲存體連結服務。 隨選 HDInsight 叢集會使用此儲存體。 它也包含在叢集上執行的 Hive 指令碼。
  • 隨選 HDInsight 連結服務。 Azure Data Factory 會自動建立 HDInsight 叢集,並執行 Hive 腳本。 然後在 HDInsight 叢集的閒置時間達到預先設定的時間後,系統就會刪除該叢集。

建立 Azure 儲存體連結服務

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

    建立 Azure Data Factory 連結服務。

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

    在 Azure Data Factory 中建立連線。

  3. 在 [ 新增連結服務 ] 對話方塊中,選取 [Azure Blob 儲存體 ],然後選取 [繼續]。

    建立 Data Factory 的 Azure 儲存體連結服務。

  4. 為儲存體連結服務提供下列值:

    房產 價值觀
    名稱 輸入 HDIStorageLinkedService
    Azure 訂用帳戶 從下拉式清單中選取您的訂閱。
    儲存體帳戶名稱 選取您在 PowerShell 指令碼中建立的 Azure 儲存體帳戶。

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

    提供 Azure 儲存體連結服務的名稱。

建立隨選 HDInsight 連結服務

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

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

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

    建立適用於 Azure Data Factory 的 HDInsight 連結服務。

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

    房產 價值觀
    名稱 輸入 HDInsightLinkedService
    類型 選取 [隨選 HDInsight]
    Azure 儲存體連結服務 選取 HDIStorageLinkedService
    叢集類型 選取 Hadoop
    存留時間 提供您想要 HDInsight 叢集在自動刪除之前可用的持續時間。
    服務主體識別碼 提供您建立之 Microsoft Entra 服務主體的應用程式識別碼,作為必要條件的一部分。
    服務主體金鑰 提供 Microsoft Entra 服務主體的驗證金鑰。
    叢集名稱前置詞 提供值以作為資料處理站所建立全部叢集類型的前置詞。
    Subscription 從下拉式清單中選取您的訂閱。
    選取資源群組 選取您建立的資源群組,作為您稍早使用的 PowerShell 腳本的一部分。
    作業系統類型/叢集 SSH 使用者名稱 輸入 SSH 使用者名稱,通常為 sshuser
    作業系統類型/叢集 SSH 密碼 提供 SSH 使用者的密碼
    作業系統類型/叢集使用者名稱 輸入叢集使用者名稱,通常為 admin
    作業系統類型/叢集密碼 提供叢集使用者的密碼。

    然後選擇 [建立]

    提供 HDInsight 連結服務的值。

建立管線

  1. 選取 + (加號) 按鈕,然後選取管線。

    在 Azure Data Factory 中建立管線。

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

    將活動新增至 Data Factory 管線。

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

    提供管線的 HDInsight 叢集詳細數據。

  4. 選取 指令碼 索引標籤,然後完成下列步驟:

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

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

      提供管線的 Hive 指令碼詳細資料。

    3. 進階>參數下,選取 Auto-fill from script。 此選項會在 Hive 指令碼中尋找執行階段需要值的任何參數。

    4. 文字方塊中,新增現有資料夾,格式為 wasbs://adfgetstarted@<StorageAccount>.blob.core.windows.net/outputfolder/。 路徑會區分大小寫。 此路徑是腳本輸出的儲存位置。 wasbs 結構描述是必要的,因為儲存體帳戶現在已預設啟用所需的安全傳輸。

      提供 Hive 指令碼的參數。

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

    驗證 Azure Data Factory 管線。

  6. 最後,選取 全部發佈 以將構件發佈至 Azure Data Factory。

    發佈 Azure Data Factory 管線。

觸發管線

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

    觸發 Azure Data Factory 管線。

  2. 在彈出側邊欄中選擇OK

監視管線

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

    監視 Azure Data Factory 管線。

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

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

    監視 Azure Data Factory 管線活動。

驗證輸出

  1. 若要驗證輸出,請在 Azure 入口網站 中流覽至您用於本教學課程的儲存體帳戶。 您應該會看到下列資料夾或容器:

    • 您會看到 adfgerstarted/outputfolder,其中包含作為管線一部分來執行的 Hive 指令碼輸出。

    • 您會看到一個名為 adfhdidatafactory-linked-service-name-timestamp<><> 的容器。 此容器是 HDInsight 叢集的預設儲存位置,是在管線執行中建立的。

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

      確認 Azure Data Factory 管線輸出。

清理資源

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

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

刪除資源群組

  1. 登入 Azure 入口網站

  2. 選取左窗格中的 資源群組

  3. 選取您在 PowerShell 指令碼中建立的資源群組名稱。 如果您列出的資源群組太多,請使用篩選器。 它會開啟資源群組。

  4. 除非您與其他專案共用資源群組,否則 [資源] 圖格應列出預設儲存體帳戶和 Data Factory。

  5. 選擇 ,刪除資源群組。 這樣做會刪除儲存體帳戶和儲存在儲存體帳戶中的資料。

    Azure 入口網站刪除資源群組。

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

後續步驟

在本文中,您已瞭解如何使用 Azure Data Factory 來建立隨選 HDInsight 叢集,並執行 Apache Hive 作業。 繼續閱讀下一篇文章,瞭解如何使用自訂設定建立 HDInsight 叢集。