Ridimensionare manualmente i cluster Azure HDInsight

HDInsight offre elasticità con opzioni per aumentare e ridurre il numero di nodi di lavoro nei cluster. Questa elasticità consente di ridurre un cluster dopo ore o nei fine settimana. Espanderlo durante il picco delle richieste aziendali.

Aumentare le prestazioni del cluster prima dell'elaborazione batch periodica in modo che il cluster disponga di risorse adeguate. Al termine dell'elaborazione e l'utilizzo diventa inattivo, ridurre il cluster HDInsight a un minor numero di nodi di lavoro.

È possibile ridimensionare manualmente un cluster usando uno dei metodi seguenti. È anche possibile usare le opzioni di scalabilità automatica per aumentare e ridurre automaticamente le prestazioni in risposta a determinate metriche.

Nota

Sono supportati solo i cluster con HDInsight versione 3.1.3 o successive. Se non si è certi della versione del cluster, è possibile controllare la pagina delle proprietà.

Utilità per ridimensionare i cluster

Microsoft offre le utilità seguenti per ridimensionare i cluster:

Utilità Descrizione
PowerShell Az Set-AzHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
PowerShell AzureRM Set-AzureRmHDInsightClusterSize -ClusterName CLUSTERNAME -TargetInstanceCount NEWSIZE
Interfaccia della riga di comando di Azure az hdinsight resize --resource-group RESOURCEGROUP --name CLUSTERNAME --workernode-count NEWSIZE
Interfaccia della riga di comando classica di Azure azure hdinsight cluster resize CLUSTERNAME NEWSIZE
Azure portal Aprire il riquadro del cluster HDInsight, selezionare Dimensioni cluster nel menu a sinistra, quindi nel riquadro Dimensioni cluster digitare il numero di nodi di lavoro e selezionare Salva.

Azure portal scale cluster option.

Usando uno di questi metodi, è possibile aumentare o ridurre il cluster HDInsight in pochi minuti.

Importante

  • L'interfaccia della riga di comando classica di Azure è deprecata e deve essere usata solo con il modello di distribuzione classica. Per tutte le altre distribuzioni, usare l'interfaccia della riga di comando di Azure.
  • Il modulo AzureRM di PowerShell è deprecato. Usare il modulo Az quando possibile.

Impatto delle operazioni di ridimensionamento

Quando si aggiungono nodi al cluster HDInsight in esecuzione (aumento delle prestazioni), i processi rimangono invariati. È possibile inviare nuovi processi in tutta sicurezza durante l'esecuzione del processo di ridimensionamento. Se l'operazione di ridimensionamento non riesce, l'errore lascia il cluster in uno stato funzionale.

Se si rimuovono nodi (riduzione), i processi in sospeso o in esecuzione hanno esito negativo al termine dell'operazione di ridimensionamento. Questo errore è dovuto a alcuni dei servizi riavviati durante il processo di ridimensionamento. Il cluster potrebbe rimanere bloccato in modalità provvisoria durante un'operazione di ridimensionamento manuale.

Impatto della modifica del numero di nodi dati per ogni tipo di cluster supportato da HDInsight:

  • Apache Hadoop

    È possibile aumentare facilmente il numero di nodi di lavoro in un cluster Hadoop in esecuzione senza alcun impatto sui processi. È inoltre possibile inviare nuovi processi mentre è in corso l'operazione. Gli errori in un'operazione di ridimensionamento vengono gestiti correttamente. Il cluster viene sempre lasciato in uno stato funzionale.

    Quando un cluster Hadoop viene ridotto con un minor numero di nodi dati, alcuni servizi vengono riavviati. A causa di questo comportamento, tutti i processi in esecuzione e in sospeso avranno esito negativo al completamento dell'operazione di ridimensionamento. È tuttavia possibile inviare nuovamente i processi una volta completata l'operazione.

  • Apache HBase

    È possibile aggiungere o rimuovere facilmente nodi al cluster HBase durante l'esecuzione. I server a livello di area vengono bilanciati automaticamente entro pochi minuti dal completamento dell'operazione di ridimensionamento. Tuttavia, è possibile bilanciare manualmente i server a livello di area. Accedere al nodo head del cluster ed eseguire i comandi seguenti:

    pushd %HBASE_HOME%\bin
    hbase shell
    balancer
    

    Per altre informazioni sull'uso della shell HBase, vedere Iniziare a usare un esempio di Apache HBase in HDInsight.

  • Kafka

    è consigliabile ribilanciare le repliche di una partizione dopo le operazioni di ridimensionamento. Per altre informazioni, vedere il documento Disponibilità elevata dei dati con Apache Kafka in HDInsight.

  • Apache Hive LLAP

    Dopo il ridimensionamento dei N nodi di lavoro, HDInsight imposta automaticamente le configurazioni seguenti e riavvia Hive.

    • Numero massimo di query simultanee: hive.server2.tez.sessions.per.default.queue = min(N, 32)
    • Numero di nodi usati da LLAP di Hive: num_llap_nodes = N
    • Numero di nodi per l'esecuzione del daemon Hive LLAP: num_llap_nodes_for_llap_daemons = N

