Aggiungere altri account di archiviazione a HDInsightAdd additional storage accounts to HDInsight

Informazioni su come usare le azioni script per aggiungere altri account di archiviazione di Azure in HDInsight.Learn how to use script actions to add additional Azure storage accounts to HDInsight. Nella procedura descritta in questo documento viene aggiunto un account di archiviazione a un cluster HDInsight basato su Linux esistente.The steps in this document add a storage account to an existing Linux-based HDInsight cluster.

Importante

Le informazioni in questo documento illustrano come aggiungere altre risorse di archiviazione a un cluster dopo la creazione.The information in this document is about adding additional storage to a cluster after it has been created. Per informazioni sull'aggiunta di account di archiviazione durante la creazione del cluster, vedere Configurare cluster in HDInsight con Hadoop, Spark, Kafka e altro.For information on adding storage accounts during cluster creation, see Set up clusters in HDInsight with Hadoop, Spark, Kafka, and more.

FunzionamentoHow it works

Lo script accetta i parametri seguenti:This script takes the following parameters:

  • Nome dell'account di archiviazione di Azure: nome dell'account di archiviazione da aggiungere al cluster HDInsight.Azure storage account name: The name of the storage account to add to the HDInsight cluster. Dopo l'esecuzione dello script, HDInsight è in grado di leggere e scrivere i dati archiviati in questo account di archiviazione.After running the script, HDInsight can read and write data stored in this storage account.

  • Chiave dell'account di archiviazione di Azure: chiave che concede l'accesso all'account di archiviazione.Azure storage account key: A key that grants access to the storage account.

  • -p (facoltativo): se questo parametro è specificato, la chiave non viene crittografata e viene archiviata nel file core-site.xml come testo normale.-p (optional): If specified, the key is not encrypted and is stored in the core-site.xml file as plain text.

Durante l'elaborazione, lo script esegue le azioni seguenti:During processing, the script performs the following actions:

  • Se la chiave dell'account di archiviazione esiste già nella configurazione del file core-site.xml per il cluster, lo script viene chiuso e non vengono eseguite altre azioni.If the storage account already exists in the core-site.xml configuration for the cluster, the script exits and no further actions are performed.

  • Verifica che l'account di archiviazione esista e sia accessibile tramite la chiave.Verifies that the storage account exists and can be accessed using the key.

  • Crittografa la chiave mediante le credenziali del cluster,Encrypts the key using the cluster credential.

  • Aggiunge l'account di archiviazione al file core-site.xml.Adds the storage account to the core-site.xml file.

  • Arresta e riavvia i servizi Oozie, YARN, MapReduce2 e Hadoop Distributed File System.Stops and restarts the Oozie, YARN, MapReduce2, and HDFS services. L'arresto e l'avvio di questi servizi consente di usare il nuovo account di archiviazione.Stopping and starting these services allows them to use the new storage account.

Avviso

L'uso di un account di archiviazione in una località diversa rispetto al cluster HDInsight non è supportato.Using a storage account in a different location than the HDInsight cluster is not supported.

Lo scriptThe script

Percorso dello script: https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.shScript location: https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh

Requisiti:Requirements:

  • Lo script deve essere applicato ai nodi head.The script must be applied on the Head nodes.

Per usare lo scriptTo use the script

È possibile usare lo script tramite il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure 1.0.This script can be used from the Azure portal, Azure PowerShell, or the Azure CLI 1.0. Per altre informazioni, vedere Personalizzare cluster HDInsight basati su Linux tramite Azione script.For more information, see the Customize Linux-based HDInsight clusters using script action document.

Importante

Nella procedura descritta nel documento di personalizzazione usare le informazioni seguenti per applicare questo script:When using the steps provided in the customization document, use the following information to apply this script:

  • Sostituire l'URI di esempio dell'azione script con l'URI per questo script (https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh).Replace any example script action URI with the URI for this script (https://hdiconfigactions.blob.core.windows.net/linuxaddstorageaccountv01/add-storage-account-v01.sh).
  • Sostituire eventuali parametri di esempio con il nome dell'account di archiviazione di Azure e la chiave dell'account di archiviazione da aggiungere al cluster.Replace any example parameters with the Azure storage account name and key of the storage account to be added to the cluster. Se si usa il portale di Azure, questi parametri devono essere separati da uno spazio.If using the Azure portal, these parameters must be separated by a space.
  • Non è necessario contrassegnare lo script come Persistente, perché aggiorna direttamente la configurazione Ambari per il cluster.You do not need to mark this script as Persisted, as it directly updates the Ambari configuration for the cluster.

Problemi notiKnown issues

Account di archiviazione non visualizzati nel portale di Azure o negli strumentiStorage accounts not displayed in Azure portal or tools

Quando si visualizza il cluster HDInsight nel Portale di Azure, selezionando la voce Account di archiviazione in Proprietà non vengono mostrati gli account di archiviazione aggiunti tramite questa azione script.When viewing the HDInsight cluster in the Azure portal, selecting the Storage Accounts entry under Properties does not display storage accounts added through this script action. L'account di archiviazione aggiuntivo non viene inoltre visualizzato in Azure PowerShell e nell'interfaccia della riga di comando di Azure.Azure PowerShell and Azure CLI do not display the additional storage account either.

