Apache giraph
-
Upload
ibn-tofail-university -
Category
Data & Analytics
-
view
14 -
download
0
Transcript of Apache giraph
![Page 1: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/1.jpg)
Apache GiraphMRINI YOUSSEFBOUHILA BILAL
![Page 2: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/2.jpg)
Introduction
Apache Giraph est un projet qui performe des calculs sur les graphes,
Apache Giraph utilise le service MapReduce de Hadoop.
Apache Giraph a été inspiré par le Framework Pregel de Google
Giraph est utilisé par Facebook et Paypal
![Page 3: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/3.jpg)
Pourquoi on n’en a besoin ?
Giraph fait éviter des dépenses onéreuses en mémoire et en réseau pour des opérations mandataires en MapReude,
Chaque cycle d’une itération de calcule sur Hadoop signifie l’execution d’un Job MapReduce
![Page 4: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/4.jpg)
Le Web
Le World Wide Web peut être structuré comme un énorme graphe:
Les pages sont des sommets connectées par des arcs qui représentent les hyperliens .
Ce Web Graphe a des billions de sommets et d’arcs.
Le succès des plus grandes sociétés comme Google se résume à son habilité à opérer de grands calculs sur ces graphes
![Page 5: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/5.jpg)
Google PageRank
Le succès de moteur de recherche Google est par son habilité à gérer le classement des résultats.
Le classement basé sur l’algorithme PageRank qui est un algorithme orienté graphe très important:
Les pages importantes ont beaucoup de Lien provenant d’autres pages
![Page 6: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/6.jpg)
Social Networks
Sur Facebook, Twitter, Linkedin, les utilisateurs et leurs interactions forment une Social Graph:
Les utilisateurs sont les sommets connectés par des arcs qui représentent une interaction comme Friendship ou Following
![Page 7: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/7.jpg)
Google Pregel Un système distribué développé pour le traitement des graphes à
grands echelles « Think like a vertex » Il prend le Bulk Synchronous parallel comme execution Tres tolerant aux pannes by checkpointing
![Page 8: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/8.jpg)
Pourrais je utiliser Pregel ? Pregel est la propriété de Google, comme alternative il existe
Apache Giraph qui est une implémentation de Pregel Elle tourne sous une infrastructure Hadoop Les calculs s’executent en mémoire
![Page 9: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/9.jpg)
Bulk synchronous parellel SuperSteps
Communication: Les processus d’échanges de données entre eux afin de faciliter le controle des données stockées Barrier synchronisationQuand un processus atteind le point ( Barrière), il doit attendre que les autres processus atteignent la meme barrière. Les calcules finissent quand tous les composants finissent.
![Page 10: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/10.jpg)
Pourquoi ne pas implémenter Giraph avec des MapReduce Jobs
Trop de disques, pas assez de mémoire, a superstep become a Job
![Page 11: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/11.jpg)
Qui fait quoi ?
Master: Responsable de la coordinationAssigne les partitions aux WorkersCoordonne la synchronisation
Worker : Responsable des sommetsInvoque les sommets activesEnvoie, reçoit et assigne les messages
![Page 12: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/12.jpg)
Super Steps Chaque sommet a un id, une valeur et une liste de voisins adjacents et leurs arcs
correspondants. Chaque sommet est invoqué dans chaque super Step et peut recalculer sa valeur
et renvoyer des messages aux autres nœuds Des combinaisons, agrégations et les mutations de toplogies
![Page 13: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/13.jpg)
Architecture maitre-esclave
Les sommets sont partitionnés et assignés à des Workers Les maitres assignent et coordonnent alors que les Workers
executent les sommets et communiquent entre eux.
![Page 14: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/14.jpg)
Les matrices
![Page 15: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/15.jpg)
Installé Giraph sur UbuntuTaper les commandes suivantes:sudo apt-get install gitsudo apt-get install maven
cd /usr/localsudo git close https://github.com/apache/giraph.gitsudo chown –R user : hadoop giraph
Il faut modifier le fichier bashrcgedit $HOME/.bashrcIl faut ajouter la ligne suivanteexport GIRAPH_HOME=/usr/local/giraph
![Page 16: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/16.jpg)
Installé Giraph sur Ubuntu
source $HOME/.bashrc cd $GIRAPH_HOME mvn package –DskipTests
DskipTests permet de sauter la phase de teste, cela va prendre du temps
![Page 17: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/17.jpg)
![Page 18: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/18.jpg)
Installé Giraph sur Cloudera
Il faut modifier le bashrc.Export GIRAPH_HOME=/usr/local/giraphExport GV=1.0.0Export PRO= Hadoop_2.0.0
Il faut charger les variablesSource ~/.bashrc
![Page 19: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/19.jpg)
Installé Giraph sur Cloudera
sudo mkdir /usr/local/giraph cd $GIRAPH_HOME cd .. sudo git clone https://github.com/apache/giraph.git sudo chown -R user:hadoop giraph cd $GIRAPH_HOME $ git checkout release-$GV $ mvn package -DskipTests -Dhadoop=non_secure -P $PRO
![Page 20: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/20.jpg)
Installé Giraph sur Cloudera
![Page 21: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/21.jpg)
Prépation de la donnée
La premiere etape est de mettre notre graphe sur le hdfs sous le nom de Tiny_graph.txt
[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]]]
![Page 22: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/22.jpg)
On va créer le fichier input et output sur le HDFS
Hdfs dfs –mkdir ginputHdfs dfs –mkdir goutput
Ensuite on va copier notre tiny_graph dans le HDFS
Hdfs dfs –put tiny_graph.txt ginput
Ensuite on va télécharger un exemple ( ShortestPathsInputGraph)sudo yum install wgetwget http://ece.northwestern.edu/~aching/shortestPathsInputGraph.tar.gztar zxvf shortestPathsInputGraph.tar.gzhdfs dfs -put shortestPathsInputGraph ginput
![Page 23: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/23.jpg)
Executer le Giraph Job
hadoop jar giraph-ex.jar org.apache.giraph.GiraphRunner \-Dgiraph.zkList=127.0.0.1:2181 -libjars giraph-core.jar \org.apache.giraph.examples.SimpleShortestPathsVertex \-vif org.apache.giraph.io.formats.JsonLongDoubleFloatDoubleVertexInputFormat \-vip /user/training/ginput/tiny_graph.txt \-of org.apache.giraph.io.formats.IdWithValueTextOutputFormat \-op /user/training/goutput/shortestpathsC2 \-ca SimpleShortestPathsVertex
![Page 24: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/24.jpg)
org.apache.giraph.GiraphRunner Classe utilisé pour démarrer les exemplesorg.apache.giraph.examples.SimpleShortestPathsComputation Dans ce cas il va calculer le chemin le plus court-ca mapred.job.tracker=headnodehost:9010 Nœud principale du Cluster-vif org.apache.giraph.io;formats.JsonLongDoubleFloatDoubleVertexInputFormat Fomat d’entrée à utiliser pour les données en entrée-vip /tiny_Graph,Text Fichier de donnée en entrée-vof org.apache.io.formats.IdWithValueTextOutPutFomart Format de sortie-op /example/outpout/.shortestspaths Emplacement de sortie-w 2 Le nombre de Worker
![Page 25: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/25.jpg)
Une fois la tache terminée il faut visualiser ces fichiers hdfs dfs -text /example/output/shortestpaths/
On aura le résultat suivant 0 1.0 4 5.0 2 2 .0 1 0.0 3 1.0
![Page 26: Apache giraph](https://reader035.fdocument.pub/reader035/viewer/2022062522/58a2cda51a28ab692e8b45e5/html5/thumbnails/26.jpg)
Vous pourrez visualisé l’éxecution de tous ces services plus en
détails sur notre prochain exposé qui portera sur l’utilisation de HD
Insights sur Azure.