Come ridurre in modo sicuro un cluster

Ridurre il numero di istanze di un cluster con processi in esecuzione

Per evitare l'esito negativo dei processi in esecuzione durante un'operazione di riduzione delle prestazioni, è possibile provare a eseguire tre operazioni:

  1. Attendere il completamento dei processi prima di ridurre il cluster.
  2. Terminare manualmente i processi.
  3. Inviare di nuovo i processi dopo la conclusione dell'operazione di ridimensionamento.

Per visualizzare un elenco di processi in sospeso ed in esecuzione, è possibile usare l'interfaccia utente di YARN Resource Manager, seguendo questa procedura:

  1. Selezionare il proprio cluster nel portale di Azure. Il cluster viene aperto in una nuova pagina del portale.

  2. Dalla visualizzazione principale passare a Dashboard cluster>Home di Ambari. Immettere le credenziali del cluster.

  3. Nell'interfaccia utente di Ambari selezionare YARN nell'elenco dei servizi nel menu a sinistra.

  4. Nella pagina YARN selezionare Collegamenti rapidi e passare il puntatore del mouse sul nodo head attivo, quindi selezionare Interfaccia utente di Resource Manager.

    Apache Ambari quick links Resource Manager UI.

È possibile accedere direttamente all'interfaccia utente di Resource Manager con https://<HDInsightClusterName>.azurehdinsight.net/yarnui/hn/cluster.

Verrà visualizzato un elenco dei processi, insieme allo stato corrente di ognuno. Nello screenshot è attualmente in esecuzione un processo:

Resource Manager UI applications.

Per terminare manualmente l'applicazione in esecuzione, eseguire il comando seguente dalla shell SSH:

yarn application -kill <application_id>

Ad esempio:

yarn application -kill "application_1499348398273_0003"

Blocco in modalità provvisoria

Quando si riduce il numero di istanze di un cluster, HDInsight usa le interfacce di gestione di Apache Ambari per rimuovere prima di tutto i nodi di lavoro aggiuntivi. I nodi replicano i blocchi HDFS in altri nodi di lavoro online. Successivamente, HDInsight riduce in modo sicuro il cluster. HDFS passa in modalità provvisoria durante l'operazione di ridimensionamento. HDFS dovrebbe uscire una volta completata la scalabilità. In alcuni casi, tuttavia, HDFS si blocca in modalità provvisoria durante un'operazione di ridimensionamento a causa di un blocco di file sotto la replica.

Per impostazione predefinita, HDFS è configurato con un'impostazione dfs.replication pari a 1, che controlla il numero di copie di ogni blocco di file disponibile. Ogni copia di un blocco di file viene archiviata in un nodo diverso del cluster.

Quando il numero previsto di copie a blocchi non è disponibile, HDFS entra in modalità provvisoria e Ambari genera avvisi. HDFS può entrare in modalità provvisoria per un'operazione di ridimensionamento. Il cluster potrebbe rimanere bloccato in modalità provvisoria se il numero di nodi richiesto non viene rilevato per la replica.

Errori di esempio quando la modalità sicura è attiva

org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /tmp/hive/hive/819c215c-6d87-4311-97c8-4f0b9d2adcf0. Name node is in safe mode.
org.apache.http.conn.HttpHostConnectException: Connect to active-headnode-name.servername.internal.cloudapp.net:10001 [active-headnode-name.servername. internal.cloudapp.net/1.1.1.1] failed: Connection refused

È possibile esaminare i log dei nodi dei nomi nella cartella /var/log/hadoop/hdfs/, in prossimità del momento in cui il cluster è stato ridimensionato, per visualizzare quando è stata attivata la modalità sicura. I file di log sono denominati Hadoop-hdfs-namenode-<active-headnode-name>.*.

La causa principale è che Hive dipende dai file temporanei in HDFS durante l'esecuzione di query. Quando HDFS entra in modalità provvisoria, Hive non può eseguire query perché non può scrivere in HDFS. I file temporanei in HDFS si trovano nell'unità locale montata nelle singole macchine virtuali del nodo di lavoro. I file vengono replicati tra gli altri nodi di lavoro in tre repliche, almeno.

Come impedire che HDInsight si blocchi in modalità provvisoria