Le informazioni di archiviazione non vengono mostrate perché lo script modifica solo la configurazione di core-site.xml per il cluster.The storage information isn't displayed because the script only modifies the core-site.xml configuration for the cluster. Queste informazioni non vengono usate durante il recupero delle informazioni del cluster tramite le API di gestione di Azure.This information is not used when retrieving the cluster information using Azure management APIs.

Per visualizzare le informazioni sull'account di archiviazione aggiunte al cluster tramite lo script, usare l'API REST Ambari.To view storage account information added to the cluster using this script, use the Ambari REST API. Usare i comandi seguenti per recuperare queste informazioni per il cluster:Use the following commands to retrieve this information for your cluster:

$creds = Get-Credential -UserName "admin" -Message "Enter the cluster login credentials"
$resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/api/v1/clusters/$clusterName/configurations/service_config_versions?service_name=HDFS&service_config_version=1" `
    -Credential $creds
$respObj = ConvertFrom-Json $resp.Content
$respObj.items.configurations.properties."fs.azure.account.key.$storageAccountName.blob.core.windows.net"

Nota

Impostare $clusterName sul nome del cluster HDInsight.Set $clusterName to the name of the HDInsight cluster. Impostare $storageAccountName sul nome dell'account di archiviazione.Set $storageAccountName to the name of the storage account. Quando richiesto, immettere (admin) e password di accesso al cluster.When prompted, enter the cluster login (admin) and password.

curl -u admin:PASSWORD -G "https://CLUSTERNAME.azurehdinsight.net/api/v1/clusters/CLUSTERNAME/configurations/service_config_versions?service_name=HDFS&service_config_version=1" | jq '.items[].configurations[].properties["fs.azure.account.key.$STORAGEACCOUNTNAME.blob.core.windows.net"] | select(. != null)'

Nota

Impostare $PASSWORD sulla password dell'account (admin) di accesso al cluster.Set $PASSWORD to the cluster login (admin) account password. Impostare $CLUSTERNAME sul nome del cluster HDInsight.Set $CLUSTERNAME to the name of the HDInsight cluster. Impostare $STORAGEACCOUNTNAME sul nome dell'account di archiviazione.Set $STORAGEACCOUNTNAME to the name of the storage account.

