Gestire cluster Hadoop in HDInsight tramite Azure PowerShell

Azure PowerShell può essere usato per controllare e automatizzare la distribuzione e la gestione dei carichi di lavoro in Azure. Questo articolo contiene informazioni su come gestire i cluster Hadoop in HDInsight di Azure tramite Azure PowerShell. Per l'elenco dei cmdlet PowerShell per HDInsight, vedere Documentazione di riferimento di cmdlet di HDInsight.

Prerequisiti

Per eseguire le procedure descritte nell'articolo sono necessari gli elementi seguenti:

Installare Azure PowerShell

Importante

Il supporto di Azure PowerShell per la gestione delle risorse HDInsight tramite Azure Service Manager è deprecato ed è stato rimosso dal 1° gennaio 2017. La procedura descritta in questo documento usa i nuovi cmdlet HDInsight, compatibili con Azure Resource Manager.

Per installare la versione più recente, seguire la procedura descritta in Come installare e configurare Azure PowerShell . Se sono presenti script che devono essere modificati per l'uso dei nuovi cmdlet compatibili con Azure Resource Manager, per altre informazioni vedere Migrazione a strumenti di sviluppo basati su Azure Resource Manager per i cluster HDInsight .

Se è installato Azure PowerShell versione 0.9x, è necessario disinstallarlo prima di installare una versione più recente.

Per controllare la versione di PowerShell installata:

Get-Module *azure*

Per disinstallare la versione precedente, eseguire Programmi e Funzionalità nel Pannello di controllo.

Creare i cluster

Vedere Creare cluster basati su Linux in HDInsight tramite Azure PowerShell

Elencare cluster

Usare il comando seguente per visualizzare l'elenco di tutti i cluster nella sottoscrizione corrente:

Get-AzureRmHDInsightCluster

Mostrare cluster

Usare il comando seguente per visualizzare i dettagli di un cluster specifico nella sottoscrizione corrente:

Get-AzureRmHDInsightCluster -ClusterName <Cluster Name>

Eliminare cluster

Utilizzare il comando seguente per eliminare un cluster:

Remove-AzureRmHDInsightCluster -ClusterName <Cluster Name>

È inoltre possibile eliminare un cluster rimuovendo il gruppo di risorse che lo contiene. L'eliminazione di un gruppo di risorse eliminerà tutte le risorse nel gruppo, compreso l’account di archiviazione predefinito.

Remove-AzureRmResourceGroup -Name <Resource Group Name>

Ridimensionare i cluster

La funzionalità di scalabilità del cluster consente di modificare il numero di nodi del ruolo di lavoro usati da un cluster in esecuzione in Azure HDInsight senza dover ricreare il cluster.

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à. Vedere Elencare e visualizzare i cluster.

Questa sezione descrive l'impatto della modifica del numero di nodi dati per ogni tipo di cluster supportato da HDInsight:

  • Hadoop

    È possibile aumentare facilmente il numero di nodi del ruolo di lavoro in un cluster Hadoop in esecuzione senza conseguenze per eventuali processi in sospeso o in esecuzione. È inoltre possibile inviare nuovi processi mentre è in corso l'operazione. Gli errori in un'operazione di scalabilità vengono gestiti in modo che il cluster rimanga sempre in uno stato funzionale.

    Quando un cluster Hadoop viene ridimensionato riducendo il numero di nodi dati, alcuni dei servizi del cluster vengono riavviati. A causa del riavvio dei servizi, tutti i processi in esecuzione e in attesa daranno esito negativo dopo il completamento dell'operazione di ridimensionamento. È tuttavia possibile inviare nuovamente i processi una volta completata l'operazione.

  • HBase

    È possibile aggiungere o rimuovere facilmente nodi nel cluster HBase mentre è in esecuzione. I server a livello di area vengono bilanciati automaticamente entro pochi minuti dal completamento dell'operazione di ridimensionamento. È tuttavia possibile anche bilanciare manualmente i server a livello di area accedendo al nodo head del cluster ed eseguendo i comandi seguenti da una finestra del prompt dei comandi:

    >pushd %HBASE_HOME%\bin
    >hbase shell
    >balancer
    
  • Storm

    È possibile aggiungere o rimuovere facilmente nodi dati dal cluster Storm mentre è in esecuzione. Tuttavia, dopo il completamento dell'operazione di ridimensionamento, è necessario bilanciare nuovamente la topologia.

    A tale scopo, è possibile scegliere tra due opzioni:

    • Interfaccia utente Web di Storm
    • Interfaccia della riga di comando (CLI)

      Per altri dettagli, vedere la documentazione di Apache Storm.

      L'interfaccia utente Web di Storm è disponibile nel cluster HDInsight:

      Ribilanciamento scala di HDInsight Storm

      Di seguito viene fornito un esempio d'uso del comando CLI per ribilanciare la topologia di Storm:

      ## Reconfigure the topology "mytopology" to use 5 worker processes,
      ## the spout "blue-spout" to use 3 executors, and
      ## the bolt "yellow-bolt" to use 10 executors
      $ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
      

