Creare cluster HDInsight con Azure Data Lake Storage Gen1 come risorsa di archiviazione predefinita usando PowerShell

Informazioni su come usare Azure PowerShell per configurare cluster Azure HDInsight con Azure Data Lake Storage Gen1 come risorsa di archiviazione predefinita. Per istruzioni su come creare un cluster HDInsight con Data Lake Storage Gen1 come risorsa di archiviazione aggiuntiva, vedere Creare un cluster HDInsight con Data Lake Storage Gen1 come risorsa di archiviazione aggiuntiva.

Di seguito sono riportate alcune considerazioni importanti per l'uso di HDInsight con Data Lake Storage Gen1:

  • L'opzione per creare cluster HDInsight con accesso a Data Lake Storage Gen1 come risorsa di archiviazione predefinita è disponibile per le versioni 3.5 e 3.6 di HDInsight.

  • L'opzione per creare cluster HDInsight con accesso a Data Lake Storage Gen1 come risorsa di archiviazione predefinita non è disponibile per i cluster HDInsight Premium.

Per configurare HDInsight per l'uso con Data Lake Storage Gen1 tramite PowerShell, seguire le istruzioni fornite nelle cinque sezioni seguenti.

Prerequisiti

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Prima di iniziare l'esercitazione, verificare di soddisfare i requisiti seguenti:

  • Sottoscrizione di Azure: passare a Crea subito il tuo account Azure gratuito.

  • Azure PowerShell 1.0 o versione successiva: vedere l'articolo su come installare e configurare PowerShell.

  • Windows Software Development Kit (SDK): per installare Windows SDK, passare a Download e strumenti per Windows 10. L'SDK viene usato per creare un certificato di sicurezza.

  • Microsoft Entra'entità servizio: questa esercitazione descrive come creare un'entità servizio in Microsoft Entra ID. Tuttavia, per creare un'entità servizio, è necessario essere un amministratore di Microsoft Entra. Se si è un amministratore, è possibile ignorare questo prerequisito e procedere con l'esercitazione.

    Nota

    È possibile creare un'entità servizio solo se si è un amministratore di Microsoft Entra. L'amministratore di Microsoft Entra deve creare un'entità servizio prima di poter creare un cluster HDInsight con Data Lake Storage Gen1. L'entità servizio deve essere creata con un certificato, come descritto in Creare un'entità servizio con certificato.

Creare un account Azure Data Lake Storage Gen1

Per creare un account Data Lake Storage Gen1, procedere come segue:

  1. Sul desktop aprire una finestra di PowerShell e quindi immettere i frammenti di codice seguenti. Quando viene richiesto di effettuare l'accesso, accedere come amministratore o proprietario della sottoscrizione.

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

    Nota

    Se si registra il provider di risorse Data Lake Storage Gen1 e viene visualizzato un errore simile a Register-AzResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid, la sottoscrizione potrebbe non essere approvata per Data Lake Storage Gen1. Per abilitare la sottoscrizione di Azure per Data Lake Storage Gen1, seguire le istruzioni in Introduzione all'uso di Azure Data Lake Storage Gen1 tramite il portale di Azure.

  2. Un account Data Lake Storage Gen1 è associato a un gruppo di risorse di Azure. Iniziare creando un gruppo di risorse.

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

    Verrà visualizzato un output simile al seguente:

    ResourceGroupName : hdiadlgrp
    Location          : eastus2
    ProvisioningState : Succeeded
    Tags              :
    ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Creare un account Data Lake Storage Gen1. Il nome dell'account specificato deve contenere solo lettere minuscole e numeri.

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

    Verrà visualizzato un output simile al seguente:

    ...
    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. Per usare Data Lake Storage Gen1 come risorsa di archiviazione predefinita, è necessario specificare un percorso radice in cui vengono copiati i file specifici del cluster durante la creazione del cluster. Per creare un percorso radice, ovvero /clusters/hdiadlcluster nel frammento di codice, usare i cmdlet seguenti:

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

Configurare l'autenticazione per l'accesso basato sui ruoli a Data Lake Storage Gen1

Ogni sottoscrizione di Azure è associata a un'entità Microsoft Entra. Gli utenti e i servizi che accedono alle risorse della sottoscrizione usando il portale di Azure o l'API di azure Resource Manager devono prima eseguire l'autenticazione con Microsoft Entra ID. L'accesso viene concesso alle sottoscrizioni e ai servizi di Azure tramite l'assegnazione del ruolo appropriato in una risorsa di Azure. Per i servizi, un'entità servizio identifica il servizio in Microsoft Entra ID.

Questa sezione illustra come concedere a un servizio dell'applicazione, ad esempio HDInsight, l'accesso a una risorsa di Azure, ovvero l'account Data Lake Storage Gen1 creato in precedenza. A tale scopo, è necessario creare un'entità servizio per l'applicazione e assegnare ruoli a tale entità tramite PowerShell.

Per configurare l'autenticazione di Active Directory per Data Lake Storage Gen1, eseguire le attività nelle due sezioni seguenti.

Creare un certificato autofirmato

Assicurarsi di avere installato Windows SDK prima di continuare con i passaggi descritti in questa sezione. È necessario aver creato anche una directory, ad esempio C:\mycertdir, in cui creare il certificato.

  1. Dalla finestra di PowerShell passare al percorso in cui è installato Windows SDK, in genere C:\Programmi (x86)\Windows Kits\10\bin\x86, e usare l'utilità MakeCert per creare un certificato autofirmato e una chiave privata. Usare il seguente comando:

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

    Verrà richiesto di immettere la password della chiave privata. Una volta completata l'esecuzione del comando, nella directory del certificato specificata saranno presenti CertFile.cer e mykey.pvk.

  2. Usare l'utilità Pvk2Pfx per convertire i file con estensione PVK e CER creati da MakeCert in un file con estensione PFX. Eseguire il comando seguente:

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

    Quando viene chiesto, immettere la password della chiave privata specificata in precedenza. Il valore specificato per il parametro -po è la password associata al file PFX. Al termine del comando, dovrebbe essere visualizzato anche un file CertFile.pfx nella directory del certificato specificata.

Creare un Microsoft Entra ID e un'entità servizio

In questa sezione si crea un'entità servizio per un'applicazione Microsoft Entra, si assegna un ruolo all'entità servizio e si esegue l'autenticazione come entità servizio fornendo un certificato. Per creare un'applicazione in Microsoft Entra ID, eseguire i comandi seguenti:

  1. Incollare i cmdlet seguenti nella finestra della console di PowerShell. Assicurarsi che il valore specificato per la proprietà -DisplayName sia univoco. I valori per -HomePage e -IdentiferUris sono valori segnaposto e non vengono verificati.

    $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. Creare un'entità servizio usando l'ID applicazione.

    $servicePrincipal = New-AzADServicePrincipal -ApplicationId $applicationId -Role Contributor
    
    $objectId = $servicePrincipal.Id
    
  3. Concedere all'entità servizio l'accesso alla radice di Data Lake Storage Gen1 e a tutte le cartelle nel percorso radice specificato in precedenza. Usare i cmdlet seguenti:

    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
    

Creare un cluster HDInsight Linux con Data Lake Storage Gen1 come risorsa di archiviazione predefinita

In questa sezione viene creato un cluster HDInsight Hadoop Linux con Data Lake Storage Gen1 come risorsa di archiviazione predefinita. Per questa versione, il cluster HDInsight e Data Lake Storage Gen1 devono trovarsi nella stessa posizione.

  1. Recuperare l'ID tenant della sottoscrizione e archiviarlo per usarlo in seguito.

    $tenantID = (Get-AzContext).Tenant.TenantId
    
  2. Creare il cluster HDInsight usando i cmdlet seguenti:

    # 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
    

    Dopo il completamento del cmdlet, dovrebbe viene visualizzato un output con i dettagli del cluster.

Eseguire i processi di test nel cluster HDInsight per usare Data Lake Storage Gen1

Dopo aver configurato un cluster HDInsight, è possibile eseguire i processi di test nel cluster per verificare che possa accedere a Data Lake Storage Gen1. A tale scopo, eseguire un processo Hive di esempio per creare una tabella che usa i dati di esempio già disponibili in Data Lake Storage Gen1 nella <radice> del cluster/esempio/dati/sample.log.

In questa sezione si stabilisce una connessione SSH (Secure Shell) al cluster HDInsight Linux creato e quindi si esegue una query Hive di esempio.

  1. Dopo aver stabilito la connessione, avviare l'interfaccia della riga di comando di Hive usando il comando seguente:

    hive
    
  2. Usare l'interfaccia della riga di comando per immettere le istruzioni seguenti per creare una nuova tabella denominata vehicles con i dati di esempio 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;
    

L'output della query dovrebbe essere visualizzato nella console SSH.

Nota

Il percorso ai dati di esempio nel comando CREATE TABLE precedente è adl:///example/data/, dove adl:/// è la radice del cluster. In base all'esempio della radice del cluster specificato in questa esercitazione, il comando è adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster. È possibile usare l'alternativa più breve o indicare il percorso completo della radice del cluster.

Accedere a Data Lake Storage Gen1 tramite comandi HDFS

Dopo aver configurato il cluster HDInsight per l'uso di Data Lake Storage Gen1, è possibile usare i comandi della shell HDFS (Hadoop Distributed File System) per accedere all'archivio.

In questa sezione si stabilisce una connessione SSH al cluster HDInsight Linux creato e quindi si eseguono i comandi HDFS.

Dopo avere stabilito la connessione,visualizzare l'elenco dei file in Data Lake Storage Gen1 usando il comando del file system HDFS seguente.

hdfs dfs -ls adl:///

È anche possibile usare il comando hdfs dfs -put per caricare alcuni file in Data Lake Storage Gen1 e quindi usare hdfs dfs -ls per verificare se i file sono stati caricati correttamente.

Vedi anche