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 om Azure HDInsight-clusters te configureren met Azure Data Lake Storage Gen1, als standaardopslag. Zie Een HDInsight-cluster maken met Data Lake Storage Gen1 als extra opslag voor instructies voor 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.

Vereiste voorwaarden

Opmerking

U wordt aangeraden 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 aan deze zelfstudie begint, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:

  • Een Azure-abonnement: Ga naar de gratis proefversie van Azure.

  • 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: Deze handleiding beschrijft hoe u een service-principal aanmaakt 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.

    Opmerking

    U kunt alleen een service-principal maken als u een Microsoft Entra-beheerder bent. Uw Microsoft Entra-beheerder moet een service-principal maken voordat u een HDInsight-cluster kunt maken met Data Lake Storage Gen1. De service-principal moet worden gemaakt met een certificaat, zoals beschreven in Een service-principal maken met een 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 uw bureaublad en voer de onderstaande fragmenten 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"
    

    Opmerking

    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, is het mogelijk dat uw abonnement niet is goedgekeurd voor Data Lake Storage Gen1. Als u uw Azure-abonnement voor Data Lake Storage Gen1 wilt inschakelen, volgt u de instructies in Aan de slag met Azure Data Lake Storage Gen1 met behulp van 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"
    

    U zou een uitvoer zoals deze moeten zien.

    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"
    

    U zou een uitvoer als de volgende moeten zien:

    ...
    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. Dit is /clusters/hdiadlcluster in het fragment:

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

Verificatie instellen voor op rollen gebaseerde toegang 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 Azure Portal of de Azure Resource Manager-API, moeten eerst worden geverifieerd met Microsoft Entra-id. Toegang wordt verleend aan Azure-abonnementen en -services door ze 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 ziet u 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 rollen eraan 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 Windows SDK is geïnstalleerd voordat u doorgaat met de stappen in deze sectie. U moet ook een map hebben gemaakt, zoals C:\mycertdir, waar u het certificaat maakt.

  1. Ga vanuit het PowerShell-venster naar de locatie waar u 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 te converteren die MakeCert heeft gemaakt 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 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 console-venster. 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. Verleen de serviceprincipal toegang tot de Data Lake Storage Gen1-root en alle mappen in het rootpad 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 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 hoofdmap> van het cluster/voorbeeld/gegevens/sample.log.

In deze sectie maakt u een SSH-verbinding (Secure Shell) met 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.

Opmerking

Het pad naar de voorbeeldgegevens in de voorgaande opdracht CREATE TABLE is adl:///example/data/, waar de basisdirectory van het cluster adl:/// is. Volgens het voorbeeld van de cluster-kernpunt dat in deze zelfstudie is opgegeven, is de opdracht adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster. U kunt het kortere alternatief gebruiken of het volledige pad naar de hoofdmap van het cluster 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 het archief.

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, geeft u de bestanden in Data Lake Storage Gen1 weer met behulp van de volgende OPDRACHT van het HDFS-bestandssysteem.

hdfs dfs -ls adl:///

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

Zie ook