Usare Azure PowerShell per creare un cluster HDInsight con Data Lake Store (come risorsa di archiviazione aggiuntiva)Use Azure PowerShell to create an HDInsight cluster with Data Lake Store (as additional storage)

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

Nota

Se si prevede di usare Azure Data Lake Store come risorsa di archiviazione aggiuntiva per i cluster HDInsight, è vivamente consigliabile farlo durante la creazione del cluster, come descritto in questo articolo.If you are going to use Azure Data Lake Store as additional storage for HDInsight cluster, we strongly recommend that you do this while you create the cluster as described in this article. L'aggiunta di Azure Data Lake Store come risorsa di archiviazione aggiuntiva a un cluster HDInsight esistente è un processo complesso e soggetto a errori.Adding Azure Data Lake Store as additional storage to an existing HDInsight cluster is a complicated process and prone to errors.

Per i tipi di cluster supportati, Data Lake Store può essere usato come risorsa di archiviazione predefinita o come account di archiviazione aggiuntivo.For supported cluster types, Data Lake Store can be used as a default storage or additional storage account. Quando Data Lake Store viene usato come risorsa di archiviazione aggiuntiva, l'account di archiviazione predefinito per i cluster saranno i BLOB del servizio di archiviazione di Azure (WASB) e i file correlati ai cluster (ad esempio log e così via) vengono scritti nella risorsa di archiviazione predefinita, mentre i dati da elaborare possono essere archiviati in un account di Data Lake Store.When Data Lake Store is used as additional storage, the default storage account for the clusters will still be Azure Storage Blobs (WASB) and the cluster-related files (such as logs, etc.) are still written to the default storage, while the data that you want to process can be stored in a Data Lake Store account. L'uso di Archivio Data Lake come account di archiviazione aggiuntivo non ha impatto sulle prestazioni o sulla possibilità di leggere/scrivere nella risorsa di archiviazione dal cluster.Using Data Lake Store as an additional storage account does not impact performance or the ability to read/write to the storage from the cluster.

Udo di Data Lake Store per l'archiviazione di cluster HDInsightUsing Data Lake Store for HDInsight cluster 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 aggiuntiva è disponibile per le versioni 3.2, 3.4, 3.5 e 3.6 di HDInsight.Option to create HDInsight clusters with access to Data Lake Store as additional storage is available for HDInsight versions 3.2, 3.4, 3.5, and 3.6.

La configurazione di HDInsight perché funzioni con Archivio Data Lake tramite PowerShell prevede i passaggi seguenti:Configuring HDInsight to work with Data Lake Store using PowerShell involves the following steps:

  • Creare un Archivio Azure Data LakeCreate an Azure Data Lake Store
  • Configurare l'autenticazione per l'accesso basato sui ruoli all'Archivio Data LakeSet up authentication for role-based access to Data Lake Store
  • Creare un cluster HDInsight con l'autenticazione per Archivio Data LakeCreate HDInsight cluster with authentication to Data Lake Store
  • Eseguire un processo di test sul clusterRun a test job on the cluster

PrerequisitiPrerequisites

Prima di iniziare questa esercitazione, è necessario disporre di quanto segue:Before you begin this tutorial, you must have the following:

  • Una sottoscrizione di Azure.An Azure subscription. Vedere Ottenere una versione di valutazione gratuita di Azure.See Get Azure free trial.
  • Azure PowerShell 1.0 o versioni successive.Azure PowerShell 1.0 or greater. Vedere Come installare e configurare Azure PowerShell.See How to install and configure Azure PowerShell.
  • Windows SDK.Windows SDK. Per installarlo, fare clic qui.You can install it from here. Usarlo per creare un certificato di sicurezza.You use this to create a security certificate.
  • Entità servizio di Azure Active Directory.Azure Active Directory Service Principal. Questa esercitazione fornisce tutte le istruzioni utili su come creare un'entità servizio in Azure AD.Steps in this tutorial provide instructions on how to create a service principal in Azure AD. Tuttavia, è necessario essere un amministratore di Azure AD per creare un'entità servizio.However, you must be an Azure AD administrator to be able to create a service principal. Se si è un amministratore di Azure AD, è possibile ignorare questo prerequisito e procedere con l'esercitazione.If you are an Azure AD administrator, you can skip this prerequisite and proceed with the tutorial.

    Se non si è un amministratore di Azure AD, non sarà possibile eseguire i passaggi necessari per creare un'entità servizio.If you are not an Azure AD administrator, you will not be able to perform the steps required to create a service principal. In tal caso, l'amministratore di Azure AD deve creare un'entità servizio prima di creare un cluster HDInsight con l'archivio Data Lake Store.In such a case, your Azure AD administrator must first create a service principal before you can create an HDInsight cluster with Data Lake Store. Inoltre, l'entità servizio deve essere creata usando un certificato, come descritto in Creare un'entità servizio con certificato.Also, the service principal must be created using a certificate, as described at Create a service principal with certificate.