Esistono diversi modi per impedire che HDInsight venga lasciato in modalità sicura:

  • Interrompere tutti i processi Hive prima della riduzione di HDInsight. In alternativa, pianificare il processo di riduzione per evitare conflitti con i processi Hive in esecuzione.
  • Pulire manualmente i file temporanei della directory tmp di Hive in Hadoop Distributed File System prima della riduzione.
  • Ridurre HDInsight solo a tre nodi di lavoro come minimo. Evitare di arrivare a un solo nodo di lavoro.
  • Eseguire il comando per disattivare la modalità sicura, se necessario.

Le sezioni seguenti descrivono queste opzioni.

Arrestare tutti i processi Hive

Interrompere tutti i processi Hive prima di eseguire la riduzione a un solo nodo di lavoro. Se il carico di lavoro è pianificato, eseguire la riduzione al termine delle operazioni di Hive.

Arrestare i processi Hive prima del ridimensionamento, consente di ridurre al minimo il numero di file scratch nella cartella tmp (se presente).

Pulire manualmente i file temporanei di Hive

Se sono rimasti file temporanei di Hive, è possibile pulire questi file manualmente prima della riduzione per evitare la modalità sicura.

  1. Controllare il percorso usato per i file temporanei Hive esaminando la hive.exec.scratchdir proprietà di configurazione. Questo parametro è impostato all'interno di /etc/hive/conf/hive-site.xml:

    <property>
        <name>hive.exec.scratchdir</name>
        <value>hdfs://mycluster/tmp/hive</value>
    </property>
    
  2. Arrestare i servizi Hive e assicurarsi che tutte le query e i processi siano stati completati.

  3. Elencare il contenuto della directory scratch trovata in precedenza per hdfs://mycluster/tmp/hive/ verificare se contiene file:

    hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    

    Ecco un esempio di output quando sono presenti file:

    sshuser@scalin:~$ hadoop fs -ls -R hdfs://mycluster/tmp/hive/hive
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c
    drwx------   - hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/_tmp_space.db
    -rw-r--r--   3 hive hdfs         27 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.info
    -rw-r--r--   3 hive hdfs          0 2017-07-06 13:40 hdfs://mycluster/tmp/hive/hive/4f3f4253-e6d0-42ac-88bc-90f0ea03602c/inuse.lck
    drwx------   - hive hdfs          0 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699
    -rw-r--r--   3 hive hdfs         26 2017-07-06 20:30 hdfs://mycluster/tmp/hive/hive/c108f1c2-453e-400f-ac3e-e3a9b0d22699/inuse.info
    
  4. Se si è certi che questi file non sono più necessari ad Hive, è possibile rimuoverli. Assicurarsi che Hive non abbia query in esecuzione cercando nella pagina dell'interfaccia utente di Yarn Resource Manager.

    Riga di comando di esempio per rimuovere file da Hadoop Distributed File System:

    hadoop fs -rm -r -skipTrash hdfs://mycluster/tmp/hive/
    

Ridimensionare HDInsight a tre o più nodi di lavoro

Se i cluster si bloccano spesso in modalità provvisoria quando si riduce a meno di tre nodi di lavoro, mantenere almeno tre nodi di lavoro.

La presenza di tre nodi di lavoro è più costosa rispetto al ridimensionamento a un solo nodo di lavoro. Tuttavia, questa azione impedisce al cluster di rimanere bloccato in modalità provvisoria.

Ridimensionare HDInsight fino a un nodo di lavoro

Anche quando il cluster viene ridotto a un nodo, il nodo di lavoro 0 rimane inattivo. Il nodo di lavoro 0 non può mai essere rimosso.

Eseguire il comando per disattivare la modalità sicura

L'opzione finale consiste nell'eseguire il comando lascia la modalità provvisoria. Se HDFS è entrato in modalità provvisoria a causa della replica del file Hive, eseguire il comando seguente per lasciare la modalità provvisoria:

hdfs dfsadmin -D 'fs.default.name=hdfs://mycluster/' -safemode leave

Ridurre il numero di istanze di un cluster Apache HBase

I server di area vengono bilanciati automaticamente entro pochi minuti dopo il completamento di un'operazione di ridimensionamento. Per bilanciare manualmente i server dell'area, completare la procedura seguente:

  1. Connettersi al cluster HDInsight tramite SSH. Per altre informazioni, vedere l'articolo su come usare SSH con HDInsight.

  2. Avviare la shell HBase:

    hbase shell
    
  3. Usare il comando seguente per bilanciare manualmente i server a livello di area:

    balancer
    

Passaggi successivi

Per informazioni specifiche sul ridimensionamento del cluster HDInsight, vedere: