Delen via


HDInsight-clusters maken met Azure Data Lake Storage Gen1 als standaardopslag met behulp van PowerShell

Meer informatie over het gebruik van Azure PowerShell voor het configureren van Azure HDInsight-clusters met Azure Data Lake Storage Gen1 als standaardopslag. Zie Een HDInsight-cluster maken met Data Lake Storage Gen1 als extra opslag voor instructies over het maken van een HDInsight-cluster met Data Lake Storage Gen1 als extra opslag.

Hier volgen enkele belangrijke overwegingen voor het gebruik van HDInsight met Data Lake Storage Gen1:

  • De optie voor het maken van HDInsight-clusters met toegang tot Data Lake Storage Gen1 als standaardopslag is beschikbaar voor HDInsight versie 3.5 en 3.6.

  • De optie voor het maken van HDInsight-clusters met toegang tot Data Lake Storage Gen1 als standaardopslag is niet beschikbaar voor HDInsight Premium-clusters.

Als u HDInsight wilt configureren voor gebruik met Data Lake Storage Gen1 met behulp van PowerShell, volgt u de instructies in de volgende vijf secties.

Vereisten

Notitie

Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Voordat u met deze zelfstudie begint, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:

  • Een Azure-abonnement: Ga naar Gratis proefversie van Azure downloaden.

  • Azure PowerShell 1.0 of hoger: zie PowerShell installeren en configureren.

  • Windows Software Development Kit (SDK): als u Windows SDK wilt installeren, gaat u naar Downloads en hulpprogramma's voor Windows 10. De SDK wordt gebruikt om een beveiligingscertificaat te maken.

  • Microsoft Entra service-principal: in deze zelfstudie wordt beschreven hoe u een service-principal maakt in Microsoft Entra ID. Als u echter een service-principal wilt maken, moet u een Microsoft Entra-beheerder zijn. Als u een beheerder bent, kunt u deze vereiste overslaan en doorgaan met de zelfstudie.

    Notitie

    U kunt alleen een service-principal maken als u een Microsoft Entra-beheerder bent. De Microsoft Entra-beheerder moet een service-principal maken voordat u een HDInsight-cluster met Data Lake Storage Gen1 kunt maken. De service-principal moet worden gemaakt met een certificaat, zoals beschreven in Een service-principal maken met certificaat.

Een Azure Data Lake Storage Gen1-account maken

Ga als volgt te werk om een Data Lake Storage Gen1-account te maken:

  1. Open een PowerShell-venster op het bureaublad en voer de onderstaande codefragmenten in. Wanneer u wordt gevraagd u aan te melden, meldt u zich aan als een van de abonnementsbeheerders of -eigenaren.

    # 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"
    

    Notitie

    Als u de Data Lake Storage Gen1-resourceprovider registreert en een fout ontvangt die vergelijkbaar is met Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid, wordt uw abonnement mogelijk niet goedgekeurd voor Data Lake Storage Gen1. Als u uw Azure-abonnement wilt inschakelen voor Data Lake Storage Gen1, volgt u de instructies in Aan de slag met Azure Data Lake Storage Gen1 met behulp van de Azure Portal.

  2. Een Data Lake Storage Gen1-account is gekoppeld aan een Azure-resourcegroep. Begin met het maken van een resourcegroep.

    $resourceGroupName = "<your new resource group name>"
    New-AzResourceGroup -Name $resourceGroupName -Location "East US 2"
    

    De uitvoer ziet er als volgt uit:

    ResourceGroupName : hdiadlgrp
    Location          : eastus2
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Maak een Data Lake Storage Gen1-account. De accountnaam die u opgeeft, mag alleen kleine letters en cijfers bevatten.

    $dataLakeStorageGen1Name = "<your new Data Lake Storage Gen1 name>"
    New-AzDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStorageGen1Name -Location "East US 2"
    

    Als het goed is, wordt ongeveer de volgende uitvoer weergegeven:

    ...
    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. Als u Data Lake Storage Gen1 als standaardopslag gebruikt, moet u een hoofdpad opgeven waarnaar de clusterspecifieke bestanden worden gekopieerd tijdens het maken van het cluster. Gebruik de volgende cmdlets om een hoofdpad te maken, namelijk /clusters/hdiadlcluster in het codefragment:

    $myrootdir = "/"
    New-AzDataLakeStoreItem -Folder -AccountName $dataLakeStorageGen1Name -Path $myrootdir/clusters/hdiadlcluster
    

Verificatie instellen voor toegang op basis van rollen tot Data Lake Storage Gen1

Elk Azure-abonnement is gekoppeld aan een Microsoft Entra-entiteit. Gebruikers en services die toegang hebben tot abonnementsresources met behulp van de Azure Portal of de Azure Resource Manager-API, moeten zich eerst verifiëren met Microsoft Entra ID. Toegang wordt verleend aan Azure-abonnementen en -services door deze de juiste rol toe te wijzen aan een Azure-resource. Voor services identificeert een service-principal de service in Microsoft Entra ID.

In deze sectie wordt uitgelegd hoe u een toepassingsservice, zoals HDInsight, toegang verleent tot een Azure-resource (het Data Lake Storage Gen1-account dat u eerder hebt gemaakt). U doet dit door een service-principal voor de toepassing te maken en er rollen aan toe te wijzen via PowerShell.

Als u Active Directory-verificatie wilt instellen voor Data Lake Storage Gen1, voert u de taken uit in de volgende twee secties.

Een zelfondertekend certificaat maken

