Aggiungere altri account di archiviazione a HDInsight

Informazioni su come usare le azioni script per aggiungere altri account di archiviazione di Azure in HDInsight. Nella procedura descritta in questo documento viene aggiunto un account di archiviazione a un cluster HDInsight basato su Linux esistente.

Importante

Le informazioni in questo documento illustrano come aggiungere altre risorse di archiviazione a un cluster dopo la creazione. Per informazioni sull'aggiunta di account di archiviazione durante la creazione del cluster, vedere Configurare cluster in HDInsight con Hadoop, Spark, Kafka e altro.

Funzionamento

Lo script accetta i parametri seguenti:

  • Nome dell'account di archiviazione di Azure: nome dell'account di archiviazione da aggiungere al cluster HDInsight. Dopo l'esecuzione dello script, HDInsight è in grado di leggere e scrivere i dati archiviati in questo account di archiviazione.

  • Chiave dell'account di archiviazione di Azure: chiave che concede l'accesso all'account di archiviazione.

  • -p (facoltativo): se questo parametro è specificato, la chiave non viene crittografata e viene archiviata nel file core-site.xml come testo normale.

Durante l'elaborazione, lo script esegue le azioni seguenti:

  • 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.

  • Verifica che l'account di archiviazione esista e sia accessibile tramite la chiave.

  • Crittografa la chiave mediante le credenziali del cluster,

  • Aggiunge l'account di archiviazione al file core-site.xml.

  • Arresta e riavvia i servizi Oozie, YARN, MapReduce2 e Hadoop Distributed File System. L'arresto e l'avvio di questi servizi consente di usare il nuovo account di archiviazione.

Avviso

L'uso di un account di archiviazione in una località diversa rispetto al cluster HDInsight non è supportato.

Lo script

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

Requisiti:

  • Lo script deve essere applicato ai nodi head.

Per usare lo script

È possibile usare lo script tramite il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure 1.0. Per altre informazioni, vedere Personalizzare cluster HDInsight basati su Linux tramite Azione script.

Importante

Nella procedura descritta nel documento di personalizzazione usare le informazioni seguenti per applicare questo 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).
  • 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. Se si usa il portale di Azure, questi parametri devono essere separati da uno spazio.
  • Non è necessario contrassegnare lo script come Persistente, perché aggiorna direttamente la configurazione Ambari per il cluster.

Problemi noti

Account di archiviazione non visualizzati nel portale di Azure o negli strumenti

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. L'account di archiviazione aggiuntivo non viene inoltre visualizzato in Azure PowerShell e nell'interfaccia della riga di comando di Azure.

Le informazioni di archiviazione non vengono mostrate perché lo script modifica solo la configurazione di core-site.xml per il cluster. Queste informazioni non vengono usate durante il recupero delle informazioni del cluster tramite le API di gestione di Azure.

Per visualizzare le informazioni sull'account di archiviazione aggiunte al cluster tramite lo script, usare l'API REST Ambari. Usare i comandi seguenti per recuperare queste informazioni per il 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. Impostare $storageAccountName sul nome dell'account di archiviazione. Quando richiesto, immettere (admin) e password di accesso al cluster.

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. Impostare $CLUSTERNAME sul nome del cluster HDInsight. Impostare $STORAGEACCOUNTNAME sul nome dell'account di archiviazione.

Queste esempio usa curl (http://curl.haxx.se/) e jq (https://stedolan.github.io/jq/) per recuperare e analizzare i dati JSON.

Quando si usa questo comando, sostituire CLUSTERNAME con il nome del cluster HDInsight. Sostituire PASSWORD con la password di accesso HTTP per il cluster. Sostituire STORAGEACCOUNT con il nome dell'account di archiviazione aggiunto usando l'azione script. Le informazioni restituite da questo comando sono simili al testo seguente:

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

Non è possibile accedere alla risorsa di archiviazione dopo la modifica della chiave

Se si modifica la chiave per un account di archiviazione, HDInsight non potrà più accedere all'account di archiviazione. HDInsight usa una copia memorizzata nella cache della chiave in core-site.xml per il cluster. Questa copia memorizzata nella cache deve essere aggiornata in modo che corrisponda alla nuova chiave.

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. Se esiste già una voce, non viene apportata alcuna modifica.

Per risolvere il problema, è necessario rimuovere la voce esistente per l'account di archiviazione, Eseguire i seguenti passaggi per rimuovere la voce esistente:

  1. In un Web browser aprire l'interfaccia utente Web di Ambari per il cluster HDInsight. L'URI è https://CLUSTERNAME.azurehdinsight.net. Sostituire CLUSTERNAME con il nome del cluster.

    Quando richiesto, immettere l'utente e la password di accesso HTTP per il cluster.

  2. Dall'elenco di servizi nella parte sinistra della pagina selezionare HDFS. Selezionare quindi la scheda Configs (Configurazioni) al centro della pagina.

  3. Nel campo Filter (Filtro) immettere il valore fs.azure.account. Vengono restituite le voci per eventuali account di archiviazione aggiunti al cluster. Sono disponibili due tipi di voci, ovvero keyprovider e key. Entrambi i tipi contengono il nome dell'account di archiviazione come parte del nome della chiave.

    Le voci di esempio seguenti sono relative a un account di archiviazione denominato 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. Usare quindi il pulsante Salva per salvare le modifiche apportate.

  5. Dopo il salvataggio delle modifiche, usare l'azione script per aggiungere l'account di archiviazione e il nuovo valore della chiave al cluster.

Prestazioni non ottimali

Se l'account di archiviazione si trova in un'area diversa rispetto al cluster HDInsight, è possibile che le prestazioni non siano ottimali. 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.

Avviso

L'uso di un account di archiviazione in un'area diversa rispetto al cluster HDInsight non è supportato.

Costi aggiuntivi

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. Viene applicato un addebito di uscita quando i dati escono dal data center di un'area, anche se il traffico è destinato a un altro data center di Azure in un'area diversa.

Avviso

L'uso di un account di archiviazione in un'area diversa rispetto al cluster HDInsight non è supportato.

Passaggi successivi

Fino a ora sono state date le informazioni su come aggiungere altri account di archiviazione a un cluster HDInsight esistente. Per altre informazioni sulle azioni script, vedere Personalizzare cluster HDInsight basati su Linux tramite Azione script