Queste esempio usa curl (http://curl.haxx.se/) e jq (https://stedolan.github.io/jq/) per recuperare e analizzare i dati JSON.This example uses curl (http://curl.haxx.se/) and jq (https://stedolan.github.io/jq/) to retrieve and parse JSON data.

Quando si usa questo comando, sostituire CLUSTERNAME con il nome del cluster HDInsight.When using this command, replace CLUSTERNAME with the name of the HDInsight cluster. Sostituire PASSWORD con la password di accesso HTTP per il cluster.Replace PASSWORD with the HTTP login password for the cluster. Sostituire STORAGEACCOUNT con il nome dell'account di archiviazione aggiunto usando l'azione script.Replace STORAGEACCOUNT with the name of the storage account added using script action. Le informazioni restituite da questo comando sono simili al testo seguente:Information returned from this command appears similar to the following text:

"MIIB+gYJKoZIhvcNAQcDoIIB6zCCAecCAQAxggFaMIIBVgIBADA+MCoxKDAmBgNVBAMTH2RiZW5jcnlwdGlvbi5henVyZWhkaW5zaWdodC5uZXQCEA6GDZMW1oiESKFHFOOEgjcwDQYJKoZIhvcNAQEBBQAEggEATIuO8MJ45KEQAYBQld7WaRkJOWqaCLwFub9zNpscrquA2f3o0emy9Vr6vu5cD3GTt7PmaAF0pvssbKVMf/Z8yRpHmeezSco2y7e9Qd7xJKRLYtRHm80fsjiBHSW9CYkQwxHaOqdR7DBhZyhnj+DHhODsIO2FGM8MxWk4fgBRVO6CZ5eTmZ6KVR8wYbFLi8YZXb7GkUEeSn2PsjrKGiQjtpXw1RAyanCagr5vlg8CicZg1HuhCHWf/RYFWM3EBbVz+uFZPR3BqTgbvBhWYXRJaISwssvxotppe0ikevnEgaBYrflB2P+PVrwPTZ7f36HQcn4ifY1WRJQ4qRaUxdYEfzCBgwYJKoZIhvcNAQcBMBQGCCqGSIb3DQMHBAhRdscgRV3wmYBg3j/T1aEnO3wLWCRpgZa16MWqmfQPuansKHjLwbZjTpeirqUAQpZVyXdK/w4gKlK+t1heNsNo1Wwqu+Y47bSAX1k9Ud7+Ed2oETDI7724IJ213YeGxvu4Ngcf2eHW+FRK"

Questo testo è un esempio di chiave crittografata, usata per accedere all'account di archiviazione.This text is an example of an encrypted key, which is used to access the storage account.

Non è possibile accedere alla risorsa di archiviazione dopo la modifica della chiaveUnable to access storage after changing key

Se si modifica la chiave per un account di archiviazione, HDInsight non potrà più accedere all'account di archiviazione.If you change the key for a storage account, HDInsight can no longer access the storage account. HDInsight usa una copia memorizzata nella cache della chiave in core-site.xml per il cluster.HDInsight uses a cached copy of key in the core-site.xml for the cluster. Questa copia memorizzata nella cache deve essere aggiornata in modo che corrisponda alla nuova chiave.This cached copy must be updated to match the new key.

La ripetizione dell'esecuzione dell'azione script non aggiorna la chiave, perché lo script verifica se esiste già una voce per l'account di archiviazione.Running the script action again does not update the key, as the script checks to see if an entry for the storage account already exists. Se esiste già una voce, non viene apportata alcuna modifica.If an entry already exists, it does not make any changes.

Per risolvere il problema, è necessario rimuovere la voce esistente per l'account di archiviazione,To work around this problem, you must remove the existing entry for the storage account. Eseguire i seguenti passaggi per rimuovere la voce esistente:Use the following steps to remove the existing entry:

  1. In un Web browser aprire l'interfaccia utente Web di Ambari per il cluster HDInsight.In a web browser, open the Ambari Web UI for your HDInsight cluster. L'URI è https://CLUSTERNAME.azurehdinsight.net.The URI is https://CLUSTERNAME.azurehdinsight.net. Sostituire CLUSTERNAME con il nome del cluster.Replace CLUSTERNAME with the name of your cluster.

    Quando richiesto, immettere l'utente e la password di accesso HTTP per il cluster.When prompted, enter the HTTP login user and password for your cluster.

  2. Dall'elenco di servizi nella parte sinistra della pagina selezionare HDFS.From the list of services on the left of the page, select HDFS. Selezionare quindi la scheda Configs (Configurazioni) al centro della pagina.Then select the Configs tab in the center of the page.

  3. Nel campo Filter (Filtro) immettere il valore fs.azure.account.In the Filter... field, enter a value of fs.azure.account. Vengono restituite le voci per eventuali account di archiviazione aggiunti al cluster.This returns entries for any additional storage accounts that have been added to the cluster. Sono disponibili due tipi di voci, ovvero keyprovider e key.There are two types of entries; keyprovider and key. Entrambi i tipi contengono il nome dell'account di archiviazione come parte del nome della chiave.Both contain the name of the storage account as part of the key name.

    Le voci di esempio seguenti sono relative a un account di archiviazione denominato mystorage:The following are example entries for a storage account named mystorage:

     fs.azure.account.keyprovider.mystorage.blob.core.windows.net
     fs.azure.account.key.mystorage.blob.core.windows.net
    
  4. Dopo avere identificato le chiavi per l'account di archiviazione da rimuovere, usare l'icona '-' rossa a destra della voce per eliminarla.After you have identified the keys for the storage account you need to remove, use the red '-' icon to the right of the entry to delete it. Usare quindi il pulsante Salva per salvare le modifiche apportate.Then use the Save button to save your changes.

  5. Dopo il salvataggio delle modifiche, usare l'azione script per aggiungere l'account di archiviazione e il nuovo valore della chiave al cluster.After changes have been saved, use the script action to add the storage account and new key value to the cluster.

Prestazioni non ottimaliPoor performance

Se l'account di archiviazione si trova in un'area diversa rispetto al cluster HDInsight, è possibile che le prestazioni non siano ottimali.If the storage account is in a different region than the HDInsight cluster, you may experience poor performance. L'accesso ai dati in un'area diversa comporta l'invio di traffico di rete all'esterno del data center di Azure di un'area specifica e la trasmissione tramite Internet pubblico e ciò può introdurre latenza.Accessing data in a different region sends network traffic outside the regional Azure data center and across the public internet, which can introduce latency.

Avviso

L'uso di un account di archiviazione in un'area diversa rispetto al cluster HDInsight non è supportato.Using a storage account in a different region than the HDInsight cluster is not supported.

Costi aggiuntiviAdditional charges

Se l'account di archiviazione si trova in un'area diversa rispetto al cluster HDInsight, è possibile che la fatturazione di Azure includa addebiti di uscita aggiuntivi.If the storage account is in a different region than the HDInsight cluster, you may notice additional egress charges on your Azure billing. Viene applicato un addebito di uscita quando i dati escono dal data center di un'area,An egress charge is applied when data leaves a regional data center. anche se il traffico è destinato a un altro data center di Azure in un'area diversa.This charge is applied even if the traffic is destined for another Azure data center in a different region.

Avviso

L'uso di un account di archiviazione in un'area diversa rispetto al cluster HDInsight non è supportato.Using a storage account in a different region than the HDInsight cluster is not supported.

Passaggi successiviNext steps

Fino a ora sono state date le informazioni su come aggiungere altri account di archiviazione a un cluster HDInsight esistente.You have learned how to add additional storage accounts to an existing HDInsight cluster. Per altre informazioni sulle azioni script, vedere Personalizzare cluster HDInsight basati su Linux tramite Azione scriptFor more information on script actions, see Customize Linux-based HDInsight clusters using script action