教學課程:使用 Azure Data Factory 在 HDInsight 中建立隨選 Apache Hadoop 叢集
在本教學課程中,您將瞭解如何使用 Azure Data Factory 在 Azure HDInsight 中視需要建立 Apache Hadoop 叢集。 接著,您會在 Azure Data Factory 中使用資料管線來執行 Hive 作業,並刪除叢集。 在本教學課程結束時,您將瞭解如何 operationalize
執行巨量數據作業,以排程執行叢集建立、作業執行和叢集刪除。
本教學課程涵蓋下列工作:
- 建立 Azure 儲存體帳戶
- 瞭解 Azure Data Factory 活動
- 使用 Azure 入口網站 建立數據處理站
- 建立連結服務
- 建立新管線
- 觸發管線
- 監視管線
- 確認輸出
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
在本節中,您會建立各種物件,以用於您隨選建立的 HDInsight 叢集。 建立的記憶體帳戶將包含範例 HiveQL 腳本, partitionweblogs.hql
您用來模擬在叢集上執行的範例 Apache Hive 作業。
本節會使用 Azure PowerShell 腳本來建立記憶體帳戶,並複製記憶體帳戶內的必要檔案。 本節中的 Azure PowerShell 範例腳本會執行下列工作:
- 登入 Azure。
- 建立 Azure 資源群組。
- 建立 Azure 儲存體帳戶。
- 在記憶體帳戶中建立 Blob 容器
- 複製 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"
Write-Host "`nConnecting to your Azure subscription ..." -ForegroundColor Green
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
Connect-AzAccount
}
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
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
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
- 登入 Azure 入口網站。
- 從左側流覽至 [所有服務>] [一般>資源群組]。
- 選取您在PowerShell腳本中建立的資源組名。 如果您列出太多資源群組,請使用篩選條件。
- 從 [概觀] 檢視中,除非您與其他專案共用資源群組,否則您會看到列出一個資源。 該資源是您稍早指定名稱的記憶體帳戶。 選取記憶體帳戶名稱。
- 選取 [ 容器] 圖格。
- 選取 adfgetstarted 容器。 您會看到名為
hivescripts
的資料夾。
- 開啟 資料夾,並確定它包含範例腳本檔案 partitionweblogs.hql。
Azure Data Factory 會協調並自動化數據的行動和轉換。 Azure Data Factory 可以建立 HDInsight Hadoop 叢集 Just-In-Time 來處理輸入數據配量,並在處理完成時刪除叢集。
在 Azure Data Factory 中,數據處理站可以有一或多個數據管線。 數據管線有一或多個活動。 這些活動可成分兩種類型:
- 數據移動活動。 您可以使用資料移動活動,將資料從源資料存放區移至目的地資料存放區。
- 數據轉換活動。 您可以使用資料轉換活動來轉換/處理資料。 HDInsight Hive 活動是 Data Factory 支援的其中一個轉換活動。 在本教學課程中,您會使用Hive轉換活動。
在本文中,您會設定Hive活動以建立隨選 HDInsight Hadoop 叢集。 當活動執行以處理數據時,以下是會發生的情況:
系統會自動建立 HDInsight Hadoop 叢集,讓您即時處理配量。
輸入數據會藉由在叢集上執行HiveQL腳本來處理。 在本教學課程中,與Hive活動相關聯的HiveQL腳本會執行下列動作:
- 使用現有的數據表 (hivesampletable) 建立另一個數據表 HiveSampleOut。
- 在HiveSampleOut數據表中,只填入原始hivesampletable的特定數據行。
HDInsight Hadoop 叢集會在處理完成之後刪除,且叢集閑置的時間量(timeToLive 設定)。 如果下一個數據配量可用於處理此時間ToLive 空閒時間,則會使用相同的叢集來處理配量。
登入 Azure 入口網站。
從左側功能表中,流覽至 + Create a resource
>[分析>Data Factory]。
輸入或選擇[新增資料處理站] 圖格的下列值:
屬性 |
值 |
名稱 |
輸入 Data Factory 的 [名稱] 。 此名稱必須是全域唯一的。 |
版本 |
留在 V2。 |
訂用帳戶 |
選取 Azure 訂閱。 |
資源群組 |
選取您使用PowerShell腳本建立的資源群組。 |
Location |
位置會自動設定為您稍早建立資源群組時所指定的位置。 在本教學課程中,位置會設定為 美國東部。 |
啟用 GIT |
取消核取此方塊。 |
選取 建立。 建立數據處理站可能需要 2 到 4 分鐘的時間。
建立數據處理站之後,您會收到部署 成功 通知,其中包含 [移至資源 ] 按鈕。 選取 [移至資源 ] 以開啟Data Factory 預設檢視。
選取 [撰寫和監視] 以啟動 Azure Data Factory 撰寫和監視入口網站。
在本節中,您會在數據處理站內撰寫兩個鏈接的服務。
- Azure 儲存體 連結服務,可將 Azure 記憶體帳戶連結至數據處理站。 隨選 HDInsight 叢集會使用此記憶體。 它也包含叢集上執行的Hive腳本。
- 隨選 HDInsight 鏈接服務。 Azure Data Factory 會自動建立 HDInsight 叢集並執行 Hive 腳本。 接著,它會在叢集閑置之後刪除 HDInsight 叢集,以預先設定的時間。
從 [讓我們開始使用] 頁面的左窗格中,選取 [作者] 圖示。
從視窗左下角選取 連線,然後選取 [+新增]。
在 [新增鏈接服務] 對話框中,選取 [Azure Blob 儲存體],然後選取 [繼續]。
為記憶體連結服務提供下列值:
屬性 |
值 |
名稱 |
輸入 HDIStorageLinkedService 。 |
Azure 訂用帳戶 |
從下拉式清單中選取您的訂用帳戶。 |
儲存體帳戶名稱 |
選取您在PowerShell腳本中建立的 Azure 儲存體 帳戶。 |
選取 [ 測試連線 ],如果成功,請選取 [ 建立]。
再次選取 [ + 新增 ] 按鈕,以建立另一個鏈接服務。
在 [ 新增鏈接服務 ] 視窗中,選取 [ 計算] 索引標籤。
選取 [Azure HDInsight],然後選取 [ 繼續]。
在 [ 新增鏈接服務 ] 視窗中,輸入下列值,並將其餘值保留為預設值:
屬性 |
值 |
名稱 |
輸入 HDInsightLinkedService 。 |
類型 |
選取 [ 隨選 HDInsight]。 |
Azure 儲存體 連結服務 |
選取 HDIStorageLinkedService 。 |
叢集類型 |
選取 hadoop |
存留時間 |
提供您希望 HDInsight 叢集在自動刪除之前可使用的持續時間。 |
服務主體識別碼 |
提供您在必要條件中建立之 Microsoft Entra 服務主體的應用程式識別碼。 |
服務主體金鑰 |
提供 Microsoft Entra 服務主體的驗證金鑰。 |
叢集名稱前置詞 |
提供值,其前面會加上 Data Factory 所建立的所有叢集類型。 |
訂用帳戶 |
從下拉式清單中選取您的訂用帳戶。 |
選取資源群組 |
選取您在稍早使用的PowerShell腳本中建立的資源群組。 |
OS 類型/叢集 SSH 用戶名稱 |
輸入 SSH 使用者名稱,通常是 sshuser 。 |
OS 類型/叢集 SSH 密碼 |
提供 SSH 用戶的密碼 |
OS 類型/叢集用戶名稱 |
輸入叢集使用者名稱,通常是 admin 。 |
OS 類型/叢集密碼 |
提供叢集用戶的密碼。 |
然後選取建立。
+ 選取 [加號] 按鈕,然後選取 [管線]。
在 [活動] 工具箱中,展開 [HDInsight],然後將 Hive 活動拖曳至管線設計工具介面。 在 [ 一般] 索引標籤中,提供活動的名稱。
請確定您已選取 Hive 活動,選取 [HDI 叢集] 索引標籤 。從 [HDInsight 鏈接服務 ] 下拉式清單中,針對 HDInsight 選取您稍早 建立的連結服務 HDInsightLinkedService。
選取 [文稿] 索引標籤並完成下列步驟:
針對 [腳本鏈接服務],從下拉式清單中選取 [HDI 儲存體 LinkedService]。 此值是您稍早建立的記憶體連結服務。
針對 [檔案路徑],選取 [流覽 儲存體,然後流覽至範例 Hive 腳本可用的位置。 如果您稍早執行 PowerShell 文稿, 此位置應該是 adfgetstarted/hivescripts/partitionweblogs.hql
。
在 [進階>參數] 底下,選取 。Auto-fill from script
此選項會尋找Hive腳本中需要值在運行時間的任何參數。
在 [值 ] 文字框中,以 格式 wasbs://adfgetstarted@<StorageAccount>.blob.core.windows.net/outputfolder/
新增現有的資料夾。 路徑會區分大小寫。 此路徑是將儲存文本輸出的位置。 wasbs
架構是必要的,因為記憶體帳戶現在預設會啟用安全傳輸。
選取 [驗證 ] 以驗證管線。 >> 選取 [右鍵] 按鈕以關閉驗證視窗。
最後,選取 [ 全部 發佈] 將成品發佈至 Azure Data Factory。
從設計工具介面上的工具列,選取 [立即新增觸發程式>]。
在快顯提要欄中選取 [ 確定 ]。
切換至左側的 [監視] 索引標籤。 您會在 [管線執行] 清單中看到管線執行 。 請注意 [狀態] 資料行下執行的狀態。
選取 [ 重新整理 ] 以重新整理狀態。
您也可以選取 [ 檢視活動執行 ] 圖示,以查看與管線相關聯的活動執行。 在下列螢幕快照中,您只會看到一個活動執行,因為您建立的管線中只有一個活動。 若要切換回上一個檢視,請選取 頁面頂端的 [管線 ]。
若要確認輸出,請在 Azure 入口網站 流覽至您在本教學課程中使用的記憶體帳戶。 您應該看到下列資料夾或容器:
您會看到 adfgerstarted /outputfolder ,其中包含在管線中執行之 Hive 腳本的輸出。
您會看到 adfhdidatafactory-linked-service-name-timestamp>><< 容器。 此容器是作為管線執行一部分所建立之 HDInsight 叢集的預設儲存位置。
您會看到具有 Azure Data Factory 作業記錄的 adfjobs 容器。
建立隨選 HDInsight 叢集時,您不需要明確刪除 HDInsight 叢集。 叢集會根據您在建立管線時所提供的設定來刪除。 即使在刪除叢集之後,與叢集相關聯的記憶體帳戶仍會繼續存在。 此行為是設計方式,因此您可以保持數據不變。 不過,如果您不想保存資料,您可以刪除您所建立的儲存體帳戶。
或者,您可以刪除您在本教學課程中建立的整個資源群組。 此程式會刪除您建立的記憶體帳戶和 Azure Data Factory。
登入 Azure 入口網站。
選取 左窗格上的 [資源群組 ]。
選取您在PowerShell腳本中建立的資源組名。 如果您列出太多資源群組,請使用篩選條件。 它會開啟資源群組。
在 [ 資源 ] 圖格上,除非您與其他專案共用資源群組,否則您必須列出預設記憶體帳戶和數據處理站。
選取 [刪除資源群組]。 這樣做會刪除記憶體帳戶和儲存在記憶體帳戶中的數據。
輸入資源群組名稱以確認刪除,然後選取 [刪除]。
在本文中,您已瞭解如何使用 Azure Data Factory 來建立隨選 HDInsight 叢集並執行 Apache Hive 作業。 請前進到下一篇文章,瞭解如何使用自定義設定建立 HDInsight 叢集。