Creare un Archivio Azure Data LakeCreate an Azure Data Lake Store

Per creare un Archivio Data Lake, seguire questa procedura.Follow these steps to create a Data Lake Store.

  1. Sul desktop aprire una nuova finestra di Azure PowerShell e immettere il frammento di codice seguente.From your desktop, open a new Azure PowerShell window, and enter the following snippet. Quando viene richiesto di effettuare l'accesso, assicurarsi di accedere come amministratore/proprietario della sottoscrizione:When prompted to log in, make sure you log in as one of the subscription administrator/owner:

     # Log 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 riceve un errore simile a Register-AzureRmResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid quando si registra il provider di risorse Data Lake Store, è possibile che la sottoscrizione non sia abilitata per Azure Data Lake Store.If you receive an error similar to Register-AzureRmResourceProvider : InvalidResourceNamespace: The resource namespace 'Microsoft.DataLakeStore' is invalid when registering the Data Lake Store resource provider, it is possible that your subscription is not whitelisted for Azure Data Lake Store. Assicurarsi di abilitare la sottoscrizione di Azure per l'anteprima pubblica di Archivio Data Lake seguendo queste istruzioni.Make sure you enable your Azure subscription for Data Lake Store public preview by following these instructions.

  2. Un account di Archivio Azure Data Lake è associato a un gruppo di risorse di Azure.An Azure Data Lake Store account is associated with an Azure Resource Group. Per iniziare, creare un gruppo di risorse di Azure.Start by creating an Azure 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 Archivio Azure Data Lake.Create an Azure Data Lake Store account. Il nome dell'account specificato deve contenere solo lettere minuscole e numeri.The account name you specify must only contain 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. Caricare alcuni dati di esempio in Azure Data Lake.Upload some sample data to Azure Data Lake. Questi dati saranno usati più avanti in questo articolo per verificare che siano accessibili da un cluster HDInsight.We'll use this later in this article to verify that the data is accessible from an HDInsight cluster. Se si stanno cercando dati di esempio da caricare, è possibile ottenere la cartella Ambulance Data dal Repository GitHub per Azure Data Lake.If you are looking for some sample data to upload, you can get the Ambulance Data folder from the Azure Data Lake Git Repository.

     $myrootdir = "/"
     Import-AzureRmDataLakeStoreItem -AccountName $dataLakeStoreName -Path "C:\<path to data>\vehicle1_09142014.csv" -Destination $myrootdir\vehicle1_09142014.csv
    

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 una Azure Active Directory.Every Azure subscription is associated with an Azure Active Directory. Gli utenti e i servizi che accedono alle risorse della sottoscrizione tramite il portale di Azure o l'API di Azure Resource Manager devono prima autenticarsi con Azure Active Directory.Users and services that access resources of the subscription using the Azure portal or Azure Resource Manager API must first authenticate with that Azure Active Directory. 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 Active Directory (AAD).For services, a service principal identifies the service in the Azure Active Directory (AAD). Questa sezione illustra come concedere a un servizio dell'applicazione, ad esempio HDInsight, l'accesso a una risorsa di Azure, ovvero l'account Archivio Azure Data Lake creato in precedenza, mediante la creazione di un'entità servizio per l'applicazione e l'assegnazione di ruoli a tale entità con Azure PowerShell.This section illustrates how to grant an application service, like HDInsight, access to an Azure resource (the Azure Data Lake Store account you created earlier) by creating a service principal for the application and assigning roles to that via Azure PowerShell.

Per configurare l'autenticazione di Active Directory per Azure Data Lake, è necessario eseguire queste attività.To set up Active Directory authentication for Azure Data Lake, you must perform the following tasks.

  • Creare un certificato autofirmatoCreate a self-signed certificate
  • Creare un'applicazione in Azure Active Directory e un'entità servizioCreate an application in Azure Active Directory and a Service Principal

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 sarà creato il certificato.You must have also created a directory, such as C:\mycertdir, where the certificate will be created.

  1. Dalla finestra di PowerShell passare al percorso in cui è installato Windows SDK, in genere C:\Program Files (x86)\Windows Kits\10\bin\x86, e usare l'utilità MakeCert per creare un certificato autofirmato e una chiave privata.From the PowerShell window, navigate 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 comandi seguenti: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 verranno visualizzati CertFile.cer e mykey.pvk.After the command successfully executes, you should see a CertFile.cer and mykey.pvk in the certificate directory 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 indicato di seguito.Run the following command.

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

    Quando richiesto immettere la password della chiave privata specificata in precedenza.When prompted enter the private key password 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 is associated with the .pfx file. Dopo il completamento del comando, nella directory del certificato specificata dovrebbe essere visualizzato un file denominato CertFile.pfx.After the command successfully completes, you should also see a CertFile.pfx in the certificate directory you specified.

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

In questa sezione seguire la procedura per creare un'entità servizio per un'applicazione Azure Active Directory, assegnare un ruolo all'entità servizio e autenticarsi come entità servizio fornendo un certificato.In this section, you perform the steps to create a service principal for an Azure Active Directory application, assign a role to the service principal, and authenticate as the service principal by providing a certificate. Eseguire i comandi seguenti per creare un'applicazione in Azure Active Directory.Run the following commands to create an application in Azure Active Directory.

  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 the value you specify for the -DisplayName property is unique. I valori per -HomePage e -IdentiferUris sono valori segnaposto e non vengono verificati.Also, 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 using the application ID.

     $servicePrincipal = New-AzureRmADServicePrincipal -ApplicationId $applicationId
    
     $objectId = $servicePrincipal.Id
    
  3. Concedere l'accesso dell'entità servizio al file e alla cartella Data Lake Store a cui si vuole accedere dal cluster HDInsight.Grant the service principal access to the Data Lake Store folder and the file that you will access from the HDInsight cluster. Il frammento seguente consente di accedere alla root dell'account Data Lake Store in cui è stato copiato il file di dati di esempio e al file stesso.The snippet below provides access to the root of the Data Lake Store account (where you copied the sample data file), and the file itself.

     Set-AzureRmDataLakeStoreItemAclEntry -AccountName $dataLakeStoreName -Path / -AceType User -Id $objectId -Permissions All
     Set-AzureRmDataLakeStoreItemAclEntry -AccountName $dataLakeStoreName -Path /vehicle1_09142014.csv -AceType User -Id $objectId -Permissions All
    

Creare un cluster HDInsight Linux con Data Lake Store come risorsa di archiviazione aggiuntivaCreate an HDInsight Linux cluster with Data Lake Store as additional storage

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

  1. Iniziare recuperando l'ID tenant della sottoscrizione,Start with retrieving the subscription tenant ID. che sarà necessario più avanti.You will need that later.

     $tenantID = (Get-AzureRmContext).Tenant.TenantId
    
  2. In questa versione Archivio Data Lake può essere usato solo come risorsa di archiviazione aggiuntiva per un cluster Hadoop.For this release, for a Hadoop cluster, Data Lake Store can only be used as an additional storage for the cluster. L'archivio predefinito continuerà a essere BLOB di archiviazione di Azure (WABS).The default storage will still be the Azure storage blobs (WASB). Si procederà quindi prima di tutto alla creazione dell'account di archiviazione e dei contenitori di archiviazione richiesti per il cluster.So, we'll first create the storage account and storage containers required for the cluster.

     # Create an Azure storage account
     $location = "East US 2"
     $storageAccountName = "<StorageAcccountName>"   # Provide a Storage account name
    
     New-AzureRmStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName -Location $location -Type Standard_GRS
    
     # Create an Azure Blob Storage container
     $containerName = "<ContainerName>"              # Provide a container name
     $storageAccountKey = (Get-AzureRmStorageAccountKey -Name $storageAccountName -ResourceGroupName $resourceGroupName)[0].Value
     $destContext = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey
     New-AzureStorageContainer -Name $containerName -Context $destContext
    
  3. Creare il cluster HDInsight.Create the HDInsight cluster. Eseguire i cmdlet seguenti.Use the following cmdlets.

     # Set these variables
     $clusterName = $containerName                   # As a best practice, have the same name for the cluster and container
     $clusterNodes = <ClusterSizeInNodes>            # The number of nodes in the HDInsight cluster
     $httpCredentials = Get-Credential
     $sshCredentials = Get-Credential
    
     New-AzureRmHDInsightCluster -ClusterName $clusterName -ResourceGroupName $resourceGroupName -HttpCredential $httpCredentials -Location $location -DefaultStorageAccountName "$storageAccountName.blob.core.windows.net" -DefaultStorageAccountKey $storageAccountKey -DefaultStorageContainer $containerName  -ClusterSizeInNodes $clusterNodes -ClusterType Hadoop -Version "3.4" -OSType Linux -SshCredential $sshCredentials -ObjectID $objectId -AadTenantId $tenantID -CertificateFilePath $certificateFilePath -CertificatePassword $password
    

    Dopo il completamento del cmdlet, viene visualizzato un output simile al seguente.After the cmdlet successfully completes, you should see an output listing the cluster details.

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

