Esecuzione di processi Sqoop con Hadoop in HDInsight mediante Curl

Informazioni su come usare Curl per l'esecuzione di processi Sqoop in un cluster Hadoop in HDInsight.

Curl viene usato per illustrare come è possibile interagire con HDInsight tramite richieste HTTP non elaborate per eseguire, monitorare e recuperare i risultati di processi Sqoop. Ciò avviene mediante l'API REST WebHCat, nota in precedenza come Templeton, fornita dal cluster HDInsight.

Nota

Se si ha già familiarità con l'uso di server Hadoop basati su Linux ma non si è esperti di HDInsight, vedere Informazioni sull'uso di HDInsight in Linux.

Prerequisiti

Per seguire la procedura descritta in questo articolo, è necessario quanto segue:

  • Un cluster Hadoop in HDInsight (basato su Linux o su Windows)
  • Curl
  • jq

Inviare processi Sqoop mediante Azure 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 dell'amministratore cluster HDInsight. È inoltre necessario specificare il nome del cluster come parte dell'URI (Uniform Resource Identifier) 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 di base. È necessario effettuare sempre le richieste usando il protocollo HTTPS (Secure HTTP) 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 seguente:

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

    I parametri usati in questo comando sono i seguenti:

    • -u : il nome utente e la password usati per autenticare la richiesta.
    • -G : indica che si tratta di una richiesta GET.

      L'inizio dell'URL, https://CLUSTERNAME.azurehdinsight.net/templeton/v1, sarà uguale per tutte le richieste. Il percorso, /status, indica che la richiesta deve restituire uno stato di WebHCat (noto anche come Templeton) per il server.

  2. Usare quanto segue per inviare un processo sqoop:

     curl -u USERNAME:PASSWORD -d user.name=USERNAME -d command="export --connect jdbc:sqlserver://SQLDATABASESERVERNAME.database.windows.net;user=USERNAME@SQLDATABASESERVERNAME;password=PASSWORD;database=SQLDATABASENAME --table log4jlogs --export-dir /tutorials/usesqoop/data --input-fields-terminated-by \0x20 -m 1" -d statusdir="wasb:///example/curl" https://CLUSTERNAME.azurehdinsight.net/templeton/v1/sqoop
    

    I parametri usati in questo comando sono i seguenti:

    • -d: poiché -G non viene usato, 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.

      • command : il comando Sqoop da eseguire.

      • statusdir : la directory in cui verrà scritto lo stato del processo.

      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. Sostituire JOBID con il valore restituito nel passaggio precedente. Se ad esempio il valore restituito è {"id":"job_1415651640909_0026"}, JOBID sarà job_1415651640909_0026.

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

    Se il processo è stato completato, lo stato sarà SUCCEEDED.

    Nota

    Questa richiesta curl restituisce un documento JSON (JavaScript Object Notation) con informazioni sul processo. jq viene usato per recuperare 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 caso wasb:///example/curl. Questo indirizzo consente di archiviare l'output del processo nella directory example/curl del contenitore di archiviazione predefinito usato dal cluster HDInsight.

    È possibile elencare e scaricare questi file usando l' Interfaccia della riga di comando di Azure. Ad esempio, per elencare i file contenuti in example/curl, usare il seguente comando:

     azure storage blob list <container-name> example/curl
    

    Per scaricare un file, usare il comando seguente:

     azure storage blob download <container-name> <blob-name> <destination-file>
    
    Nota

    È necessario specificare il nome dell'account di archiviazione contenente il BLOB usando i parametri -a e -k oppure impostare le variabili di ambiente AZURE_STORAGE_ACCOUNT e AZURE_STORAGE_ACCESS_KEY. Vedere <a href="hdinsight-upload-data.md" target="_blank" per altre informazioni.

Limitazioni

  • Esportazione di massa: con HDInsight basato su Linux, attualmente il connettore Sqoop, usato per esportare dati in Microsoft SQL Server o nel database SQL di Azure, non supporta inserimenti di massa.
  • Invio in batch: con HDInsight basato su Linux, quando si usa il comando -batch durante gli inserimenti, Sqoop esegue più inserimenti invece di suddividere in batch le operazioni di inserimento.

Riepilogo

Come illustrato in questo documento, è possibile usare una richiesta HTTP non elaborata per eseguire, monitorare e visualizzare i risultati dei processi Sqoop nel cluster HDInsight.

Per altre informazioni sull'interfaccia REST usata in questo articolo, vedere la guida relativa all'API REST Sqoop.

Passaggi successivi

Per informazioni generali su Hive con HDInsight:

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