Dela via


Skapa HDInsight-kluster med Azure Data Lake Storage Gen1 som standardlagring med hjälp av PowerShell

Lär dig hur du använder Azure PowerShell för att konfigurera Azure HDInsight-kluster med Azure Data Lake Storage Gen1 som standardlagring. Anvisningar om hur du skapar ett HDInsight-kluster med Data Lake Storage Gen1 som ytterligare lagringsutrymme finns i Skapa ett HDInsight-kluster med Data Lake Storage Gen1 som ytterligare lagringsutrymme.

Här följer några viktiga saker att tänka på när du använder HDInsight med Data Lake Storage Gen1:

  • Alternativet att skapa HDInsight-kluster med åtkomst till Data Lake Storage Gen1 som standardlagring är tillgängligt för HDInsight version 3.5 och 3.6.

  • Alternativet att skapa HDInsight-kluster med åtkomst till Data Lake Storage Gen1 eftersom standardlagring inte är tillgängligt för HDInsight Premium-kluster.

Om du vill konfigurera HDInsight så att det fungerar med Data Lake Storage Gen1 med hjälp av PowerShell följer du anvisningarna i de kommande fem avsnitten.

Förutsättningar

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Innan du påbörjar den här självstudien måste du se till att du uppfyller följande krav:

  • En Azure-prenumeration: Gå till Skaffa en kostnadsfri utvärderingsversion av Azure.

  • Azure PowerShell 1.0 eller senare: Se Installera och konfigurera PowerShell.

  • Windows Software Development Kit (SDK): Om du vill installera Windows SDK går du till Nedladdningar och verktyg för Windows 10. SDK:et används för att skapa ett säkerhetscertifikat.

  • Microsoft Entra tjänstens huvudnamn: I den här självstudien beskrivs hur du skapar ett huvudnamn för tjänsten i Microsoft Entra ID. Men om du vill skapa ett huvudnamn för tjänsten måste du vara Microsoft Entra administratör. Om du är administratör kan du hoppa över det här kravet och fortsätta med självstudien.

    Anteckning

    Du kan bara skapa ett huvudnamn för tjänsten om du är Microsoft Entra administratör. Din Microsoft Entra-administratör måste skapa ett huvudnamn för tjänsten innan du kan skapa ett HDInsight-kluster med Data Lake Storage Gen1. Tjänstens huvudnamn måste skapas med ett certifikat enligt beskrivningen i Skapa ett huvudnamn för tjänsten med certifikat.

Skapa ett Azure Data Lake Storage Gen1-konto

Så här skapar du ett Data Lake Storage Gen1 konto:

  1. Öppna ett PowerShell-fönster från skrivbordet och ange sedan kodfragmenten nedan. När du uppmanas att logga in loggar du in som en av prenumerationsadministratörerna eller ägarna.

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

    Anteckning

    Om du registrerar Data Lake Storage Gen1 resursprovider och får ett fel som liknar Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalidkanske din prenumeration inte har godkänts för Data Lake Storage Gen1. Om du vill aktivera din Azure-prenumeration för Data Lake Storage Gen1 följer du anvisningarna i Kom igång med Azure Data Lake Storage Gen1 med hjälp av Azure Portal.

  2. Ett Data Lake Storage Gen1-konto är associerat med en Azure-resursgrupp. Börja med att skapa en resursgrupp.

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

    Utdata bör ser ut så här:

    ResourceGroupName : hdiadlgrp
    Location          : eastus2
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Skapa ett Data Lake Storage Gen1 konto. Det kontonamn som du anger får endast innehålla gemener och siffror.

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

    Du bör se utdata som liknar följande:

    ...
    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. Om du använder Data Lake Storage Gen1 som standardlagring måste du ange en rotsökväg som de klusterspecifika filerna kopieras till när klustret skapas. Om du vill skapa en rotsökväg, som är /clusters/hdiadlcluster i kodfragmentet, använder du följande cmdletar:

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

Konfigurera autentisering för rollbaserad åtkomst till Data Lake Storage Gen1

Varje Azure-prenumeration är associerad med en Microsoft Entra entitet. Användare och tjänster som har åtkomst till prenumerationsresurser med hjälp av Azure Portal eller Azure Resource Manager-API:et måste först autentisera med Microsoft Entra ID. Åtkomst beviljas till Azure-prenumerationer och -tjänster genom att tilldela dem lämplig roll för en Azure-resurs. För tjänster identifierar tjänstens huvudnamn tjänsten i Microsoft Entra ID.

Det här avsnittet visar hur du beviljar en programtjänst, till exempel HDInsight, åtkomst till en Azure-resurs (det Data Lake Storage Gen1 konto som du skapade tidigare). Det gör du genom att skapa ett huvudnamn för tjänsten för programmet och tilldela roller till det via PowerShell.

Om du vill konfigurera Active Directory-autentisering för Data Lake Storage Gen1 utför du uppgifterna i följande två avsnitt.