Dopo aver configurato un cluster HDInsight, è possibile eseguire processi di test sul cluster per verificare che il cluster HDInsight possa accedere ad Archivio Data Lake.After you have configured an HDInsight cluster, you can run test jobs on the cluster to test that the HDInsight cluster can access Data Lake Store. A questo scopo, verrà eseguito un processo Hive di esempio che crea una tabella con i dati di esempio caricati in precedenza in Archivio Data Lake.To do so, we will run a sample Hive job that creates a table using the sample data that you uploaded earlier to your Data Lake Store.

In questa sezione si accede tramite SSH al cluster Linux HDInsight e viene eseguita una query Hive di esempio.In this section you will SSH into the HDInsight Linux cluster you created and run the a sample Hive query.

  1. Dopo la connessione, avviare l'interfaccia della riga di comando di Hive mediante il comando seguente:Once connected, start the Hive CLI by using the following command:

     hive
    
  2. Usando l'interfaccia della riga di comando, immettere le istruzioni seguenti per creare una nuova tabella denominata vehicles con i dati di esempio in Archivio Data Lake:Using the CLI, enter the following statements to create a new table named vehicles by using the sample data in the Data Lake Store:

     DROP TABLE vehicles;
     CREATE EXTERNAL TABLE vehicles (str string) LOCATION 'adl://<mydatalakestore>.azuredatalakestore.net:443/';
     SELECT * FROM vehicles LIMIT 10;
    

    L'output dovrebbe essere simile al seguente:You should see an output similar to the following:

     1,1,2014-09-14 00:00:03,46.81006,-92.08174,51,S,1
     1,2,2014-09-14 00:00:06,46.81006,-92.08174,13,NE,1
     1,3,2014-09-14 00:00:09,46.81006,-92.08174,48,NE,1
     1,4,2014-09-14 00:00:12,46.81006,-92.08174,30,W,1
     1,5,2014-09-14 00:00:15,46.81006,-92.08174,47,S,1
     1,6,2014-09-14 00:00:18,46.81006,-92.08174,9,S,1
     1,7,2014-09-14 00:00:21,46.81006,-92.08174,53,N,1
     1,8,2014-09-14 00:00:24,46.81006,-92.08174,63,SW,1
     1,9,2014-09-14 00:00:27,46.81006,-92.08174,4,NE,1
     1,10,2014-09-14 00:00:30,46.81006,-92.08174,31,N,1
    

Accedere ad Archivio Data Lake tramite comandi HDFSAccess Data Lake Store using HDFS commands

Dopo aver configurato il cluster HDInsight perché funzioni con Archivio Data Lake, è possibile usare i comandi della shell HDFS per accedere all'archivio.Once you have configured the HDInsight cluster to use Data Lake Store, you can use the HDFS shell commands to access the store.

In questa sezione si accede tramite SSH al cluster Linux HDInsight creato e viene eseguito il comando HDFS.In this section you will SSH into the HDInsight Linux cluster you created and run the HDFS commands.

Dopo avere stabilito la connessione, usare il comando del file system HDFS seguente per elencare i file nell'Archivio Data Lake.Once connected, use the following HDFS filesystem command to list the files in the Data Lake Store.

hdfs dfs -ls adl://<Data Lake Store account name>.azuredatalakestore.net:443/

Dovrebbe essere elencato anche il file precedentemente caricato in Archivio Data Lake.This should list the file that you uploaded earlier to the Data Lake Store.

15/09/17 21:41:15 INFO web.CaboWebHdfsFileSystem: Replacing original urlConnectionFactory with org.apache.hadoop.hdfs.web.URLConnectionFactory@21a728d6
Found 1 items
-rwxrwxrwx   0 NotSupportYet NotSupportYet     671388 2015-09-16 22:16 adl://mydatalakestore.azuredatalakestore.net:443/mynewfolder

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

Vedere ancheSee Also