Usare Azure Toolkit for Eclipse per creare applicazioni Apache Spark per un cluster HDInsight

Usare gli strumenti HDInsight in Azure Toolkit for Eclipse per sviluppare applicazioni Apache Spark scritte in Scala e inoltrarle a un cluster Azure HDInsight Spark direttamente dall'IDE Eclipse. È possibile usare gli strumenti di HDInsight in diversi modi:

  • Per sviluppare e inviare un'applicazione Spark in Scala in un cluster HDInsight Spark.
  • Per accedere alle risorse cluster HDInsight Spark di Azure.
  • Per sviluppare ed eseguire un'applicazione Spark in Scala localmente.

Prerequisiti

Installare i plug-in necessari

Installare Azure Toolkit for Eclipse

Le istruzioni di installazione sono disponibili in Installazione di Azure Toolkit for Eclipse.

Installare il plug-in di Scala

Quando si apre Eclipse, Strumenti di HDInsight rileva automaticamente se è installato il plug-in Scala. Selezionare OK per continuare, quindi seguire le istruzioni per installare il plug-in del Marketplace di Eclipse. Riavviare l'IDE dopo il completamento dell'installazione.

Installazione automatica del plug-in di Scala

Confermare i plug-in

  1. Passare a Help>Eclipse Marketplace....

  2. Selezionare la scheda Installati.

  3. Dovrebbe essere visualizzato almeno:

    • Versione di Azure Toolkit per Eclipse<>.
    • Versione> dell'IDE <scala.

Accedere alla sottoscrizione di Azure.

  1. Avviare l'IDE eclipse.

  2. Passare alla finestra>Mostra visualizzazione>altro...>Accedere....

  3. Nella finestra di dialogo Mostra visualizzazione passare ad Azure>Explorer e quindi selezionare Apri.

    Visualizzazione di Apache Spark Eclipse

  4. In Esplora risorse di Azure fare clic con il pulsante destro del mouse sul nodo azure e scegliere Accedi.

  5. Nella finestra di dialogo Accesso di Azure scegliere il metodo di autenticazione, selezionare Accedi e completare il processo di accesso.

    Apache Spark Eclipse Azure Sign

  6. Dopo l'accesso, la finestra di dialogo Sottoscrizioni elenca tutte le sottoscrizioni di Azure associate alle credenziali. Premere Seleziona per chiudere la finestra di dialogo.

    Finestra di dialogo Selezionare le sottoscrizioni

  7. In Azure Explorer passare ad Azure> HDInsight per visualizzare i clusterHDInsight Spark nella sottoscrizione.

    Cluster HDInsight Spark in Azure Explorer3

  8. È possibile espandere ancora un nodo del nome cluster per vedere le risorse, ad esempio gli account di archiviazione, associate al cluster.

    Espansione di un nome cluster per vedere le risorse

È possibile collegare un normale cluster usando lo username gestito di Ambari. Analogamente, è possibile collegare un cluster HDInsight aggiunto al dominio tramite il dominio e il nome utente, come user1@contoso.com.

  1. In Esplora risorse di Azure fare clic con il pulsante destro del mouse su HDInsight e scegliere Collega un cluster.

    Menu del cluster di collegamento di Azure Explorer

  2. Immettere Nome cluster, Nome utente e Password, quindi selezionare OK. Facoltativamente, immettere l'account di archiviazione e la chiave di archiviazione e quindi selezionare il contenitore di archiviazione per Storage Explorer in modo da usare la visualizzazione struttura ad albero a sinistra.

    Finestra di dialogo Collegamento nuovo cluster HDInsight

    Nota

    Vengono usati la chiave di archiviazione, il nome utente e la password collegati se il cluster ha eseguito l'accesso alla sottoscrizione di Azure e ha collegato un cluster. Account di archiviazione in Azure Explorer

    Per l'utente solo della tastiera, quando lo stato attivo corrente è in Chiave di archiviazione, è necessario usare CTRL+TAB per concentrarsi sul campo successivo nella finestra di dialogo.

  3. È possibile visualizzare il cluster collegato in HDInsight. È ora possibile inviare un'applicazione al cluster collegato.

    Cluster collegato hdi di Azure Explorer

  4. È inoltre possibile scollegare un cluster in Azure Explorer (Esplora Azure).

    Scollegamento del cluster in Azure Explorer

