Installare Giraph nei cluster HDInsight Hadoop e usarlo per elaborare grafici su vasta scala

Informazioni su come installare Apache Giraph in un cluster HDInsight. La funzione di azione script di HDInsight consente di personalizzare il cluster eseguendo uno script bash. È possibile usare gli script per personalizzare i cluster sia durante che dopo la creazione del cluster.

Importante

I passaggi descritti in questo documento richiedono un cluster HDInsight che usa Linux. Linux è l'unico sistema operativo usato in HDInsight versione 3.4 o successiva. Per altre informazioni, vedere la sezione relativa al ritiro di HDInsight in Windows.

Che cos'è Giraph?

Apache Giraph consente di elaborare grafici con Hadoop e può essere usato con Azure HDInsight. È possibile usare i grafici per modellare le relazioni tra gli oggetti, ad esempio le connessioni tra router in una rete di grandi dimensioni, come Internet, oppure le relazioni tra persone iscritte a social network. Grazie all'elaborazione del grafico è possibile ottenere informazioni dettagliate sulle relazioni tra gli oggetti in un grafico e in particolare di:

  • Identificare possibili amici sulla base delle relazioni correnti.

  • Identificare la route più breve tra due computer di una rete.

  • Calcolare la posizione in classifica di pagine Web.

Avviso

I componenti forniti con il cluster HDInsight sono supportati in modo completo e il supporto tecnico Microsoft contribuirà a isolare e risolvere i problemi correlati a questi componenti.

I componenti personalizzati, ad esempio Giraph, ricevono supporto commercialmente ragionevole per semplificare la risoluzione dei problemi. È possibile che il supporto tecnico Microsoft sia in grado di risolvere il problema. In caso contrario, è necessario consultare le community open source, da cui è possibile ottenere supporto approfondito per la tecnologia specifica. È ad esempio possibile ricorrere a molti siti di community, come il forum MSDN per HDInsight o http://stackoverflow.com. Anche per i progetti Apache sono disponibili siti specifici in http://apache.org, ad esempio Hadoop.

Funzionalità dello script

Lo script esegue le azioni seguenti:

  • Installa Giraph in /usr/hdp/current/giraph

  • Copia il file giraph-examples.jar nell'archivio BLOB di Azure (WASB) predefinito del cluster: /example/jars/giraph-examples.jar

Installare Giraph mediante azioni script

Uno script di esempio per l'installazione di Giraph in un cluster HDInsight è disponibile all'indirizzo seguente:

https://hdiconfigactions.blob.core.windows.net/linuxgiraphconfigactionv01/giraph-installer-v01.sh

Questa sezione fornisce istruzioni su come usare lo script di esempio quando si crea il cluster usando il portale di Azure.

Nota

Un'azione script può essere applicata usando uno dei metodi seguenti:

  • Azure PowerShell
  • Interfaccia della riga di comando di Azure
  • HDInsight .NET SDK
  • Modelli di Gestione risorse di Azure

È anche possibile applicare azioni script a cluster già in esecuzione. Per altre informazioni, vedere Personalizzare cluster HDInsight basati su Linux tramite Azione script.

  1. Avviare la creazione di un cluster utilizzando la procedura descritta in Creazione di cluster HDInsight basati su Linux, ma non completare la creazione.

  2. Nel pannello Configurazione facoltativa selezionare Azioni script e specificare le informazioni seguenti:

  3. Nella parte inferiore di Azioni di script usare il pulsante Seleziona per salvare la configurazione. Usare infine il pulsante Seleziona nella parte inferiore del pannello Configurazione facoltativa per salvare le informazioni relative alla configurazione facoltativa.

  4. Continuare a creare il cluster come descritto nell'argomento relativo alla creazione di cluster HDInsight basati su Linux.

Come si usa Giraph in HDInsight?

