Creare cluster HDInsight con Data Lake Store come risorsa di archiviazione predefinita usando PowerShellCreate HDInsight clusters with Data Lake Store as default storage by using PowerShell

Informazioni su come usare Azure PowerShell per configurare cluster Azure HDInsight con Azure Data Lake Store come risorsa di archiviazione predefinita.Learn how to use Azure PowerShell to configure Azure HDInsight clusters with Azure Data Lake Store, as default storage. Per istruzioni su come creare un cluster HDInsight con Data Lake Store come risorsa di archiviazione aggiuntiva, vedere Usare Azure PowerShell per creare un cluster HDInsight con Data Lake Store (come risorsa di archiviazione predefinita).For instructions on creating an HDInsight cluster with Data Lake Store as additional storage, see Create an HDInsight cluster with Data Lake Store as additional storage.

Di seguito sono riportate alcune considerazioni importanti per l'uso di HDInsight con Data Lake Store:Here are some important considerations for using HDInsight with Data Lake Store:

  • L'opzione per creare cluster HDInsight con accesso a Data Lake Store come risorsa di archiviazione predefinita è disponibile per le versioni 3.5 e 3.6 di HDInsight.The option to create HDInsight clusters with access to Data Lake Store as default storage is available for HDInsight version 3.5 and 3.6.

  • L'opzione per creare cluster HDInsight con accesso a Data Lake Store come risorsa di archiviazione predefinita non è disponibile per i cluster HDInsight Premium.The option to create HDInsight clusters with access to Data Lake Store as default storage is not available for HDInsight Premium clusters.

Per configurare HDInsight per il funzionamento con Data Lake Store usando PowerShell, seguire le istruzioni nelle cinque sezioni seguenti.To configure HDInsight to work with Data Lake Store by using PowerShell, follow the instructions in the next five sections.

PrerequisitiPrerequisites

Prima di iniziare l'esercitazione, verificare di soddisfare i requisiti seguenti:Before you begin this tutorial, make sure that you meet the following requirements:

  • Sottoscrizione di Azure: passare a Crea subito il tuo account Azure gratuito.An Azure subscription: Go to Get Azure free trial.
  • Azure PowerShell 1.0 o versione successiva: vedere l'articolo su come installare e configurare PowerShell.Azure PowerShell 1.0 or greater: See How to install and configure PowerShell.
  • Windows Software Development Kit (SDK): per installare Windows SDK, passare a Download e strumenti per Windows 10.Windows Software Development Kit (SDK): To install Windows SDK, go to Downloads and tools for Windows 10. L'SDK viene usato per creare un certificato di sicurezza.The SDK is used to create a security certificate.
  • Entità servizio Azure Active Directory: questa esercitazione descrive come creare un'entità servizio in Azure Active Directory (Azure AD).Azure Active Directory service principal: This tutorial describes how to create a service principal in Azure Active Directory (Azure AD). Tuttavia, per creare un'entità servizio è necessario essere un amministratore di Azure AD.However, to create a service principal, you must be an Azure AD administrator. Se si è un amministratore, è possibile ignorare questo prerequisito e procedere con l'esercitazione.If you are an administrator, you can skip this prerequisite and proceed with the tutorial.

    Nota

    È possibile creare un'entità servizio solo se si è un amministratore di Azure AD.You can create a service principal only if you are an Azure AD administrator. Prima di poter creare un cluster HDInsight con Data Lake Store, un amministratore di Azure AD deve creare un'entità servizio.Your Azure AD administrator must create a service principal before you can create an HDInsight cluster with Data Lake Store. L'entità servizio deve essere creata con un certificato, come descritto in Creare un'entità servizio con certificato.The service principal must be created with a certificate, as described in Create a service principal with certificate.

Creare un account Archivio Data LakeCreate a Data Lake Store account

