Použití Azure PowerShell k vytvoření clusteru HDInsight s Azure Data Lake Storage Gen1 (jako další úložiště)
Zjistěte, jak pomocí Azure PowerShell nakonfigurovat cluster HDInsight s Azure Data Lake Storage Gen1 jako dodatečné úložiště. Pokyny k vytvoření clusteru HDInsight s Data Lake Storage Gen1 jako výchozím úložištěm najdete v tématu Vytvoření clusteru HDInsight s Data Lake Storage Gen1 jako výchozím úložištěm.
Poznámka
Pokud budete Data Lake Storage Gen1 používat jako další úložiště pro cluster HDInsight, důrazně doporučujeme, abyste to udělali při vytváření clusteru, jak je popsáno v tomto článku. Přidání Data Lake Storage Gen1 jako dalšího úložiště do existujícího clusteru HDInsight je složitý proces a náchylný k chybám.
U podporovaných typů clusterů je možné Data Lake Storage Gen1 použít jako výchozí úložiště nebo jako další účet úložiště. Pokud se Data Lake Storage Gen1 použije jako další úložiště, bude výchozím účtem úložiště pro clustery stále Azure Blob Storage (WASB) a soubory související s clusterem (například protokoly atd.) se pořád zapisují do výchozího úložiště, zatímco data, která chcete zpracovat, můžete uložit do Data Lake Storage Gen1. Použití Data Lake Storage Gen1 jako dalšího účtu úložiště nemá vliv na výkon ani na schopnost číst a zapisovat do úložiště z clusteru.
Použití Data Lake Storage Gen1 pro úložiště clusteru HDInsight
Tady jsou některé důležité informace o používání SLUŽBY HDInsight s Data Lake Storage Gen1:
- Možnost vytvořit clustery HDInsight s přístupem k Data Lake Storage Gen1, protože pro HDInsight verze 3.2, 3.4, 3.5 a 3.6 je k dispozici další úložiště.
Konfigurace SLUŽBY HDInsight pro práci s Data Lake Storage Gen1 pomocí PowerShellu zahrnuje následující kroky:
- Vytvoření účtu Data Lake Storage Gen1
- Nastavení ověřování pro přístup na základě role k Data Lake Storage Gen1
- Vytvoření clusteru HDInsight s ověřováním pro Data Lake Storage Gen1
- Spuštění testovací úlohy v clusteru
Požadavky
Poznámka
Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Je nutné, abyste před zahájením tohoto kurzu měli tyto položky:
Předplatné Azure. Viz Získání bezplatné zkušební verze Azure.
Azure PowerShell 1.0 nebo vyšší. Viz téma Instalace a konfigurace prostředí Azure PowerShell.
Windows SDK. Můžete si ji nainstalovat odtud. Použijete ho k vytvoření certifikátu zabezpečení.
Microsoft Entra instančního objektu. Kroky v tomto kurzu obsahují pokyny k vytvoření instančního objektu v Microsoft Entra ID. Abyste však mohli vytvořit instanční objekt, musíte být správcem Microsoft Entra. Pokud jste správcem Microsoft Entra, můžete tuto podmínku přeskočit a pokračovat v kurzu.
Pokud nejste správcem Microsoft Entra, nebudete moct provést kroky potřebné k vytvoření instančního objektu. V takovém případě musí správce Microsoft Entra nejprve vytvořit instanční objekt, abyste mohli vytvořit cluster HDInsight s Data Lake Storage Gen1. Instanční objekt musí být také vytvořen pomocí certifikátu, jak je popsáno v tématu Vytvoření instančního objektu s certifikátem.
Vytvoření účtu Data Lake Storage Gen1
Pomocí těchto kroků vytvořte účet Data Lake Storage Gen1.
Na ploše otevřete nové okno Azure PowerShell a zadejte následující fragment kódu. Po zobrazení výzvy k přihlášení se ujistěte, že se přihlašujete jako správce nebo vlastník předplatného:
# 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> # Register for Data Lake Storage Gen1 Register-AzResourceProvider -ProviderNamespace "Microsoft.DataLakeStore"
Poznámka
Pokud se zobrazí podobná chyba
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
jako při registraci poskytovatele prostředků Data Lake Storage Gen1, je možné, že vaše předplatné není schválené pro Data Lake Storage Gen1. Podle těchto pokynů nezapomeňte povolit předplatné Azure pro Data Lake Storage Gen1.Účet úložiště s Data Lake Storage Gen1 je přidružený ke skupině prostředků Azure. Začněte vytvořením skupiny prostředků Azure.
$resourceGroupName = "<your new resource group name>" New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
Měl by se zobrazit výstup podobný tomuto:
ResourceGroupName : hdiadlgrp Location : eastus2 ProvisioningState : Succeeded Tags : ResourceId : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
Vytvořte účet úložiště pomocí Data Lake Storage Gen1. Zadaný název účtu musí obsahovat pouze malá písmena a číslice.
$dataLakeStorageGen1Name = "<your new storage account with Data Lake Storage Gen1 name>" New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
Zobrazený výstup by měl vypadat asi takto:
... ProvisioningState : Succeeded State : Active CreationTime : 5/5/2017 10:53:56 PM EncryptionState : Enabled ... LastModifiedTime : 5/5/2017 10:53:56 PM Endpoint : hdiadlstore.azuredatalakestore.net DefaultGroup : Id : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp/providers/Microsoft.DataLakeStore/accounts/hdiadlstore Name : hdiadlstore Type : Microsoft.DataLakeStore/accounts Location : East US 2 Tags : {}
Nahrajte ukázková data do Data Lake Storage Gen1. Později v tomto článku to použijeme k ověření, že jsou data přístupná z clusteru HDInsight. Pokud hledáte ukázková data, která byste mohli nahrát, můžete použít složku Ambulance Data z úložiště Git Azure Data Lake.
$myrootdir = "/" Import-AzDataLakeStoreItem -AccountName $dataLakeStorageGen1Name -Path "C:\<path to data>\vehicle1_09142014.csv" -Destination $myrootdir\vehicle1_09142014.csv
Nastavení ověřování pro přístup na základě role k Data Lake Storage Gen1
Každé předplatné Azure je přidružené k Microsoft Entra ID. Uživatelé a služby, které přistupují k prostředkům předplatného pomocí Azure Portal nebo rozhraní API azure Resource Manager, se musí nejprve ověřit pomocí tohoto Microsoft Entra ID. Přístup k předplatným a službám Azure se uděluje přiřazením příslušné role k prostředku Azure. U služeb instanční objekt identifikuje službu v Microsoft Entra ID. Tato část ukazuje, jak aplikační službě, jako je HDInsight, udělit přístup k prostředku Azure (účtu úložiště s Data Lake Storage Gen1 jste vytvořili dříve) vytvořením instančního objektu pro aplikaci a přiřazením rolí k tomuto prostředku prostřednictvím Azure PowerShell.
Pokud chcete nastavit ověřování active directory pro Data Lake Storage Gen1, musíte provést následující úlohy.
- Vytvoření certifikátu podepsaného svým držitelem (self-signed certificate)
- Vytvoření aplikace v Microsoft Entra ID a instančním objektu
Vytvoření certifikátu podepsaného svým držitelem (self-signed certificate)
Než budete pokračovat v postupu v této části, ujistěte se, že máte nainstalovanou sadu Windows SDK . Musíte také vytvořit adresář, například C:\mycertdir, kde se certifikát vytvoří.
V okně PowerShellu přejděte do umístění, kam jste nainstalovali sadu Windows SDK (obvykle,
C:\Program Files (x86)\Windows Kits\10\bin\x86
a pomocí nástroje MakeCert vytvořte certifikát podepsaný svým držitelem a privátní klíč. Použijte následující příkazy.$certificateFileDir = "<my certificate directory>" cd $certificateFileDir makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
Zobrazí se výzva k zadání hesla privátního klíče. Po úspěšném spuštění příkazu by se v zadaném adresáři certifikátů měly zobrazit CertFile.cer a mykey.pvk .
Pomocí nástroje Pvk2Pfx převeďte soubory .pvk a .cer vytvořené nástrojem MakeCert na soubor .pfx. Spusťte následující příkaz.
pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
Po zobrazení výzvy zadejte heslo privátního klíče, které jste zadali dříve. Hodnota, kterou zadáte pro parametr -po , je heslo, které je přidruženo k souboru .pfx. Po úspěšném dokončení příkazu by se měl v zadaném adresáři certifikátů zobrazit také soubor CertFile.pfx.
Vytvoření Microsoft Entra ID a instančního objektu
V této části provedete kroky k vytvoření instančního objektu pro aplikaci Microsoft Entra, přiřazení role instančnímu objektu a ověření jako instančního objektu poskytnutím certifikátu. Spuštěním následujících příkazů vytvořte aplikaci v Microsoft Entra ID.
Do okna konzoly PowerShellu vložte následující rutiny. Ujistěte se, že hodnota zadaná pro vlastnost -DisplayName je jedinečná. Také hodnoty pro -HomePage a -IdentiferUris jsou zástupné hodnoty a nejsou ověřeny.
$certificateFilePath = "$certificateFileDir\CertFile.pfx" $password = Read-Host -Prompt "Enter the password" # This is the password you specified for the .pfx file $certificatePFX = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certificateFilePath, $password) $rawCertificateData = $certificatePFX.GetRawCertData() $credential = [System.Convert]::ToBase64String($rawCertificateData) $application = New-AzADApplication ` -DisplayName "HDIADL" ` -HomePage "https://contoso.com" ` -IdentifierUris "https://contoso.com" ` -CertValue $credential ` -StartDate $certificatePFX.NotBefore ` -EndDate $certificatePFX.NotAfter $applicationId = $application.ApplicationId
Pomocí ID aplikace vytvořte instanční objekt.
$servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor $objectId = $servicePrincipal.Id
Udělte instančnímu objektu přístup ke složce Data Lake Storage Gen1 a souboru, ke kterému budete přistupovat z clusteru HDInsight. Následující fragment kódu poskytuje přístup ke kořenovému adresáři účtu úložiště s Data Lake Storage Gen1 (kam jste zkopírovali ukázkový datový soubor) a k samotnému souboru.
Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path / -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /vehicle1_09142014.csv -AceType User -Id $objectId -Permissions All
Vytvoření clusteru HDInsight s Linuxem s Data Lake Storage Gen1 jako dalším úložištěm
V této části vytvoříme linuxový cluster HDInsight Hadoop s Data Lake Storage Gen1 jako dalším úložištěm. V této verzi musí být cluster HDInsight a účet úložiště s Data Lake Storage Gen1 ve stejném umístění.
Začněte načtením ID tenanta předplatného. Budete ho potřebovat později.
$tenantID = (Get-AzContext).Tenant.TenantId
V této verzi se pro cluster Hadoop dá Data Lake Storage Gen1 použít jenom jako další úložiště clusteru. Výchozím úložištěm bude stále Azure Blob Storage (WASB). Proto nejprve vytvoříme účet úložiště a kontejnery úložiště vyžadované pro cluster.
# Create an Azure storage account $location = "East US 2" $storageAccountName = "<StorageAccountName>" # Provide a Storage account name New-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -Location $location -Type Standard_GRS # Create an Azure Blob Storage container $containerName = "<ContainerName>" # Provide a container name $storageAccountKey = (Get-AzStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName)[0].Value $destContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey New-AzStorageContainer -Name $containerName -Context $destContext
Vytvořte cluster HDInsight. Použijte následující rutiny.
# Set these variables $clusterName = $containerName # As a best practice, have the same name for the cluster and container $clusterNodes = <ClusterSizeInNodes> # The number of nodes in the HDInsight cluster $httpCredentials = Get-Credential $sshCredentials = Get-Credential New-AzHDInsightCluster -ClusterName $clusterName -ResourceGroupName $resourceGroupName -HttpCredential $httpCredentials -Location $location -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" -DefaultStorageAccountKey $storageAccountKey -DefaultStorageContainer $containerName -ClusterSizeInNodes $clusterNodes -ClusterType Hadoop -Version "3.4" -OSType Linux -SshCredential $sshCredentials -ObjectID $objectId -AadTenantId $tenantID -CertificateFilePath $certificateFilePath -CertificatePassword $password
Po úspěšném dokončení rutiny by se měl zobrazit výstup s podrobnostmi o clusteru.
Spuštění testovacích úloh v clusteru HDInsight pro použití Data Lake Storage Gen1
Po nakonfigurování clusteru HDInsight můžete v clusteru spustit testovací úlohy a otestovat, že cluster HDInsight má přístup k Data Lake Storage Gen1. Provedeme to tak, že spustíme ukázkovou úlohu Hive, která vytvoří tabulku s použitím ukázkových dat, která jste předtím nahráli do svého účtu úložiště s Data Lake Storage Gen1.
V této části se přes SSH připojíte ke clusteru HDInsight Linux, který jste vytvořili, a spustíte ukázkový dotaz Hive.
- Pokud k připojení ke clusteru přes SSH používáte klienta Windows, přečtěte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight ze systému Windows.
- Pokud k připojení ke clusteru přes SSH používáte klienta pro Linux, projděte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight z Linuxu.
Po připojení spusťte rozhraní příkazového řádku Hive pomocí následujícího příkazu:
hive
Pomocí rozhraní příkazového řádku zadejte následující příkazy, které vytvoří novou tabulku s názvem vozidla pomocí ukázkových dat v Data Lake Storage Gen1:
DROP TABLE vehicles; CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestoragegen1>.azuredatalakestore.net:443/'; SELECT * FROM vehicles LIMIT 10;
Zobrazený výstup by měl vypadat přibližně takto:
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
Přístup k Data Lake Storage Gen1 pomocí příkazů HDFS
Jakmile cluster HDInsight nakonfigurujete tak, aby používal Data Lake Storage Gen1, můžete pro přístup k úložišti použít příkazy prostředí HDFS.
V této části se přes SSH připojíte ke clusteru HDInsight Linux, který jste vytvořili, a spustíte příkazy HDFS.
- Pokud k připojení ke clusteru přes SSH používáte klienta Windows, přečtěte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight ze systému Windows.
- Pokud k připojení ke clusteru přes SSH používáte klienta pro Linux, projděte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight z Linuxu.
Po připojení použijte následující příkaz systému souborů HDFS k zobrazení seznamu souborů v účtu úložiště s Data Lake Storage Gen1.
hdfs dfs -ls adl://<storage account with Data Lake Storage Gen1 name>.azuredatalakestore.net:443/
Měl by se zobrazit soubor, který jste předtím nahráli do 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
Pomocí příkazu můžete také hdfs dfs -put
nahrát některé soubory do Data Lake Storage Gen1 a pak pomocí příkazu hdfs dfs -ls
ověřit, jestli se soubory úspěšně nahrály.