Dopo aver creato il cluster, usare la procedura seguente per eseguire l'esempio SimpleShortestPathsComputation incluso in Giraph. Viene usata l'implementazione di base di Pregel per trovare il percorso più breve tra gli oggetti in un grafico.

  1. Connettersi al cluster HDInsight usando SSH:

    ssh USERNAME@CLUSTERNAME-ssh.azurehdinsight.net
    

    Per altre informazioni, vedere Usare SSH con HDInsight.

  2. Usare il comando seguente per creare un file denominato tiny_graph.txt:

    nano tiny_graph.txt
    

    Usare il testo seguente come contenuto del file:

    [0,0,[[1,1],[3,3]]]
    [1,0,[[0,1],[2,2],[3,1]]]
    [2,0,[[1,2],[4,4]]]
    [3,0,[[0,3],[1,1],[4,4]]]
    [4,0,[[3,4],[2,4]]]
    

    Questi dati descrivono una relazione tra gli oggetti in un grafico diretto, usando il formato [source_id, source_value,[[dest_id], [edge_value],...]]. Ogni riga rappresenta una relazione tra un oggetto source_id e uno o più oggetti dest_id. Il valore edge_value può essere considerato come la potenza o la distanza della connessione tra source_id e dest\_id.

    I dati disegnati usando il valore (o peso) come distanza tra gli oggetti possono essere simili a quelli raffigurati nel diagramma seguente:

    tiny_graph.txt drawn as circles with lines of varying distance between

  3. Per salvare il file usare CTRL+X, quindi Y e infine premere INVIO per accettare il nome del file.

  4. Usare il codice seguente per archiviare i dati nell'archiviazione primaria del cluster HDInsight:

    hdfs dfs -put tiny_graph.txt /example/data/tiny_graph.txt
    
  5. Eseguire l'esempio SimpleShortestPathsComputation con il comando seguente:

    yarn jar /usr/hdp/current/giraph/giraph-examples.jar org.apache.giraph.GiraphRunner org.apache.giraph.examples.SimpleShortestPathsComputation -ca mapred.job.tracker=headnodehost:9010 -vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat -vip /example/data/tiny_graph.txt -vof org.apache.giraph.io.formats.IdWithValueTextOutputFormat -op /example/output/shortestpaths -w 2
    

    I parametri usati con questo comando sono descritti nella tabella seguente:

    Parametro Risultato
    jar File JAR contenente gli esempi.
    org.apache.giraph.GiraphRunner Classe usata per avviare gli esempi.
    org.apache.giraph.examples.SimpleShortestPathsCoputation L'esempio usato. In questo esempio, viene calcolato il percorso più breve tra ID 1 e tutti gli altri ID nel grafico.
    -ca mapred.job.tracker Nodo head del cluster.
    -vif Formato di input da usare per i dati di input.
    -vip File di dati di input.
    -vof Formato di output. In questo caso, ID e valore come testo normale.
    -op Percorso di output.
    -w 2 Numero di ruoli di lavoro da usare. In questo esempio, 2.

    Per altre informazioni su questi e altri parametri usati con gli esempi di Giraph, vedere la Guida introduttiva a Giraph.

  6. Al termine del processo, i risultati vengono archiviati nella directory /example/out/shortestpaths. I file di output iniziano con part-m- e terminano con un numero che indica il primo file, il secondo e così via. Usare il comando seguente per visualizzare l'output:

    hdfs dfs -text /example/output/shortestpaths/*
    

    L'output sarà simile al testo seguente:

     0    1.0
     4    5.0
     2    2.0
     1    0.0
     3    1.0
    

    L'esempio SimpleShortestPathComputation è hardcoded in modo da essere avviato con l'ID oggetto 1 e individuare il percorso più breve ad altri oggetti. L'output è in formato destination_id e distance. In particolare, distance rappresenta il valore (o il peso) dei confini attraversati tra l'oggetto ID 1 e l'ID di destinazione.

    Con questa visualizzazione dei dati è possibile verificare i risultati attraversando i percorsi più brevi tra ID 1 e tutti gli altri oggetti. Osservare come il percorso più breve tra ID 1 e ID 4 sia 5, che corrisponde alla distanza totale tra ID 1 e 3 e quindi tra ID 3 e 4.

    Drawing of objects as circles with shortest paths drawn between

Passaggi successivi