Zorg ervoor dat u Windows SDK hebt geïnstalleerd voordat u doorgaat met de stappen in deze sectie. U moet ook een map hebben gemaakt, zoals C:\mycertdir, waarin u het certificaat maakt.

  1. Ga in het PowerShell-venster naar de locatie waar u de Windows SDK hebt geïnstalleerd (meestal C:\Program Files (x86)\Windows Kits\10\bin\x86) en gebruik het hulpprogramma MakeCert om een zelfondertekend certificaat en een persoonlijke sleutel te maken. Gebruik de volgende opdrachten:

    $certificateFileDir = "<my certificate directory>"
    cd $certificateFileDir
    
    makecert -sv mykey.pvk -n "cn=HDI-ADL-SP" CertFile.cer -r -len 2048
    

    U wordt gevraagd het wachtwoord voor de persoonlijke sleutel in te voeren. Nadat de opdracht is uitgevoerd, ziet u CertFile.cer en mykey.pvk in de certificaatmap die u hebt opgegeven.

  2. Gebruik het hulpprogramma Pvk2Pfx om de .pvk- en .cer-bestanden die door MakeCert zijn gemaakt, te converteren naar een PFX-bestand. Voer de volgende opdracht uit:

    pvk2pfx -pvk mykey.pvk -spc CertFile.cer -pfx CertFile.pfx -po <password>
    

    Wanneer u hierom wordt gevraagd, voert u het wachtwoord voor de persoonlijke sleutel in dat u eerder hebt opgegeven. De waarde die u opgeeft voor de parameter -po is het wachtwoord dat is gekoppeld aan het PFX-bestand. Nadat de opdracht is voltooid, ziet u ook een CertFile.pfx in de certificaatmap die u hebt opgegeven.

Een Microsoft Entra ID en een service-principal maken

In deze sectie maakt u een service-principal voor een Microsoft Entra-toepassing, wijst u een rol toe aan de service-principal en verifieert u zich als de service-principal door een certificaat op te geven. Voer de volgende opdrachten uit om een toepassing te maken in Microsoft Entra ID:

  1. Plak de volgende cmdlets in het PowerShell-consolevenster. Zorg ervoor dat de waarde die u opgeeft voor de eigenschap -DisplayName uniek is. De waarden voor -HomePage en -IdentiferUris zijn tijdelijke aanduidingen en worden niet geverifieerd.

    $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. Maak een service-principal met behulp van de toepassings-id.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
    $objectId = $servicePrincipal.Id
    
  3. Ververleent de service-principal toegang tot de Data Lake Storage Gen1 hoofdmap en alle mappen in het hoofdpad dat u eerder hebt opgegeven. Gebruik de volgende cmdlets:

    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
    

Een HDInsight Linux-cluster maken met Data Lake Storage Gen1 als standaardopslag

In deze sectie maakt u een HDInsight Hadoop Linux-cluster met Data Lake Storage Gen1 als standaardopslag. Voor deze release moeten het HDInsight-cluster en de Data Lake Storage Gen1 zich op dezelfde locatie bevinden.

  1. Haal de tenant-id van het abonnement op en sla deze op voor later gebruik.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. Maak het HDInsight-cluster met behulp van de volgende cmdlets:

    # 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
    

    Nadat de cmdlet is voltooid, ziet u een uitvoer met de clusterdetails.

Testtaken uitvoeren op het HDInsight-cluster om Data Lake Storage Gen1 te gebruiken

Nadat u een HDInsight-cluster hebt geconfigureerd, kunt u er testtaken op uitvoeren om ervoor te zorgen dat het toegang heeft tot Data Lake Storage Gen1. Voer hiervoor een Hive-voorbeeldtaak uit om een tabel te maken die gebruikmaakt van de voorbeeldgegevens die al beschikbaar zijn in Data Lake Storage Gen1 in <de clusterhoofdmap>/voorbeeld/gegevens/sample.log.

In deze sectie maakt u een SSH-verbinding (Secure Shell) in het HDInsight Linux-cluster dat u hebt gemaakt en voert u vervolgens een Hive-voorbeeldquery uit.

  1. Nadat u de verbinding hebt gemaakt, start u de Hive-opdrachtregelinterface (CLI) met behulp van de volgende opdracht:

    hive
    
  2. Gebruik de CLI om de volgende instructies in te voeren om een nieuwe tabel met de naam voertuigen te maken met behulp van de voorbeeldgegevens in 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;
    

U ziet nu de query-uitvoer op de SSH-console.

Notitie

Het pad naar de voorbeeldgegevens in de voorgaande CREATE TABLE-opdracht is adl:///example/data/, waarbij adl:/// de clusterhoofdmap is. In het voorbeeld van de clusterhoofdmap die in deze zelfstudie is opgegeven, is adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlclusterde opdracht . U kunt het kortere alternatief gebruiken of het volledige pad naar de clusterhoofdmap opgeven.

Toegang tot Data Lake Storage Gen1 met behulp van HDFS-opdrachten

Nadat u het HDInsight-cluster hebt geconfigureerd voor het gebruik van Data Lake Storage Gen1, kunt u hadoop Distributed File System -shellopdrachten (HDFS) gebruiken om toegang te krijgen tot de store.

In deze sectie maakt u een SSH-verbinding met het HDInsight Linux-cluster dat u hebt gemaakt en voert u vervolgens de HDFS-opdrachten uit.

Nadat u de verbinding hebt gemaakt, kunt u de bestanden in Data Lake Storage Gen1 weergeven met behulp van de volgende HDFS-bestandssysteemopdracht.

hdfs dfs -ls adl:///

U kunt ook de hdfs dfs -put opdracht gebruiken om sommige bestanden te uploaden naar Data Lake Storage Gen1 en vervolgens gebruiken hdfs dfs -ls om te controleren of de bestanden zijn geüpload.

Zie ook