Skapa ett självsignerat certifikat

Kontrollera att du har Windows SDK installerat innan du fortsätter med stegen i det här avsnittet. Du måste också ha skapat en katalog, till exempel C:\mycertdir, där du skapar certifikatet.

  1. I PowerShell-fönstret går du till den plats där du installerade Windows SDK (vanligtvis C:\Program Files (x86)\Windows Kits\10\bin\x86) och använder verktyget MakeCert för att skapa ett självsignerat certifikat och en privat nyckel. Använd följande kommandon:

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

    Du uppmanas att ange lösenordet för den privata nyckeln. När kommandot har körts bör du se CertFile.cer och mykey.pvk i certifikatkatalogen som du har angett.

  2. Använd Pvk2Pfx-verktyget för att konvertera .pvk- och .cer-filer som MakeCert skapade till en .pfx-fil. Kör följande kommando:

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

    När du uppmanas att göra det anger du lösenordet för den privata nyckeln som du angav tidigare. Värdet som du anger för parametern -po är lösenordet som är associerat med .pfx-filen. När kommandot har slutförts bör du även se en CertFile.pfx i certifikatkatalogen som du har angett.

Skapa en Microsoft Entra ID och ett huvudnamn för tjänsten

I det här avsnittet skapar du ett huvudnamn för tjänsten för ett Microsoft Entra program, tilldelar en roll till tjänstens huvudnamn och autentiserar som tjänstens huvudnamn genom att tillhandahålla ett certifikat. Kör följande kommandon för att skapa ett program i Microsoft Entra ID:

  1. Klistra in följande cmdletar i PowerShell-konsolfönstret. Kontrollera att värdet som du anger för egenskapen -DisplayName är unikt. Värdena för -HomePage och -IdentiferUris är platshållarvärden och verifieras inte.

    $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. Skapa ett huvudnamn för tjänsten med hjälp av program-ID:t.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
    $objectId = $servicePrincipal.Id
    
  3. Ge tjänstens huvudnamn åtkomst till Data Lake Storage Gen1 roten och alla mappar i rotsökvägen som du angav tidigare. Använd följande cmdletar:

    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
    

Skapa ett HDInsight Linux-kluster med Data Lake Storage Gen1 som standardlagring

I det här avsnittet skapar du ett HDInsight Hadoop Linux-kluster med Data Lake Storage Gen1 som standardlagring. För den här versionen måste HDInsight-klustret och Data Lake Storage Gen1 finnas på samma plats.

  1. Hämta prenumerationens klientorganisations-ID och lagra det för senare användning.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. Skapa HDInsight-klustret med hjälp av följande cmdletar:

    # 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
    

    När cmdleten har slutförts bör du se utdata som visar klusterinformationen.

Kör testjobb i HDInsight-klustret för att använda Data Lake Storage Gen1

När du har konfigurerat ett HDInsight-kluster kan du köra testjobb på det för att säkerställa att det kan komma åt Data Lake Storage Gen1. Det gör du genom att köra ett Hive-exempeljobb för att skapa en tabell som använder exempeldata som redan är tillgängliga i Data Lake Storage Gen1 i <klusterroten>/exempel/data/sample.log.

I det här avsnittet skapar du en Secure Shell-anslutning (SSH) till HDInsight Linux-klustret som du skapade och sedan kör du en Hive-exempelfråga.

  1. När du har upprättat anslutningen startar du Hive-kommandoradsgränssnittet (CLI) med följande kommando:

    hive
    
  2. Använd CLI för att ange följande instruktioner för att skapa en ny tabell med namnet vehicles med hjälp av exempeldata i 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;
    

Du bör se frågeutdata i SSH-konsolen.

Anteckning

Sökvägen till exempeldata i föregående CREATE TABLE-kommando är adl:///example/data/, där adl:/// är klusterroten. Efter exemplet med klusterroten som anges i den här självstudien är adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlclusterkommandot . Du kan antingen använda det kortare alternativet eller ange den fullständiga sökvägen till klusterroten.

Komma åt Data Lake Storage Gen1 med hjälp av HDFS-kommandon

När du har konfigurerat HDInsight-klustret för att använda Data Lake Storage Gen1 kan du använda HdFS-kommandokommandon (Hadoop Distributed File System) för att komma åt arkivet.

I det här avsnittet skapar du en SSH-anslutning till HDInsight Linux-klustret som du skapade och sedan kör du HDFS-kommandona.

När du har upprättat anslutningen listar du filerna i Data Lake Storage Gen1 med hjälp av följande kommando för HDFS-filsystem.

hdfs dfs -ls adl:///

Du kan också använda hdfs dfs -put kommandot för att ladda upp några filer till Data Lake Storage Gen1 och sedan använda hdfs dfs -ls för att kontrollera om filerna har laddats upp.

Se även