Configurare un progetto Spark in Scala per un cluster HDInsight Spark

  1. Nell'area di lavoro IDE eclipse selezionare File>Nuovo>progetto....

  2. Nella procedura guidata Nuovo progetto selezionare HDInsight Project>Spark in HDInsight (Scala). Fare quindi clic su Avanti.

    Selezione del progetto Spark on HDInsight (Scala)

  3. Nella finestra di dialogo New HDInsight Scala Project (Nuovo progetto HDInsight Scala) specificare i valori seguenti e selezionare su Next (Avanti):

    • Immettere un nome per il progetto.
    • Nell'area JRE verificare che l'opzione Use an execution environment JRE (Usa un ambiente di esecuzione JRE) sia impostata su JavaSE-1.7 o versioni successive.
    • Nell'area Spark Library (Libreria Spark) è possibile scegliere l'opzione Use Maven to configure Spark SDK (Usa Maven per configurare l'SDK di Spark). Lo strumento integra la versione corretta dell'SDK di Spark e Scala. È anche possibile scegliere Aggiungi SPARK SDK manualmente , scaricare e aggiungere Spark SDK manualmente.

    Finestra di dialogo New HDInsight Scala Project (Nuovo progetto HDInsight Scala)

  4. Nella finestra di dialogo successiva esaminare i dettagli e quindi selezionare Fine.

Creare un'applicazione Scala per un cluster HDInsight Spark

  1. In Esplora pacchetti espandere il progetto creato in precedenza. Fare clic con il pulsante destro del mouse su src, scegliere Nuovo>altro....

  2. Nella finestra di dialogo Seleziona procedura guidata selezionareScala Wizards>Scala Object. Fare quindi clic su Avanti.

    Selezionare una procedura guidata Crea un oggetto Scala

  3. Nella finestra di dialogo Create New File (Crea nuovo file) immettere un nome per l'oggetto e quindi selezionare Finish (Fine). Verrà aperto un editor di testo.

    Creazione guidata nuovo file

  4. Nell'editor di testo sostituire il contenuto corrente con il codice seguente:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    object MyClusterApp{
        def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("MyClusterApp")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows that have only one digit in the seventh column in the CSV
        val rdd1 =  rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasbs:///HVACOut")
        }
    }
    
  5. Eseguire l'applicazione in un cluster HDInsight Spark:

    a. In Package Explorer (Esplora pacchetti) fare clic con il pulsante destro del mouse sul nome del progetto e quindi scegliere Submit Spark Application to HDInsight (Invia applicazione Spark a HDInsight).

    b. Nella finestra di dialogo Invio Spark specificare i valori seguenti e quindi selezionare Invia:

    • Per Cluster Name(Nome cluster) selezionare il cluster HDInsight Spark in cui eseguire l'applicazione.

    • Selezionare un elemento nel progetto Eclipse oppure nel disco rigido. Il valore predefinito dipende dall'elemento su cui si fa clic con il pulsante destro del mouse da Package Explorer (Esplora pacchetti).

    • Nell'elenco a discesa Main class name (Nome classe principale) l'invio guidato mostra tutti i nomi di oggetto del progetto. Selezionare o inserire quello che si vuole eseguire. Se si seleziona un elemento da un disco rigido, è necessario immettere manualmente il nome della classe principale.

    • Poiché il codice dell'applicazione in questo esempio non richiede argomenti della riga di comando o file di riferimento, è possibile lasciare vuote le caselle di testo rimanenti.

      Finestra di dialogo Invio di Apache Spark

  6. Nella scheda Spark Submission (Invio Spark) verrà visualizzato lo stato di avanzamento. È possibile arrestare l'applicazione selezionando il pulsante rosso nella finestra Spark Submission (Invio Spark). È anche possibile visualizzare i log per questa esecuzione dell'applicazione specifica selezionando l'icona del mondo, indicata dalla casella blu nell'immagine.

    Finestra per l'invio di Apache Spark

Accedere e gestire i cluster HDInsight Spark con gli strumenti HDInsight in Azure Toolkit for Eclipse

È possibile eseguire varie operazioni con gli strumenti HDInsight, tra cui accedere all'output dei processi.

Accedere alla visualizzazione del processo

  1. In Esplora azure espandere HDInsight, quindi il nome del cluster Spark e quindi selezionare Processi.

    Nodo di visualizzazione processi di Azure Explorer Eclipse

  2. Selezionare il nodo Processi . Se la versione di Java è precedente alla versione 1.8, gli strumenti di HDInsight inviano un promemoria automatico per l'installazione del plug-in E(fx)clipse. Selezionare OK per continuare, quindi seguire la procedura guidata per installare il plug-in dal Marketplace di Eclipse e riavviare Eclipse.

    Installare plug-in mancante E(fx)clipe

  3. Aprire la visualizzazione del processo dal nodo Processi. Nel riquadro destro la scheda Spark Job View (Visualizzazione processi Spark) visualizza tutte le applicazioni eseguite nel cluster. Selezionare il nome dell'applicazione per cui si vogliono visualizzare altri dettagli.

    Dettagli sui log dei processi di visualizzazione di Apache Eclipse

    È quindi possibile intraprendere una delle seguenti operazioni:

    • Passare il mouse sul grafico del processo. Mostra le informazioni di base sul processo in esecuzione. Selezionare il grafico del processo: vengono visualizzate le fasi e le informazioni generate da ogni processo.

      Informazioni sulla fase del grafico dei processi di Apache Spark

    • Selezionare la scheda Log per visualizzare i log di uso più frequente, ad esempio Driver Stderr, Driver Stdout e Directory Info.

      Informazioni sul log dei processi di Apache Spark Eclipse

    • Aprire l'interfaccia utente della cronologia di Spark e l'interfaccia utente di Apache Hadoop YARN, a livello di applicazione, selezionando i rispettivi collegamenti ipertestuali nella parte superiore della finestra.

Accedere al contenitore di archiviazione per il cluster

  1. In Azure Explorer espandere il nodo radice HDInsight per visualizzare un elenco di cluster HDInsight Spark disponibili.

  2. Espandere il nome del cluster per visualizzare l'account di archiviazione e il contenitore di archiviazione predefinito per il cluster.

    Account di archiviazione e contenitore di archiviazione predefinito

  3. Fare clic sul nome del contenitore di archiviazione associato al cluster. Nel riquadro destro fare doppio clic sulla cartella HVACOut. Aprire uno dei file part- per visualizzare l'output dell'applicazione.

Accedere al Server cronologia Spark

  1. In Azure Explorer fare clic con il pulsante destro del mouse sul nome del cluster Spark e quindi scegliere Open Spark History UI (Apri UI cronologia Spark). Quando richiesto, immettere le credenziali dell'amministratore per il cluster. Queste sono state specificate durante il provisioning del cluster.

  2. Nel dashboard del Server cronologia Spark è possibile usare il nome dell'applicazione per cercare l'applicazione di cui è appena stata completata l'esecuzione. Nel codice precedente impostare il nome dell'applicazione usando val conf = new SparkConf().setAppName("MyClusterApp"). Il nome dell'applicazione Spark era MyClusterApp.

Avviare il portale di Apache Ambari

  1. In Azure Explorer fare clic con il pulsante destro del mouse sul nome del cluster Spark e quindi scegliere Open Cluster Management Portal (Ambari) (Apri portale di gestione cluster - Ambari).

  2. Quando richiesto, immettere le credenziali dell'amministratore per il cluster. Queste sono state specificate durante il provisioning del cluster.

Gestire le sottoscrizioni di Azure

Per impostazione predefinita, gli strumenti di HDInsight in Azure Toolkit for Eclipse elencano i cluster Spark di tutte le sottoscrizioni di Azure. Se necessario, è possibile specificare le sottoscrizioni per cui si vuole accedere al cluster.

  1. In Azure Explorer fare clic con il pulsante destro del mouse sul nodo radice Azure e quindi scegliere Gestisci sottoscrizioni.

  2. Nella finestra di dialogo deselezionare le caselle di controllo della sottoscrizione alla quale non si vuole accedere e quindi fare clic su Chiudi. È anche possibile selezionare Esci per uscire dalla sessione di sottoscrizione di Azure.

Eseguire un'applicazione Spark in Scala localmente

È possibile usare gli strumenti HDInsight in Azure Toolkit for Eclipse per eseguire applicazioni Spark in Scala localmente nella workstation. Tali applicazioni in genere non richiedono l'accesso a risorse del cluster quali il contenitore di archiviazione e possono essere eseguite e testate localmente.

Prerequisito

Durante l'esecuzione dell'applicazione Spark Scala locale in un computer Windows, è possibile ottenere un'eccezione come illustrato in SPARK-2356. che si verifica a causa di un file WinUtils.exe mancante in Windows.

Per risolvere questo errore, è necessario Winutils.exe in una posizione come C:\WinUtils\bin e quindi aggiungere la variabile di ambiente HADOOP_HOME e impostare il valore della variabile su C\WinUtils.

