Esecuzione di processi MapReduce con Hadoop in HDInsight tramite REST

Informazioni su come usare l'API REST WebHCat per l'esecuzione di processi MapReduce in un cluster Hadoop in HDInsight. Curl viene usato per illustrare come sia possibile interagire con HDInsight usando richieste HTTP non elaborate per eseguire processi MapReduce.

Nota

Se si ha già familiarità con l'uso di server Hadoop basati su Linux, ma non si ha esperienza con HDInsight, vedere il documento Informazioni utili su Hadoop basato su Linux in HDInsight.

Prerequisiti

  • Un cluster Hadoop in HDInsight
  • Curl
  • jq

Eseguire processi MapReduce mediante Curl

Nota

Quando si usa Curl o qualsiasi altra forma di comunicazione REST con WebHCat, è necessario autenticare le richieste fornendo il nome utente e la password da amministratore del cluster HDInsight. È necessario specificare il nome del cluster come parte dell'URI usato per inviare le richieste al server.

Per i comandi riportati in questa sezione, sostituire USERNAME con l'utente da autenticare nel cluster e PASSWORD con la password dell'account utente. Sostituire CLUSTERNAME con il nome del cluster.

L'API REST viene protetta tramite l' autenticazione dell'accesso di base. È necessario effettuare sempre le richieste usando il protocollo HTTPS per essere certi che le credenziali vengano inviate in modo sicuro al server.

  1. Da una riga di comando usare il comando seguente per verificare che sia possibile connettersi al cluster HDInsight:

    curl -u USERNAME:PASSWORD -G https://CLUSTERNAME.azurehdinsight.net/templeton/v1/status
    

    Dovrebbe essere visualizzato un messaggio simile al JSON seguente:

     {"status":"ok","version":"v1"}
    

    I parametri usati in questo comando sono i seguenti:

  2. Per inviare un processo MapReduce, usare il seguente comando:

    curl -u USERNAME:PASSWORD -d user.name=USERNAME -d jar=/example/jars/hadoop-mapreduce-examples.jar -d class=wordcount -d arg=/example/data/gutenberg/davinci.txt -d arg=/example/data/CurlOut https://CLUSTERNAME.azurehdinsight.net/templeton/v1/mapreduce/jar
    

    La fine dell'URI (/mapreduce/jar) indica a WebHCat che la richiesta avvia un processo MapReduce da una classe in un file con estensione jar. I parametri usati in questo comando sono i seguenti:

    • -d: -G non viene usato, quindi la richiesta userà il metodo POST per impostazione predefinita. -d specifica i valori di dati che vengono inviati con la richiesta.

      • user.name: l'utente che esegue il comando.
      • jar: il percorso del file con estensione jar che contiene la classe da eseguire.
      • class: la classe che contiene la logica MapReduce.
      • arg: gli argomenti da passare al processo MapReduce. In questo caso, il file di testo di input e la directory usata per l'output

      Questo comando dovrebbe restituire un ID processo utilizzabile per verificare lo stato del processo:

      {"id":"job_1415651640909_0026"}

  3. Per verificare lo stato del processo, usare il seguente comando:

    curl -G -u USERNAME:PASSWORD -d user.name=USERNAME https://CLUSTERNAME.azurehdinsight.net/templeton/v1/jobs/JOBID | jq .status.state
    

    Sostituire JOBID con il valore restituito nel passaggio precedente. Ad esempio, se il valore restituito è {"id":"job_1415651640909_0026"}, JOBID sarà job_1415651640909_0026.

    Se il processo è stato completato, lo stato restituito è SUCCEEDED.

    Nota

    Questa richiesta curl restituisce un documento JSON con informazioni sul processo. Jq viene usato per recuperare solo il valore di stato.

  4. Dopo che lo stato del processo risulta essere SUCCEEDED, è possibile recuperare i risultati del processo dall'archivio BLOB di Azure. Il parametro statusdir passato con la query contiene il percorso del file di output. In questo esempio la località è /example/curl. Questo indirizzo archivia l'output del processo nella risorsa di archiviazione predefinita dei cluster in /example/curl.

È possibile elencare e scaricare questi file usando l' Interfaccia della riga di comando di Azure 2.0. Per altre informazioni sull'uso dei BLOB dalla riga di comando di Azure, vedere il documento Uso dell'Interfaccia della riga di comando di Azure 2.0 con Archiviazione di Azure.

Passaggi successivi

Per informazioni generali sui processi MapReduce in HDInsight:

Per informazioni su altre modalità d'uso di Hadoop in HDInsight:

Per altre informazioni sull'interfaccia REST usata in questo articolo, vedere le informazioni di riferimento su WebHCat.