2. 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
3. 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
4. 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
5. 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
6. 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
7. 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
8. 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
9. 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 synchronisation
Quand 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.
10. Pourquoi ne pas implémenter Giraph
avec des MapReduce Jobs
Trop de disques, pas assez de mémoire, a superstep become a Job
11. Qui fait quoi ?
Master: Responsable de la coordination
Assigne les partitions aux Workers
Coordonne la synchronisation
Worker : Responsable des sommets
Invoque les sommets actives
Envoie, reçoit et assigne les messages
12. 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
13. 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.
15. Installé Giraph sur Ubuntu
Taper les commandes suivantes:
sudo apt-get install git
sudo apt-get install maven
cd /usr/local
sudo git close https://github.com/apache/giraph.git
sudo chown –R user : hadoop giraph
Il faut modifier le fichier bashrc
gedit $HOME/.bashrc
Il faut ajouter la ligne suivante
export GIRAPH_HOME=/usr/local/giraph
16. 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
17.
18. Installé Giraph sur Cloudera
Il faut modifier le bashrc.
Export GIRAPH_HOME=/usr/local/giraph
Export GV=1.0.0
Export PRO= Hadoop_2.0.0
Il faut charger les variables
Source ~/.bashrc
21. 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]]]
22. On va créer le fichier input et output sur le HDFS
Hdfs dfs –mkdir ginput
Hdfs 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 wget
wget http://ece.northwestern.edu/~aching/shortestPathsInputGraph.tar.gz
tar zxvf shortestPathsInputGraph.tar.gz
hdfs dfs -put shortestPathsInputGraph ginput
24. org.apache.giraph.GiraphRunner
Classe utilisé pour démarrer les exemples
org.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
25. 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
26. 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.