Vytvoření clusterů HDInsight s výchozím úložištěm Azure Data Lake Storage Gen1 pomocí PowerShellu
Zjistěte, jak pomocí Azure PowerShell nakonfigurovat clustery Azure HDInsight s Azure Data Lake Storage Gen1 jako výchozím úložištěm. Pokyny k vytvoření clusteru HDInsight s Data Lake Storage Gen1 jako dalším úložištěm najdete v tématu Vytvoření clusteru HDInsight s Data Lake Storage Gen1 jako dalším úložištěm.
Tady je několik důležitých aspektů 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 jako výchozím úložištěm je k dispozici pro HDInsight verze 3.5 a 3.6.
Možnost vytvořit clustery HDInsight s přístupem k Data Lake Storage Gen1 jako výchozím úložištěm není pro clustery HDInsight Premium dostupná.
Pokud chcete službu HDInsight nakonfigurovat tak, aby fungovala s Data Lake Storage Gen1 pomocí PowerShellu, postupujte podle pokynů v následujících pěti částech.
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.
Než začnete s tímto kurzem, ujistěte se, že splňujete následující požadavky:
Předplatné Azure: Přejděte na získat bezplatnou zkušební verzi Azure.
Azure PowerShell 1.0 nebo novější: Přečtěte si téma Instalace a konfigurace PowerShellu.
Windows Software Development Kit (SDK): Pokud chcete nainstalovat sadu Windows SDK, přejděte na soubory ke stažení a nástroje pro Windows 10. Sada SDK se používá k vytvoření certifikátu zabezpečení.
Microsoft Entra instanční objekt: Tento kurz popisuje, jak vytvořit instanční objekt v Microsoft Entra ID. Pokud ale chcete vytvořit instanční objekt, musíte být správcem Microsoft Entra. Pokud jste správce, můžete tuto podmínku přeskočit a pokračovat v kurzu.
Poznámka
Instanční objekt můžete vytvořit jenom v případě, že jste správcem Microsoft Entra. Před vytvořením clusteru HDInsight s Data Lake Storage Gen1 musí správce Microsoft Entra vytvořit instanční objekt. Instanční objekt musí být vytvořený s certifikátem, jak je popsáno v tématu Vytvoření instančního objektu s certifikátem.
Vytvoření účtu Azure Data Lake Storage Gen1
Účet Data Lake Storage Gen1 vytvoříte takto:
Na ploše otevřete okno PowerShellu a zadejte níže uvedené fragmenty kódu. Po zobrazení výzvy k přihlášení se přihlaste jako jeden ze správců nebo vlastníků předplatného.
# Sign 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 zaregistrujete poskytovatele prostředků Data Lake Storage Gen1 a zobrazí se
Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid
chyba podobná této, nemusí být vaše předplatné schváleno pro Data Lake Storage Gen1. Pokud chcete povolit předplatné Azure pro Data Lake Storage Gen1, postupujte podle pokynů v tématu Začínáme s Azure Data Lake Storage Gen1 pomocí Azure Portal.Účet Data Lake Storage Gen1 je přidružený ke skupině prostředků Azure. Začněte vytvořením skupiny prostředků.
$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 Data Lake Storage Gen1. Zadaný název účtu musí obsahovat pouze malá písmena a číslice.
$dataLakeStorageGen1Name = "<your new 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 : {}
Použití Data Lake Storage Gen1 jako výchozího úložiště vyžaduje, abyste zadali kořenovou cestu, do které se při vytváření clusteru zkopírují soubory specifické pro cluster. K vytvoření kořenové cesty, která je ve fragmentu kódu /clusters/hdiadlcluster , použijte následující rutiny:
$myrootdir = "/" New-AzDataLakeStoreItem -Folder -AccountName $dataLakeStorageGen1Name -Path $myrootdir/clusters/hdiadlcluster
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 entitě Microsoft Entra. Uživatelé a služby, které přistupují k prostředkům předplatného pomocí Azure Portal nebo rozhraní Azure Resource Manager API, se musí nejprve ověřit pomocí 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 identifikuje instanční objekt službu v Microsoft Entra ID.
Tato část ukazuje, jak udělit aplikační službě, jako je HDInsight, přístup k prostředku Azure (účtu Data Lake Storage Gen1, který jste vytvořili dříve). Uděláte to tak, že pro aplikaci vytvoříte instanční objekt a přiřadíte k němu role prostřednictvím PowerShellu.
Pokud chcete nastavit ověřování active directory pro Data Lake Storage Gen1, proveďte úlohy v následujících dvou částech.
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 mít také vytvořený adresář, například C:\mycertdir, ve kterém vytvoříte certifikát.
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átu 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 přidružené k souboru .pfx. Po úspěšném dokončení příkazu by se měl v zadaném adresáři certifikátu zobrazit soubor CertFile.pfx .
Vytvoření Microsoft Entra ID a instančního objektu
V této části vytvoříte instanční objekt pro Microsoft Entra aplikaci, přiřadíte mu roli a jako instanční objekt se ověříte poskytnutím certifikátu. Pokud chcete vytvořit aplikaci v Microsoft Entra ID, spusťte následující příkazy:
Do okna konzoly PowerShellu vložte následující rutiny. Ujistěte se, že hodnota, kterou zadáte pro vlastnost -DisplayName , je jedinečná. 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
Vytvořte instanční objekt pomocí ID aplikace.
$servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor $objectId = $servicePrincipal.Id
Udělte instančnímu objektu přístup ke kořenovému adresáři Data Lake Storage Gen1 a všem složkám v kořenové cestě, kterou jste zadali dříve. Použijte následující rutiny:
Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path / -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /clusters -AceType User -Id $objectId -Permissions All Set-AzDataLakeStoreItemAclEntry -AccountName $dataLakeStorageGen1Name -Path /clusters/hdiadlcluster -AceType User -Id $objectId -Permissions All
Vytvoření clusteru HDInsight Linux s Data Lake Storage Gen1 jako výchozím úložištěm
V této části vytvoříte linuxový cluster HDInsight Hadoop s Data Lake Storage Gen1 jako výchozím úložištěm. Pro tuto verzi musí být cluster HDInsight a Data Lake Storage Gen1 ve stejném umístění.
Načtěte ID tenanta předplatného a uložte ho pro pozdější použití.
$tenantID = (Get-AzContext).Tenant.TenantId
Vytvořte cluster HDInsight pomocí následujících rutin:
# Set these variables $location = "East US 2" $storageAccountName = $dataLakeStorageGen1Name # Data Lake Storage Gen1 account name $storageRootPath = "<Storage root path you specified earlier>" # e.g. /clusters/hdiadlcluster $clusterName = "<unique cluster name>" $clusterNodes = <ClusterSizeInNodes> # The number of nodes in the HDInsight cluster $httpCredentials = Get-Credential $sshCredentials = Get-Credential New-AzHDInsightCluster ` -ClusterType Hadoop ` -OSType Linux ` -ClusterSizeInNodes $clusterNodes ` -ResourceGroupName $resourceGroupName ` -ClusterName $clusterName ` -HttpCredential $httpCredentials ` -Location $location ` -DefaultStorageAccountType AzureDataLakeStore ` -DefaultStorageAccountName "$storageAccountName.azuredatalakestore.net" ` -DefaultStorageRootPath $storageRootPath ` -Version "3.6" ` -SshCredential $sshCredentials ` -AadTenantId $tenantId ` -ObjectId $objectId ` -CertificateFilePath $certificateFilePath ` -CertificatePassword $password
Po úspěšném dokončení rutiny by se měl zobrazit výstup se seznamem podrobností o clusteru.
Spuštění testovacích úloh v clusteru HDInsight pro použití Data Lake Storage Gen1
Po nakonfigurování clusteru HDInsight na něm můžete spustit testovací úlohy a ujistit se, že má přístup k Data Lake Storage Gen1. Provedete to tak, že spustíte ukázkovou úlohu Hive a vytvoříte tabulku, která používá ukázková data, která jsou už k dispozici v Data Lake Storage Gen1 v <kořenovém> adresáři clusteru/example/data/sample.log.
V této části vytvoříte připojení Secure Shell (SSH) ke clusteru HDInsight Linux, který jste vytvořili, a pak spustíte ukázkový dotaz Hive.
- Pokud k připojení ke clusteru SSH používáte klienta Windows, projděte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight ze systému Windows.
- Pokud k vytvoření připojení ke clusteru SSH používáte linuxového klienta, projděte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight z Linuxu.
Po vytvoření připojení spusťte rozhraní příkazového řádku (CLI) Hive pomocí následujícího příkazu:
hive
Pomocí rozhraní příkazového řádku zadejte následující příkazy k vytvoření nové tabulky s názvem vozidla pomocí ukázkových dat v Data Lake Storage Gen1:
DROP TABLE log4jLogs; CREATE EXTERNAL TABLE log4jLogs (t1 string, t2 string, t3 string, t4 string, t5 string, t6 string, t7 string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION 'adl:///example/data/'; SELECT t4 AS sev, COUNT(*) AS count FROM log4jLogs WHERE t4 = '[ERROR]' AND INPUT__FILE__NAME LIKE '%.log' GROUP BY t4;
Výstup dotazu by se měl zobrazit v konzole SSH.
Poznámka
Cesta k ukázkovým datům v předchozím příkazu CREATE TABLE je adl:///example/data/
, kde adl:///
je kořen clusteru. Po příkladu kořenového adresáře clusteru zadaného v tomto kurzu je adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster
příkaz . Můžete použít kratší alternativu nebo zadat úplnou cestu ke kořenovému adresáři clusteru.
Přístup k Data Lake Storage Gen1 pomocí příkazů HDFS
Jakmile nakonfigurujete cluster HDInsight tak, aby používal Data Lake Storage Gen1, můžete k přístupu k úložišti použít příkazy prostředí Systému souborů HDFS (Hadoop Distributed File System).
V této části vytvoříte připojení SSH ke clusteru HDInsight Linux, který jste vytvořili, a pak spustíte příkazy HDFS.
- Pokud k připojení ke clusteru SSH používáte klienta Windows, projděte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight ze systému Windows.
- Pokud k vytvoření připojení ke clusteru SSH používáte linuxového klienta, projděte si téma Použití SSH se systémem Linux Hadoop ve službě HDInsight z Linuxu.
Po vytvoření připojení vypište soubory v Data Lake Storage Gen1 pomocí následujícího příkazu systému souborů HDFS.
hdfs dfs -ls adl:///
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.