使用 Azure Resource Manager 範本來建立搭配 Azure Data Lake Storage Gen1 的 HDInsight 叢集
了解如何使用 Azure PowerShell 設定搭配 Azure Data Lake Storage Gen1 作為額外儲存體的 HDInsight 叢集。
針對支援的叢集類型,Data Lake Storage Gen1 可作為預設儲存體或額外儲存體帳戶使用。 將 Data Lake Storage Gen1 作為額外儲存體使用時,叢集的預設儲存體帳戶仍然會是 Azure Blob 儲存體 (WASB),且叢集相關的檔案 (例如記錄等) 仍然會寫入預設儲存體,而您想要處理的資料則可儲存在 Data Lake Storage Gen1 帳戶中。 使用 Data Lake Storage Gen1 作為額外儲存體帳戶將不會影響效能或從叢集讀取/寫入至儲存體的能力。
將 Data Lake Storage Gen1 作為 HDInsight 叢集儲存體使用
以下是使用 HDInsight 搭配 Data Lake Storage Gen1 的一些重要考量:
HDInsight 3.5 和 3.6 版提供建立可存取 Data Lake Storage Gen1 做為預設儲存體之 HDInsight 叢集的選項。
HDInsight 3.2、3.4、3.5 和 3.6 版能提供建立可存取 Data Lake Storage Gen1 作為額外儲存體之 HDInsight 叢集的選項。
在本文中,我們佈建 Hadoop 叢集與 Data Lake Storage Gen1 做為額外的儲存體。 如需如何建立以 Data Lake Storage Gen1 作為預設儲存體之 Hadoop 叢集的指示,請參閱使用 Azure 入口網站建立與 Data Lake Storage Gen1 搭配使用的 HDInsight 叢集。
必要條件
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要瞭解如何遷移至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 遷移至 Az。
開始進行本教學課程之前,您必須具備下列條件:
Azure 訂用帳戶。 請參閱取得 Azure 免費試用。
Azure PowerShell 1.0 或更新版本。 請參閱 如何安裝和設定 Azure PowerShell。
Microsoft Entra 服務主體。 本教學課程中的步驟提供如何在 Microsoft Entra ID 中建立服務主體的指示。 不過,您必須是 Microsoft Entra 系統管理員,才能建立服務主體。 如果您是 Microsoft Entra 系統管理員,您可以略過此必要條件並繼續進行本教學課程。
如果您不是 Microsoft Entra 系統管理員,您將無法執行建立服務主體所需的步驟。 在這種情況下,您的 Microsoft Entra 系統管理員必須先建立服務主體,才能使用 Data Lake Storage Gen1 建立 HDInsight 叢集。 此外,必須使用憑證來建立服務主體,如使用憑證來建立服務主體所述。
建立搭配 Data Lake Storage Gen1 的 HDInsight 叢集
GitHub 上的使用新的 Data Lake Storage Gen1 來部署 HDInsight Linux 叢集中,提供了 Resource Manager 範本,以及使用該範本的先決條件。 請依照此連結所提供的指示來建立將 Data Lake Storage Gen1 做為額外儲存體的 HDInsight 叢集。
上述連結所提供的指示需要使用 PowerShell。 從這些指示開始著手之前,請確定您已登入 Azure 帳戶。 從您的桌面開啟新的 Azure PowerShell 視窗,然後輸入下列程式碼片段。 系統提示您登入時,請務必使用其中一個訂用帳戶管理員/擁有者身分登入:
# Log in to your Azure account
Connect-AzAccount
# List all the subscriptions associated to your account
Get-AzSubscription
# Select a subscription
Set-AzContext -SubscriptionId <subscription ID>
此範本會部署下列資源類型:
將範例資料上傳到 Data Lake Storage Gen1
Resource Manager 範本會建立一個新的與 Data Lake Storage Gen1 搭配使用的儲存體帳戶,並將其與 HDInsight 叢集建立關聯。 您現在必須將一些範例資料上傳到 Data Lake Storage Gen1。 稍後在教學課程中,您將需要使用此資料,以便從 HDInsight 叢集中執行作業,該 HDInsight 叢集會在與 Data Lake Storage Gen1 搭配使用的儲存體帳戶中存取資料。 如需有關如何上傳資料的指示,請參閱將檔案上傳至 Data Lake Storage Gen1。 如果您正在尋找一些可上傳的範例資料,您可以從 Azure Data Lake Git 存放庫 取得 Ambulance Data資料夾。
在範例資料上設定相關的 ACL
若要確定您可以從 HDInsight 叢集存取您上傳的範例數據,您必須確定用來建立 HDInsight 叢集與 Data Lake Storage Gen1 可存取您嘗試存取之檔案/資料夾的 Microsoft Entra 應用程式。 若要這樣做,請執行下列步驟。
- 尋找與 HDInsight 叢集相關聯的 Microsoft Entra 應用程式名稱,以及具有 Data Lake Storage Gen1 的記憶體帳戶。 尋找名稱的其中一種方式是開啟您使用 Resource Manager 範本建立的 HDInsight 叢集刀鋒視窗,按兩下 [叢集 Microsoft Entra 身分識別] 索引卷標,然後尋找 [服務主體顯示名稱] 的值。
- 現在,請在您想要從 HDInsight 叢集存取的檔案/資料夾上,提供此 Microsoft Entra 應用程式的存取權。 若要在 Data Lake Storage Gen1 中的檔案/資料夾上設定正確的 ACL,請參閱保護 Data Lake Storage Gen1 中的資料。
在 HDInsight 叢集上執行測試作業以使用 Data Lake Storage Gen1
設定 HDInsight 叢集之後,可以在叢集上執行測試作業,以測試 HDInsight 叢集是否可以存取 Data Lake Storage Gen1。 為了完成這個操作,我們將會執行樣本 Hive 作業,該作業會使用您稍早上傳至與 Data Lake Storage Gen1 搭配使用的儲存體帳戶的樣本資料來建立資料表。
在本節中,您會透過 SSH 連線到 HDInsight Linux 叢集並執行樣本 Hive 查詢。 如果您使用 Windows 用戶端,建議您使用 PuTTY (可從 https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下載)。
如需有關使用 PuTTY 的詳細資訊,請參閱 從 Windows 在 HDInsight 上搭配使用 SSH 與以 Linux 為基礎的 Hadoop。
連線之後,使用下列命令來啟動 Hive CLI:
hive
使用 CLI 輸入下列陳述式,來使用 Data Lake Storage Gen1 中的範例資料建立名為 vehicles 的新資料表:
DROP TABLE vehicles; CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestoragegen1>.azuredatalakestore.net:443/'; SELECT * FROM vehicles LIMIT 10;
您應該會看到如下輸出:
1,1,2014-09-14 00:00:03,46.81006,-92.08174,51,S,1 1,2,2014-09-14 00:00:06,46.81006,-92.08174,13,NE,1 1,3,2014-09-14 00:00:09,46.81006,-92.08174,48,NE,1 1,4,2014-09-14 00:00:12,46.81006,-92.08174,30,W,1 1,5,2014-09-14 00:00:15,46.81006,-92.08174,47,S,1 1,6,2014-09-14 00:00:18,46.81006,-92.08174,9,S,1 1,7,2014-09-14 00:00:21,46.81006,-92.08174,53,N,1 1,8,2014-09-14 00:00:24,46.81006,-92.08174,63,SW,1 1,9,2014-09-14 00:00:27,46.81006,-92.08174,4,NE,1 1,10,2014-09-14 00:00:30,46.81006,-92.08174,31,N,1
使用 HDFS 命令存取 Data Lake Storage Gen1
設定 HDInsight 叢集以使用 Data Lake Storage Gen1 後,您可以使用 HDFS 殼層命令來存取該存放區。
在本節中,您會透過 SSH 連線到 HDInsight Linux 叢集並執行 HDFS 命令。 如果您使用 Windows 用戶端,建議您使用 PuTTY (可從 https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html下載)。
如需有關使用 PuTTY 的詳細資訊,請參閱 從 Windows 在 HDInsight 上搭配使用 SSH 與以 Linux 為基礎的 Hadoop。
連線之後,使用下列 HDFS 檔案系統命令,列出在與 Data Lake Storage Gen1 搭配使用的儲存體帳戶中的檔案。
hdfs dfs -ls adl://<storage account with Data Lake Storage Gen1 name>.azuredatalakestore.net:443/
這麼做應該會列出您稍早上傳至 Data Lake Storage Gen1 的檔案。
15/09/17 21:41:15 INFO web.CaboWebHdfsFileSystem: Replacing original urlConnectionFactory with org.apache.hadoop.hdfs.web.URLConnectionFactory@21a728d6
Found 1 items
-rwxrwxrwx 0 NotSupportYet NotSupportYet 671388 2015-09-16 22:16 adl://mydatalakestoragegen1.azuredatalakestore.net:443/mynewfolder
您也可以使用 hdfs dfs -put
命令,將一些檔案上傳至 Data Lake Storage Gen1,然後使用 hdfs dfs -ls
來確認是否成功上傳檔案。