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:

  1. 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 invalidchyba 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.

  2. Úč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
    
  3. 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                        : {}
    
  4. 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.

  1. 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 .

  2. 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:

  1. 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
    
  2. Vytvořte instanční objekt pomocí ID aplikace.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
    $objectId = $servicePrincipal.Id
    
  3. 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í.

  1. Načtěte ID tenanta předplatného a uložte ho pro pozdější použití.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. 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.

  1. Po vytvoření připojení spusťte rozhraní příkazového řádku (CLI) Hive pomocí následujícího příkazu:

    hive
    
  2. 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/hdiadlclusterpří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.

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.

Viz také