Per modificare le dimensioni del cluster Hadoop mediante Azure PowerShell, eseguire il comando seguente da un computer client:

Set-AzureRmHDInsightClusterSize -ClusterName <Cluster Name> -TargetInstanceCount <NewSize>

Concedere/Revocare l'accesso

Per i cluster HDInsight sono disponibili i servizi Web HTTP seguenti (tutti con endpoint RESTful):

  • ODBC
  • JDBC
  • Ambari
  • Oozie
  • Templeton

Per impostazione predefinita, a questi servizi è concesso l'accesso. L'accesso può essere revocato/concesso, Per revocare:

Revoke-AzureRmHDInsightHttpServicesAccess -ClusterName <Cluster Name>

Per concedere:

$clusterName = "<HDInsight Cluster Name>"

# Credential option 1
$hadoopUserName = "admin"
$hadoopUserPassword = "<Enter the Password>"
$hadoopUserPW = ConvertTo-SecureString -String $hadoopUserPassword -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($hadoopUserName,$hadoopUserPW)

# Credential option 2
#$credential = Get-Credential -Message "Enter the HTTP username and password:" -UserName "admin"

Grant-AzureRmHDInsightHttpServicesAccess -ClusterName $clusterName -HttpCredential $credential

Nota

La concessione/revoca dell'accesso implica la reimpostazione del nome utente e della password del cluster.

La concessione e la revoca dell'accesso possono essere eseguite anche tramite il portale. Vedere l'articolo su come amministrare HDInsight con il portale di Azure.

Aggiornare le credenziali utente HTTP

È la stessa procedura di Concessione/revoca dell'accesso HTTP. Se al cluster è stato concesso l'accesso HTTP, è necessario innanzitutto revocarlo. E quindi concedere l'accesso con le nuove credenziali utente HTTP.

Trovare l'account di archiviazione predefinito

Lo script di PowerShell seguente dimostra come ottenere il nome dell'account di archiviazione predefinito e le informazioni correlate:

#Login-AzureRmAccount
$clusterName = "<HDInsight Cluster Name>"

$clusterInfo = Get-AzureRmHDInsightCluster -ClusterName $clusterName
$storageInfo = $clusterInfo.DefaultStorageAccount.split('.')
$defaultStoreageType = $storageInfo[1]
$defaultStorageName = $storageInfo[0]

echo "Default Storage account name: $defaultStorageName"
echo "Default Storage account type: $defaultStoreageType"

if ($defaultStoreageType -eq "blob")
{
    $defaultBlobContainerName = $cluster.DefaultStorageContainer
    $defaultStorageAccountKey = (Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $defaultStorageAccountName)[0].Value
    $defaultStorageAccountContext = New-AzureStorageContext -StorageAccountName $defaultStorageAccountName -StorageAccountKey $defaultStorageAccountKey

    echo "Default Blob container name: $defaultBlobContainerName"
    echo "Default Storage account key: $defaultStorageAccountKey"
}

Trovare il gruppo di risorse

Nella modalità Resource Manager ogni cluster HDInsight appartiene a un gruppo di risorse di Azure. Trovare il gruppo di risorse:

$clusterName = "<HDInsight Cluster Name>"

$cluster = Get-AzureRmHDInsightCluster -ClusterName $clusterName
$resourceGroupName = $cluster.ResourceGroup

Inviare i processi

Inviare processi MapReduce

Vedere esempi di MapReduce di Hadoop in HDInsight basato su Windows.

Inviare processi Hive

Vedere Esecuzione di query Hive tramite PowerShell

Inviare processi Pig

Vedere Eseguire processi Pig mediante PowerShell.

Inviare processi Sqoop

Vedere Usare Sqoop con Hadoop in HDInsight.

Inviare processi Oozie

Vedere Usare Oozie con Hadoop per definire ed eseguire un flusso di lavoro in HDInsight.

Caricare dati nell'archivio BLOB di Azure

VedereCaricare dati in HDInsight.

Vedere anche