Per creare un account Data Lake Store, procedere come segue:To create a Data Lake Store account, do the following:

  1. Sul desktop aprire una finestra di PowerShell e quindi immettere i frammenti di codice seguenti.From your desktop, open a PowerShell window, and then enter the snippets below. Quando viene richiesto di effettuare l'accesso, accedere come amministratore o proprietario della sottoscrizione.When you are prompted to sign in, sign in as one of the subscription administrators or owners.

     # Sign in to your Azure account
     Login-AzureRmAccount
    
     # List all the subscriptions associated to your account
     Get-AzureRmSubscription
    
     # Select a subscription
     Set-AzureRmContext -SubscriptionId <subscription ID>
    
     # Register for Data Lake Store
     Register-AzureRmResourceProvider -ProviderNamespace "Microsoft.DataLakeStore"
    

    Nota

    Se si registra il provider di risorse Data Lake Store e viene visualizzato un errore simile a Register-AzureRmResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid, la sottoscrizione potrebbe non essere inclusa nell'elenco elementi consentiti per Data Lake Store.If you register the Data Lake Store resource provider and receive an error similar to Register-AzureRmResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid, your subscription might not be whitelisted for Data Lake Store. Per abilitare la sottoscrizione di Azure per l'anteprima pubblica di Data Lake Store, seguire le istruzioni in Introduzione all'uso di Azure Data Lake Store tramite il portale di Azure.To enable your Azure subscription for the Data Lake Store public preview, follow the instructions in Get started with Azure Data Lake Store by using the Azure portal.

  2. Un account Data Lake Store è associato a un gruppo di risorse di Azure.A Data Lake Store account is associated with an Azure resource group. Iniziare creando un gruppo di risorse.Start by creating a resource group.

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

    Verrà visualizzato un output simile al seguente:You should see an output like this:

     ResourceGroupName : hdiadlgrp
     Location          : eastus2
     ProvisioningState : Succeeded
     Tags              :
     ResourceId        : /subscriptions/<subscription-id>/resourceGroups/hdiadlgrp
    
  3. Creare un account Data Lake Store.Create a Data Lake Store account. Il nome dell'account specificato deve contenere solo lettere minuscole e numeri.The account name you specify must contain only lowercase letters and numbers.

     $dataLakeStoreName = "<your new Data Lake Store name>"
     New-AzureRmDataLakeStoreAccount -ResourceGroupName $resourceGroupName -Name $dataLakeStoreName -Location "East US 2"
    

    Verrà visualizzato un output simile al seguente:You should see an output like the following:

     ...
     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 Store come risorsa di archiviazione predefinita, è necessario specificare un percorso radice in cui vengono copiati i file specifici del cluster durante la creazione del cluster.Using Data Lake Store as default storage requires you to specify a root path to which the cluster-specific files are copied during cluster creation. Per creare un percorso radice, che nel frammento di codice è /cluster/hdiadlcluster, usare i cmdlet seguenti:To create a root path, which is /clusters/hdiadlcluster in the snippet, use the following cmdlets:

     $myrootdir = "/"
     New-AzureRmDataLakeStoreItem -Folder -AccountName $dataLakeStoreName -Path $myrootdir/clusters/hdiadlcluster
    

Configurare l'autenticazione per l'accesso basato sui ruoli all'Archivio Data LakeSet up authentication for role-based access to Data Lake Store

Ogni sottoscrizione di Azure è associata a un'entità di Azure AD.Every Azure subscription is associated with an Azure AD entity. 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 autenticarsi con Azure AD.Users and services that access subscription resources by using the Azure portal or the Azure Resource Manager API must first authenticate with Azure AD. L'accesso viene concesso alle sottoscrizioni e ai servizi di Azure tramite l'assegnazione del ruolo appropriato in una risorsa di Azure.Access is granted to Azure subscriptions and services by assigning them the appropriate role on an Azure resource. Per i servizi, un'entità servizio identifica il servizio in Azure AD.For services, a service principal identifies the service in Azure AD.

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 Store creato in precedenza.This section illustrates how to grant an application service, such as HDInsight, access to an Azure resource (the Data Lake Store account that you created earlier). A tale scopo, è necessario creare un'entità servizio per l'applicazione e assegnare ruoli a tale entità tramite PowerShell.You do so by creating a service principal for the application and assigning roles to it via PowerShell.

Per configurare l'autenticazione di Active Directory per Azure Data Lake, eseguire le attività nelle due sezioni seguenti.To set up Active Directory authentication for Azure Data Lake, perform the tasks in the following two sections.

Creare un certificato autofirmatoCreate a self-signed certificate

Assicurarsi di avere installato Windows SDK prima di continuare con i passaggi descritti in questa sezione.Make sure you have Windows SDK installed before proceeding with the steps in this section. È necessario aver creato anche una directory, ad esempio C:\mycertdir, in cui creare il certificato.You must have also created a directory, such as C:\mycertdir, where you create the certificate.

  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.From the PowerShell window, go to the location where you installed Windows SDK (typically, C:\Program Files (x86)\Windows Kits\10\bin\x86) and use the MakeCert utility to create a self-signed certificate and a private key. Usare il seguente comando:Use the following commands:

     $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.You will be prompted to enter the private key password. Una volta completata l'esecuzione del comando, nella directory del certificato specificata saranno presenti CertFile.cer e mykey.pvk.After the command is successfully executed, you should see CertFile.cer and mykey.pvk in the certificate directory that you specified.

  2. Usare l'utilità Pvk2Pfx per convertire i file con estensione PVK e CER creati da MakeCert in un file con estensione PFX.Use the Pvk2Pfx utility to convert the .pvk and .cer files that MakeCert created to a .pfx file. Eseguire il comando seguente:Run the following command:

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

    Quando viene chiesto, immettere la password della chiave privata specificata in precedenza.When you are prompted, enter the private key password that you specified earlier. Il valore specificato per il parametro -po è la password associata al file PFX.The value you specify for the -po parameter is the password that's associated with the .pfx file. Dopo il completamento del comando, nella directory del certificato specificata dovrebbe essere presente anche un file denominato CertFile.pfx.After the command has been completed successfully, you should also see a CertFile.pfx in the certificate directory that you specified.

Creare un'applicazione Azure AD e un'entità servizioCreate an Azure AD and a service principal

In questa sezione si crea un'entità servizio per un'applicazione Azure AD, si assegna un ruolo all'entità servizio e si esegue l'autenticazione come entità servizio fornendo un certificato.In this section, you create a service principal for an Azure AD application, assign a role to the service principal, and authenticate as the service principal by providing a certificate. Per creare un'applicazione in Azure AD, eseguire i comandi seguenti:To create an application in Azure AD, run the following commands:

  1. Incollare i cmdlet seguenti nella finestra della console di PowerShell.Paste the following cmdlets in the PowerShell console window. Assicurarsi che il valore specificato per la proprietà -DisplayName sia univoco.Make sure that the value you specify for the -DisplayName property is unique. I valori per -HomePage e -IdentiferUris sono valori segnaposto e non vengono verificati.The values for -HomePage and -IdentiferUris are placeholder values and are not verified.

     $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-AzureRmADApplication `
         -DisplayName "HDIADL" `
         -HomePage "https://contoso.com" `
         -IdentifierUris "https://mycontoso.com" `
         -CertValue $credential  `
         -StartDate $certificatePFX.NotBefore  `
         -EndDate $certificatePFX.NotAfter
    
     $applicationId = $application.ApplicationId
    
  2. Creare un'entità servizio usando l'ID applicazione.Create a service principal by using the application ID.

     $servicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $applicationId
    
     $objectId = $servicePrincipal.Id
    
  3. Concedere l'accesso dell'entità servizio alla radice di Data Lake Store e a tutte le cartelle nel percorso radice specificato in precedenza.Grant the service principal access to the Data Lake Store root and all the folders in the root path that you specified earlier. Usare i cmdlet seguenti:Use the following cmdlets:

     Set-AzureRmDataLakeStoreItemAclEntry -AccountName $dataLakeStoreName -Path / -AceType User -Id $objectId -Permissions All
     Set-AzureRmDataLakeStoreItemAclEntry -AccountName $dataLakeStoreName -Path /clusters -AceType User -Id $objectId -Permissions All
     Set-AzureRmDataLakeStoreItemAclEntry -AccountName $dataLakeStoreName -Path /clusters/hdiadlcluster -AceType User -Id $objectId -Permissions All
    

Creare un cluster HDInsight Linux con Data Lake Store come risorsa di archiviazione predefinitaCreate an HDInsight Linux cluster with Data Lake Store as the default storage

In questa sezione viene creato un cluster HDInsight Hadoop Linux con Data Lake Store come risorsa di archiviazione predefinita.In this section, you create an HDInsight Hadoop Linux cluster with Data Lake Store as the default storage. Per questa versione, il cluster HDInsight e Data Lake Store devono trovarsi nella stessa posizione.For this release, the HDInsight cluster and Data Lake Store must be in the same location.

  1. Recuperare l'ID tenant della sottoscrizione e archiviarlo per usarlo in seguito.Retrieve the subscription tenant ID, and store it to use later.

     $tenantID = (Get-AzureRmContext).Tenant.TenantId
    
  2. Creare il cluster HDInsight usando i cmdlet seguenti:Create the HDInsight cluster by using the following cmdlets:

     # Set these variables
    
     $location = "East US 2"
     $storageAccountName = $dataLakeStoreName                       # Data Lake Store 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-AzureRmHDInsightCluster `
            -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.After the cmdlet has been successfully completed, you should see an output that lists the cluster details.

Eseguire i processi di test sul cluster HDInsight per usare Data Lake StoreRun test jobs on the HDInsight cluster to use Data Lake Store

Dopo aver configurato un cluster HDInsight, è possibile eseguire i processi di test sul cluster per verificare che possa accedere a Data Lake Store.After you have configured an HDInsight cluster, you can run test jobs on it to ensure that it can access Data Lake Store. A tale scopo, eseguire un processo Hive di esempio che crea una tabella che usa i dati di esempio già disponibili in Data Lake Store in /example/data/sample.log.To do so, run a sample Hive job to create a table that uses the sample data that's already available in Data Lake Store at /example/data/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.In this section, you make a Secure Shell (SSH) connection into the HDInsight Linux cluster that you created, and then you run a sample Hive query.

  1. Dopo aver stabilito la connessione, avviare l'interfaccia della riga di comando di Hive usando il comando seguente:After you have made the connection, start the Hive command-line interface (CLI) by using the following command:

     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 Store:Use the CLI to enter the following statements to create a new table named vehicles by using the sample data in Data Lake Store:

     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.You should see the query output on the SSH console.

    Nota

    Il percorso ai dati di esempio nel comando CREATE TABLE precedente è adl:///example/data/, dove adl:/// è la radice del cluster.The path to the sample data in the preceding CREATE TABLE command is adl:///example/data/, where adl:/// is the cluster root. In base all'esempio della radice del cluster specificato in questa esercitazione, il comando è adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster.Following the example of the cluster root that's specified in this tutorial, the command is adl://hdiadlstore.azuredatalakestore.net/clusters/hdiadlcluster. È possibile usare l'alternativa più breve o indicare il percorso completo della radice del cluster.You can either use the shorter alternative or provide the complete path to the cluster root.

Accedere a Data Lake Store tramite comandi HDFSAccess Data Lake Store by using HDFS commands

Dopo aver configurato il cluster HDInsight per usare Data Lake Store, è possibile usare i comandi della shell HDFS (Hadoop Distributed File System) per accedere all'archivio.After you have configured the HDInsight cluster to use Data Lake Store, you can use Hadoop Distributed File System (HDFS) shell commands to access the store.

In questa sezione si stabilisce una connessione SSH al cluster HDInsight Linux creato e quindi si eseguono i comandi HDFS.In this section, you make an SSH connection into the HDInsight Linux cluster that you created, and then you run the HDFS commands.

Dopo avere stabilito la connessione, elencare i file in Data Lake Store usando il comando del file system HDFS seguente.After you've made the connection, list the files in Data Lake Store by using the following HDFS file system command.

hdfs dfs -ls adl:///

È anche possibile usare il comando hdfs dfs -put per caricare alcuni file in Data Lake Store e quindi usare hdfs dfs -ls per verificare se i file sono stati caricati correttamente.You can also use the hdfs dfs -put command to upload some files to Data Lake Store, and then use hdfs dfs -ls to verify whether the files were successfully uploaded.

Vedere ancheSee also