Eseguire un'applicazione Spark in Scala locale

  1. Avviare Eclipse e creare un progetto. Nella finestra di dialogo New Project (Nuovo progetto) selezionare le opzioni seguenti e quindi fare clic su Next (Avanti).

  2. Nella procedura guidata Nuovo progetto selezionare HDInsight Project>Spark in HDInsight Local Run Sample (Scala). Fare quindi clic su Avanti.

    Nuovo progetto seleziona una finestra di dialogo guidata

  3. Per specificare i dettagli del progetto, seguire i passaggi da 3 a 6 illustrati nella sezione precedente Configurare un progetto Spark in Scala per un cluster HDInsight Spark.

  4. Il modello aggiunge un codice di esempio (LogQuery) sotto la cartella src eseguibile in locale nel computer in uso.

    Posizione dell'applicazione scala locale LogQuery

  5. Fare clic con il pulsante destro del mouse su LogQuery.scala e scegliere Esegui come>1 Applicazione Scala. Un output come questo viene mostrato nella scheda Console:

    Risultato dell'esecuzione locale dell'applicazione Spark

Ruolo di sola lettura

Quando gli utenti inviano processi a un cluster con autorizzazione di sola lettura, le credenziali di Ambari sono obbligatorie.

  1. Accedere con l'account di un ruolo di sola lettura.

  2. Da Azure Explorer espandere HDInsight per visualizzare i cluster HDInsight Spark disponibili nella sottoscrizione. I cluster contrassegnati da "Role:Reader" (Ruolo:Lettore) hanno autorizzazioni di ruolo di sola lettura.

    Cluster HDInsight Spark nel lettore di ruoli di Azure Explorer

  3. Fare clic con il pulsante destro del mouse sul cluster con autorizzazione di ruolo di sola lettura. Selezionare Link this cluster (Collega questo cluster) dal menu di scelta rapida per collegare il cluster. Immettere il nome utente e la password di Ambari.

    Collegamento a Cluster Spark HDInsight in Esplora azure

  4. Se il cluster è stato collegato correttamente, HDInsight viene aggiornato. La fase del cluster diventerà Linked (Collegato).

    Cluster HDInsight Spark in Azure Explorer collegato

  1. Fare clic sul nodo Jobs (Processi). Verrà visualizzata la finestra Cluster Job Access Denied (Accesso negato al cluster Jobs).

  2. Fare clic su Link this cluster (Collega questo cluster) per collegare il cluster.

    Cluster HDInsight Spark in Azure Explorer9

  1. Creare un progetto HDInsight.

  2. Fare clic con il pulsante destro del mouse sul pacchetto. Selezionare quindi Invia applicazione Spark a HDInsight.

    Inviare cluster HDInsight Spark in Azure Explorer

  3. Selezionare un cluster, che dispone dell'autorizzazione per il ruolo di sola lettura per Nome cluster. Viene visualizzato il messaggio di avviso. È possibile fare clic su Collega questo cluster per collegare il cluster.

    Collegamento dei cluster HDInsight Spark in Esplora azure

Visualizzare gli account di archiviazione

  • Per i cluster con autorizzazione di ruolo di sola lettura fare clic sul nodo Storage Accounts (Account di archiviazione). Verrà visualizzata la finestra Storage Access Denied (Accesso negato alla risorsa di archiviazione).

    Cluster HDInsight Spark nell'archiviazione di Azure Explorer

    Cluster HDInsight Spark in Azure Explorer negato

  • Per i cluster collegati fare clic sul nodo Storage Accounts (Account di archiviazione). Verrà visualizzata la finestra Storage Access Denied (Accesso negato alla risorsa di archiviazione).

    Cluster HDInsight Spark in Azure Explorer negato2

Problemi noti

Quando si usa Link A Cluster, è consigliabile fornire credenziali di archiviazione.

collegare il cluster con le credenziali di archiviazione eclipses

Esistono due modalità per inviare i processi. Se vengono fornite le credenziali di archiviazione, per inviare il processo verrà usata la modalità batch. In caso contrario, verrà usata la modalità interattiva. Se il cluster è occupato, è possibile che venga visualizzato l'errore riportato di seguito.

Errore Eclipse in caso di cluster occupato

Eclipse ottiene l'errore quando yarn occupato dal cluster

Vedi anche

Scenari

Creazione ed esecuzione di applicazioni

Strumenti ed estensioni

Gestione delle risorse