BoostMySales - WordPress.com

publicité
Documentation Technique Stage
BoostMySales
Dossier d’études
techniques
BoostMySales
Présenté par
David Bonnet
Yannis Machouri
Maxime Couteau
Stanislas Leduc
Pierre Freneau
Stage de 2ème année BTS Services Informatiques aux Organisations
option SLAM - 14 janvier 2013 – 1er mars 2013
Stage effectué à
BoostMySales
Immeuble le Mercure
10, Rue Gaëtan Rondeau
44 200 Nantes
Page 1 sur 41
Documentation Technique Stage
BoostMySales
Page 2 sur 41
Documentation Technique Stage
BoostMySales
Page 3 sur 41
Documentation Technique Stage
BoostMySales
Remerciements
Nous tenons à remercier avant tout notre tuteur de stage Mr
Nabil Belcaid Le Guyader ainsi que son frère Mr Ali Belcaid pour leur
patience ainsi que pour leurs compétences dans leur domaine
spécifique.
Nous remercions également nos professeurs d’informatique Mr
Bourgeois et Mr Beauvais qui nous ont accompagnés et suivis
pendant toute la durée de notre stage.
Nous exprimons également notre reconnaissance au professeur
d’informatique Mr Gaddhar qui nous a aidé à trouver ce stage ainsi
que pour son soutien tout au long du projet.
Page 4 sur 41
Documentation Technique Stage
BoostMySales
Tables des matières
Introduction
1.1. Installation du serveur ……………………………………………………………...6
I.
II.
III.
IV.
V.
VI.
Prérequis
Installation de HBase 0.90.6
Installation de Nutch 2.1
Installation de TomCat
Installation de Solr 4.0
Intégration de Solr à Nutch
1.2. Installation de Grails.……………………………………………………………....11
I.
II.
Qu’est ce que Grails ?
Installation
1.3. Développement d’une interface de tests…………………………………12
I.
II.
Pourquoi une interface de tests ?
Captures d’écrans et extraits de codes
1.4. Intégration de Tika…………………………………………………………………15
I.
II.
III.
Qu’est ce que Tika ?
Implémentation de Tika dans Nutch
Essais et tests de Tika
1.5. Création de la base MySQL………………………………………………………18
I.
II.
Création des tables pour stocker les paramètres de Nutch
Contenus des tables
1.6. Intégration de Nutch, HBase dans Grails…………………………………24
I.
II.
Définition et exécution d’un crawl
Visualisation d’un crawl
Conclusion………………………………………………………………………………………..36
Ressources………………………………………………………………………………………..37
Page 5 sur 41
Documentation Technique Stage
BoostMySales
Introduction
Dans le cadre de notre BTS SIO nous avons du trouver un
stage en deuxième année qui correspondait à notre option le
développement.
C’est donc dans l’entreprise BoostMySales que nous
avons fait notre stage avec pour objectif la création d’un moteur
de recherche spécialisé dans la recherche de CV.
BoostMySales est une jeune entreprise de démarchage
téléphonique travaillant avec différents partenaires de
l’assurance.
Nos objectifs pour ce stage ont été divers et variés. Nous
devions dans un premier temps nous familiariser avec plusieurs
outils que nous ne maîtrisions pas. Nous devions également
rendre compte de notre activité quotidiennement en fin de
journée.
Notre travail s’est scindé en plusieurs parties réparties sur les 5
membres de notre équipe de travail.
En effet nous aborderons dans un premier temps l’installation
du serveur. Puis nous continuerons sur l’installation du
framework Grails. Nous expliquerons également pourquoi nous
avons développé une interface de tests ainsi que
l’implémentation de Tika dans Nutch. Ensuite, nous traiterons
de la création de la base de données MySQL. Enfin nous
terminerons par l’intégration de Nutch et HBase dans Grails.
Page 6 sur 41
Documentation Technique Stage
BoostMySales
1.1.
Installation du serveur
I. Prérequis
A. Télécharger la machine virtuelle
Télécharger la machine virtuelle déjà installée et configurée à l’adresse suivante :
http://www.turnkeylinux.org/drupal7
B. Configurer la machine virtuelle
La machine virtuelle doit avoir au moins 1 Go de RAM
IP : 192.168.21.131
port http : 80
port sftp : 22
Passerelle : 192.168.21.1
C. Connecter les portables
Installer Putty et se connecter sur le serveur à l’adresse 192.168.21.131
D. Installation de Java
 Installation de la commande apt
$ apt-get install sun-java6-jdk sun-java6-jre
 Ouvrir le fichier .bashrc
$ nano ~/.bashrc
 Ajouter la ligne suivante à la fin du fichier
Export JAVA_HOME=/usr/lib/jvm/java-6-sun
 Vérifier l’installation de Java
java -version
 Installation de Ant
apt-get install ant
II. Installation de HBase 0.90.6
A. Qu’est ce que HBase ?
HBase est un système de gestion de base de données non-relationnelles distribuées,
écrit en Java, disposant d'un stockage structuré pour les grandes tables.
HBase est inspirée
des publications de Google sur BigTable. Comme BigTable, elle est une base de données
orientée colonnes.
HBase est un sous-projet d'Hadoop, un framework d'architecture
Page 7 sur 41
Documentation Technique Stage
BoostMySales
distribué. La base de données HBase s'installe généralement sur le système de fichiers HDFS
d'Hadoop pour faciliter la distribution, même si ce n'est pas obligatoire.
B. Installation de HBase
 Téléchargement de HBase 0.90.6 via http://mirrors.linsrv.net/apache/hbase/
 Extraction du logiciel dans /opt/hbase906
 Editer le fichier /opt/hbase906/conf/hbase-site.xml avec le contenu suivant :
 Editer le fichier /opt/hbase906/conf/hbase-env.sh et dé-commenter la ligne
JAVA_HOME.
 Lancer HBase avec la commande : /opt/Serveur/hbase906/bin/start-hbase.sh
III. Installation de Nutch 2.1
A. Qu’est ce que Nutch ?
Nutch est une initiative visant à construire un moteur de recherche open source. Il
utilise Lucene comme bibliothèque de moteur de recherche et d'indexation. En revanche, le
robot de collecte a été créé spécifiquement pour ce projet.
L'architecture de Nutch est hautement modulaire et permet à des développeurs de
créer des plugins pour différentes phases du processus : récupération des données, analyse
des documents, recherche, etc.
Doug Cutting est l'initiateur et le coordinateur de ce projet.
Nutch a été à la base du Framework Hadoop : l’initiative phare du Big Data
B. Installation de Nutch




Télécharger le paquet source (apache-nutch-2.1-src.zip)
Décompressez dans le fichier opt
Renommer le fichier apache : mv apache-nutch-2.1 nutch21
Placez vous dans le dossier nutch21 puis exécuter la commande: ant.
Il y a maintenant un répertoire runtime/local contenant une installation de Nutch prête à
Page 8 sur 41
Documentation Technique Stage
BoostMySales
l’emploi.
 Se placer dans le répertoire /nutch21/runtime/local/conf/ y copier le fichier
/opt/hbase906/conf/hbase-site.xml
 Spécifier le back-end Gora dans nutch-site.xml :
<property>
<name>storage.data.store.class</name>
<value>org.apache.gora.hbase.store.HBaseStore</value>
<description>Dafault class for storing data</description>
</property>
 S’assurer que les dépendances avec HBase et Gora (gora-hbase) soient disponibles
dans ivy/ivy.xml :
 Décommenter la ligne suivante :
<dependency org="org.apache.gora" name= "gora-hbase" rev= "0.2" conf= "*->default" />
 S’assurer également que HBaseStore est bien défini par défaut dans
gora.properties :
gora.datastore.default=org.apache.gora.hbase.store.HBaseStore
 Ajouter également dans le fichier /conf/nutch-site.xml :
<property/>
<name>httpd.agent.name</name>
<value>VSpider</value>
</property>
C. Utilisation de Nutch
Nous avons 2 méthodes afin d’utiliser Nutch :
 Le mode dit «global» avec une seule commande (dépréciée au profit de la seconde) :
Page 9 sur 41
Documentation Technique Stage
BoostMySales
 Le mode «étape par étape» avec plusieurs commandes :
IV. Installation de Tomcat
Les applications comme nutch-gui sont des applications servlet qui requièrent un
serveur TomCat pour tourner.
Sous une base Debian, il suffit d’exécuter la commande suivante:
apt-get install tomcat6admin tomcat6
Remplacer le contenu qui se trouve entre les balises <tomcat-users> par:
V. Installation de Solr 4.0
A. Qu’est ce que Solr ?
Solr est une plateforme logicielle de recherche s'appuyant sur le moteur de recherche
Page 10 sur 41
Documentation Technique Stage
BoostMySales
Lucene, créée par la Fondation Apache et distribuée et conçue sous licence libre.
Solr utilise
le langage Java et est exécuté par un conteneur de servlets, comme par exemple TomCat. Il
communique avec le client à l'aide d'une interface de programmation en XML et JSON,
généralement via le protocole HTTP.
B. Installation de Solr avec TomCat6






Télécharger Solr (version 4.0)
Extraction des sources dans /opt/apache-solr-4.0
On crée le répertoire solr4 mkdir /opt/solr4
Copier example/solr dans /opt/solr4
Copier example/webapps/solr.war dans /opt/solr4
Editer dataDir dans le fichier de configuration
/opt/solr/collection1/conf/solrconfig.xml :
 Créer un répertoire pour les données Solr et donner les droit pour le serveur tomcat6 :
 Configurer le nouveau contexte tomcat pointant vers nos fichiers Solr.
 Créer un fichier /etc/tomcat6/Catalina/localhost/solr.xml avec le contenu suivant :
 Redémarrer TomCat6.
C. Vérification de l’installation de Solr
Après avoir démarré la console d’administration de Solr, on peut accéder aux pages
suivantes :
192.168.1.131:8080/solr/admin
Page 11 sur 41
Documentation Technique Stage
BoostMySales
VI. Intégration de Solr à Nutch
Après avoir installé correctement Nutch et Solr , Nutch récupère des données depuis les url
données. Voilà les étapes pour déléguer la recherche à Solr, pour que les liens puissent être
consultables :
 Copier le fichier shema.xml du dossier conf de Nutch vers le dossier conf de Solr
cp nutch21/conf/shema-solr4.xml /opt/solr4/collection1/conf/schema.xml
 Ajouter la ligne de code suivante dans le document shema.xml :
<field name=”_version_” type=”long” indexed=”true” stored=”true”/>
 Redémarrer TomCat6
 Lancer la commande de l’index de Solr :
/opt/nutch21/bin/nutch solrindex http://192.168.1.131:8983/solr -reindex
1.2.
I.
Installation de Grails
Qu’est ce que Grails ?
Grails est un framework open source de développement agile d'applications web basé sur le
langage Groovy et sur le patron de conception Modèle-Vue-Contrôleur.
Grails est basé sur cinq principes fondamentaux :





II.
Ne pas se répéter : les éléments de l'application ne doivent être qu'à un seul endroit.
L'architecture MVC et la métaprogrammation en Groovy rendent cela possible.
Convention plutôt que configuration : il est inutile de préciser des détails lorsqu'ils
respectent des conventions établies. Grails exploite cela en proposant des
comportements par défaut pour la plupart de ses fonctionnalités.
Architecture orientée modèle : le point d'entrée et la pierre angulaire d'un
développement Grails est la description formelle des classes représentant le domaine
métier (Modèle conceptuel de données) ainsi que de leurs dépendances. Les couches
techniques sous-jacentes sont générées.
Prototypage : Les mécanismes de scaffolding offerts par le framework permettent de
générer automatiquement un prototype d'application "présentable" aux utilisateurs
dès la formalisation des classes de domaine.
Exploiter la puissance de la JVM : les scripts Groovy étant compilés en bytecode
Java, Grails exploite totalement la richesse et la puissance du monde Java.
Installation
A. Prérequis
Avant d'installer Grails vous aurez besoin au minimum d'un kit de développement
Java (JDK) version 1.6 ou supérieure installée.
Ensuite, il faut télécharger une distribution
Page 12 sur 41
Documentation Technique Stage
BoostMySales
binaire de Grails et décompresser le fichier zip obtenu dans l’emplacement de votre choix.
B. Installation sous Linux
Définissez la variable d'environnement GRAILS_HOME à l'emplacement où vous avez
extrait le fichier zip, il faut le placer dans le fichier bashrc de votre profil :

export GRAILS_HOME= chemin du repertoire de grails
Ajoutez ensuite le répertoire bin à votre variable PATH de votre profil :

PATH="$PATH:$GRAILS_HOME/bin"
1.3.
Développement d’une interface de tests (Nutch
Web/Core)
I.
Pourquoi une interface de tests ?
A. Crawl (Shell Script)
Malgré nos recherches et essais pour implémenter les API de Nutch 2.1 dans un
programme java afin de pouvoir crawler, cela s’est soldé par un échec.
En regardant le code du fichier Nutch nous nous sommes aperçu qu’il s’agissait d’un script
shell qui suivait les paramètres donnés en arguments exécutant des classes JAVA prédéfinis.
Nous avons développé un script shell qui exécute l’ensemble des commandes composant le
crawl (inject, generate, fetch, parse, updatedb, solrindex).
B. NutchWeb
NutchWeb à été créé afin d’être l’interface web de test pour l'exécution d’un crawl puis
pour NutchWeb Core.
C’est une application J2E utilisant le langage JSP (Java Servlet Page).
C. NutchWeb Core
NutchWeb Core est une réécriture from scratch du script shell crawl. En effet afin de
pouvoir un jour implémenter facilement les APIs officielles, nous avons décidé de créer une
application JAVA qui permettrait d’éclater en méthodes les différents paramètres passés en
arguments à Nutch. Au fur et à mesure cette application s’est étoffé.
Aujourd’hui, cette application permet de faire le lien avec l’application web développée avec
le framework Grails et Nutch.
Page 13 sur 41
Documentation Technique Stage
BoostMySales
Ainsi on peut exécuter un crawl en utilisant les paramètres spécifiques à celui-ci qui sont
enregistrés dans une base de données MySQL.
II.
Captures d’écrans et extraits de codes
A. Nutch Web
Capture d’écran de NutchWeb
On peut apercevoir les deux boutons de test :
Sauvegarder paramètre ⇒ Permet de configurer Nutch pour le crawl que l’on va exécuter
Exécuter le crawl ⇒ Permet d’exécuter le crawl (en utilisant les méthodes de NutchWeb
Core).
B. Nutch Web Core

La méthode Inject()
Page 14 sur 41
Documentation Technique Stage
BoostMySales
Cette méthode permet d’injecter les urls dans la base de données crawldb.
On voit ici que l’on exécute directement la commande nutch avec l’argument inject et un
paramètre qui est le chemin vers le répertoire urls.
Afin de garder le résultat de la commande ainsi que ses erreurs on utilise deux buffers:
- inOut pour récupérer la sortie standard sans erreurs.
- inErr pour récupérer la sortie des erreurs.
Puis on utilise la méthode statique out.println afin que le résultat soit bien enregistré dans le
fichier de log hadoop.log. (En effet, la méthode System.out.println permet d’afficher le
résultat directement dans la console, ce qui n’est pas notre cas pour le JSP)

Extrait de la classe Urls de NutchWeb Core
La méthode regexUrls() permet d’adapter la mise en forme de la liste des urls avant écriture
dans le fichier seed.txt. Le format de ce fichier est le suivant :
Page 15 sur 41
Documentation Technique Stage
BoostMySales
De plus, on vérifie que tous les urls respectent bien la norme http://nomdusite, en effet si un
site ne commence pas par http://, il y aura une exception qui sera levée, et le programme
s’arrêtera.
Cette méthode prend en argument un seul paramètre, la variable contenant la listes des
urls.
Tout d’abord on remplace les caractères d’espacement par un retour à la ligne, ensuite on
manipule chaque url afin de savoir si celle-ci contient http://, si ce n’est pas le cas on le
rajoute.
Enfin on retourne un string regexUrls contenant la liste des urls formatées, prêt à être écrit
dans le fichier seed.txt.
Tous les codes seront visibles sur le projet final ou via des liens.
1.4. Intégration de Tika
I.
Qu’est ce que Tika ?
Page 16 sur 41
Documentation Technique Stage
BoostMySales
Tika est un «parser», c’est une sorte de boîte à outils développée par la fondation
Apache. Son but est de chercher et extraire les métadonnées ainsi que le contenu du texte à
partir de différents documents en utilisant les bibliothèques existantes du parser.
Parmi les formats de documents supportés par Tika on retrouve:





etc.
II.
Document HTML, XML et ses formats dérivés
Documents Microsoft Office
Différents formats d'images, de vidéos et audio
Différents formats d'archives (zip, jar, ...)
Format de courriel mbox
Implémentation de Tika dans Nutch
Tika est un plugin de Nutch il suffit alors de préciser certaines configurations afin qu’il
soit implémenté et utilisé par Nutch. Nutch utilise un parser par défaut qui ne fait pas tout
ce que peut produire Tika.
 Modifier le fichier /opt/Serveur/nutch21/conf/parse-plugins.xml
 Changer l’id du plugin par parse-tika
Pour que Nutch prenne en compte les changements, il suffit de faire un ant build de
Nutch :
 Se placer dans le répertoire /opt/Serveur/nutch21 et taper la commander suivante :
ant clean
 Enfin toujours dans le même répertoire, taper la commande ant build
Page 17 sur 41
Documentation Technique Stage
BoostMySales
Maintenant Nutch est configuré pour fonctionner avec Tika.
III.
Essais et tests de Tika
Pour voir si Tika fonctionne bien essayons de faire un crawl sur un site internet.
Essayons avec apple.com
 Il faut ensuite se rendre dans l’interface de Solr afin de voir ce qui a été parsé
http://192.168.1.131:8080/solr/#/
Vous devriez obtenir l’interface suivante :
 Se placer dans collection1 et cliquer sur Query, vous devriez être à présent sur cette
page :
Page 18 sur 41
Documentation Technique Stage
BoostMySales
 Cliquer sur Execute Query et vous obtiendrez le résultat du crawl :
1.5.
Création de la base MySQL
Afin de paramétrer Nutch pour le crawl que l’on va exécuter, on stocke dans la base les
quelques 124 paramètres par défaut que Nutch peut utiliser, ainsi l’utilisateur peut affiner
l’exécution de son crawl.
Pour cela on enregistre les paramètres modifiés dans une autre table.
Enfin avant d’exécuter le crawl, on réécrit les fichiers de configuration de Nutch avec les
paramètres dédiés à celui-ci.
Voici le mcd suivant :
Page 19 sur 41
Documentation Technique Stage
BoostMySales
La base de données crawl à été crée manuellement.
I.


Création des tables pour stocker les paramètres de nutch
Les tables confnutch et defaultconfnutch ont également été crées manuellement.
Les tables Instance, Parametres, Scenarios, Url, sont crées dynamiquement par le
framework Grails (en mode débogage ces tables sont temporaires, elles sont
supprimées à chaque instance de test, en mode production elles sont persistantes).
La base de données ‘crawl’ se compose donc de 11 tables :
1. confnutch : Contient les paramètres de configuration de Nutch pour chaque
instance
2. confregexurlnormalize : Contient les expressions régulières à utiliser
3. confsuffixurlfilter : Contient les suffixes de documents à inclure/ignorer
4. defaultconfnutch : Contient les 124 paramètres par défaut de Nutch
5. instance : Contient les instances de chaque scénario
6. mimetype : Contient les types de fichiers
7. parametre : Contient le batchid et la profondeur des liens pour chaque instance
8. scenario : Contient les scénarios
9. url : Contient les urls pour chaque instance
10. defaultconfregexnormalize : Contient les normes URLs par défaut
Page 20 sur 41
Documentation Technique Stage
BoostMySales
11. defaultconfsuffixurlfilter : Contient tous les suffixes de formats pris en charges
par Nutch par défaut
Voici comment cette base de données sera utilisée :
 Un scénario peut comporter une ou plusieurs instances:
 L’utilisateur choisira ensuite ses propres configurations, via les tables de
configurations (confnutch, confsuffixurlfilter…) (descriptions détaillées dans le
manuel utilisateur)
Prenons un exemple simple :
Nous voulons faire une recherche de CV (c’est un scénario). Dans cette recherche, je veux
trouver des CV d’experts Java, de développeurs PHP ou bien d’ingénieurs spécialisés UNIX
(ce sont des instances)
Afin de remplir la table defaultconfnutch avec les 124 paramètres par défaut, nous créons
un code php qui peut lire le fichier nutch-default.xml et insère les valeurs voulues dans
cette table.
La table confnutch contiendra les paramètres liés à l’instance et seront écrits dans le fichier
de configuration nutch-site.xml afin d’exécuter le crawl avec ceux-ci.
Ce procédé est le même pour les autres tables de configurations.
A l’aide de chaque table, on peut créer les nouveaux fichiers de configurations que
l’utilisateur veut.
Chaque fichier de configuration, sera créé grâce au controller CrawlController.groovy
contenu dans l’interface faite à partir du framework Grails :
https://dev.balinor.fr/projects/integrategui/repository/revisions/master/changes/grailsapp/controllers/Scenario/BD/CrawlController.groovy
Créer un fichier nutch-site.xml
II.
Contenus des tables
Page 21 sur 41
Documentation Technique Stage
BoostMySales

confnutch :

defaultconfnutch :

confregexurlnormalize :
Page 22 sur 41
Documentation Technique Stage
BoostMySales

confsuffixurlfilter :

defaultconfregegexnormalize :
Page 23 sur 41
Documentation Technique Stage
BoostMySales

defaultconfsuffixurlfilter :

instance :
Page 24 sur 41
Documentation Technique Stage
BoostMySales

mimetype :

parametre :

scenario :

url :
1.6.
I.
Intégration de Nutch, HBase dans Grails
Définition et exécution d’un crawl
A. Un scénario
Page 25 sur 41
Documentation Technique Stage
BoostMySales
ScénarioController.groovy
B. Une instance
C. Les paramètres
Page 26 sur 41
Documentation Technique Stage
BoostMySales

On se connecte à la base de données, puis on sélectionne tous les paramètres de
configuration de Nutch :

Ensuite, on entre et on sauve les nouveaux paramètres :

Pour les autres paramètres de configurations (suffixe, url…) il s’agit du même
procédé. Pour voir l’intégralité du controller ParametreController.groovy :
https://dev.balinor.fr/projects/integrategui/repository/revisions/master/changes/grailsapp/controllers/Scenario/BD/ParametreController.groovy
II.
Visualisation d’un crawl
Page 27 sur 41
Documentation Technique Stage
BoostMySales
A. Qu’est ce que HBase ?
HBase est un système de gestion de base de données non-relationnelles distribué,
écrit en Java, disposant d'un stockage structuré pour les grandes tables.
HBase est inspirée des publications de Google sur BigTable. Comme BigTable, c’est une base
de données orientée colonnes.
HBase est un sous-projet d'Hadoop, un framework d'architecture distribuée. La base de
données HBase s'installe généralement sur le système de fichiers HDFS d'Hadoop pour
faciliter la distribution, même si ce n'est pas obligatoire.
B. Gestion des données dans HBase
Les bases NoSQL sont arrivées avec leur cortège de nouveautés et pour certaines
d'entre elles une notion héritée de BigTable : celle de base de donnée orientée colonne.
Prenons un modèle très simple de donnée et essayons de le transposer dans un modèle
"orienté colonne" :
C. Utilisation des API
Comme on peut le voir on est passé d'un modèle à 2 dimensions (ligne x colonne)
vers un modèle où une valeur est accédée au travers de 2 coordonnées qui sont ici (ligne,
colonne). Cette notion de coordonnées est importante si l'on veut concevoir une gestion
des données avec une base orientée colonnes. La clé primaire dans la colonne Id est
devenue ce que l'on appelle une row dans l'API de HBase.
Page 28 sur 41
Documentation Technique Stage
BoostMySales
En réalité HBase ne va pas se compliquer la vie avec les notions de "ligne" et de "colonne"
telles qu'on peut l'entendre dans le monde relationnel. Une donnée devient donc accessible
grâce à des coordonnées. HBase stocke systématiquement une donnée avec l'ensemble de
ses coordonnées. Avec ce modèle HBase n'est plus limité à un espace à 2 dimensions et elle
en profite pour ajouter une notion de famille de colonne et un horodatage qui va permettre
de gérer plusieurs versions d'une donnée :
Voici le schéma de la table que nutch crée lors d’un crawl (fichier de configuration de gorahbase), la table webpage :
<!-- fetch fields -->
<field name="baseUrl" family="f" qualifier="bas"/>
<field name="status" family="f" qualifier="st"/>
<field name="prevFetchTime" family="f" qualifier="pts"/>
<field name="fetchTime" family="f" qualifier="ts"/>
<field name="fetchInterval" family="f" qualifier="fi"/>
<field name="retriesSinceFetch" family="f" qualifier="rsf"/>
<field name="reprUrl" family="f" qualifier="rpr"/>
<field name="content" family="f" qualifier="cnt"/>
<field name="contentType" family="f" qualifier="typ"/>
<field name="protocolStatus" family="f" qualifier="prot"/>
<field name="modifiedTime" family="f" qualifier="mod"/>
<!-- parse fields -->
<field name="title" family="p" qualifier="t"/>
<field name="text" family="p" qualifier="c"/>
<field name="parseStatus" family="p" qualifier="st"/>
<field name="signature" family="p" qualifier="sig"/>
<field name="prevSignature" family="p" qualifier="psig"/>
<!-- score fields -->
<field name="score" family="s" qualifier="s"/>
Page 29 sur 41
Documentation Technique Stage
BoostMySales
<field name="headers" family="h"/>
<field name="inlinks" family="il"/>
<field name="outlinks" family="ol"/>
<field name="metadata" family="mtdt"/>
<field name="markers" family="mk"/>
D. Intégration de HBase dans Grails
1. Utilisation des API de Hbase
Une application a été développée pour se connecter à HBase avec grails.
Actuellement il n’existe aucun plugin pour la version 0.90.6.
Le but de cette application est de récupérer les données de la table webpage en toute
facilité grâce au framework Grails.
Voici le diagramme Objet de cette application :
Pour mieux comprendre le fonctionnement de cette application voici un exemple précis :

Connexion
Page 30 sur 41
Documentation Technique Stage
BoostMySales

Liste d’URL d’un crawl

Scan d’une URL

Récupération de lien d’une URL
2. Intégration
Page 31 sur 41
Documentation Technique Stage
BoostMySales
L’interface développée sous grails permet de visualiser les données crawlées par
nutch2.1 avant l’indexation dans Sorl4.
Cet outils a seulement un but de vérification des données contenues dans la table webpage
afin de décider si le crawl sera indexé ou non.
Afin d’être au plus près d’une bonne explication prenons un exemple précis (chaque capture
d’écran sera accompagnée de sa partie de code associée) :

Connexion à la base de données grâce à ConnectHbase.groovy

Liste des scénarios avec leur instance
 Modèle :
Page 32 sur 41
Documentation Technique Stage
BoostMySales
 Controller :
 Vue :
Page 33 sur 41
Documentation Technique Stage
BoostMySales

Liste des URLs du crawl
 Modèle :
 Controller :
Page 34 sur 41
Documentation Technique Stage
BoostMySales
 Vue :

Détails de la ligne
 Modèle :
Page 35 sur 41
Documentation Technique Stage
BoostMySales
 Controller :
 Vue :
Page 36 sur 41
Documentation Technique Stage
BoostMySales
NOTE DU DERNIER RDV TELEPHONIQUE DU 1ER MARS : Code
inclus dans ConnectHbase.groovy :
Page 37 sur 41
Documentation Technique Stage
BoostMySales
Conclusion
Ce stage a parfaitement répondu à nos attentes. Il nous a
permis de découvrir de nouvelles technologiques que nous ne
connaissions pas.
Nous pensons également que les cours d’informatique qui nous
ont été enseignés cette année ont eu une grande importance
au bon déroulement du stage. En effet, ces notions de base
nous ont permis de mieux appréhender le projet. Nous avons
développés de nouvelles compétences grâce à celui-ci très
enrichissant intellectuellement et humainement. C’était un
domaine tout à fait inconnu pour nous et nous sommes fiers du
rendu final de notre moteur de recherches.
Ce stage nous a vraiment fait apprendre de nouveaux
outils de programmation dont de nouveaux framework, un
nouveau langage de programmation, à travailler en équipe, à
rendre compte de nos avancées mais surtout d’évoluer
positivement dans notre domaine de développement.
Page 38 sur 41
Documentation Technique Stage
BoostMySales
Ressources :
1. Documentations HBase :





http://hbase.apache.org/book.html
http://www.siteduzero.com/informatique/tutoriels/creez-votre-application-webavec-java-ee
http://www.siteduzero.com/informatique/tutoriels/apprenez-a-programmer-enjava
http://grails.org/doc/2.2.0/
http://hbase.apache.org/apidocs/index.html
2. Documentations Nutch :



















http://nutch.apache.org
http://nutch.apache.org/wiki.html#Nutch+Wiki
http://nutch.apache.org/apidocs-2.1/index.html
http://wiki.apache.org/nutch/NutchTutorial
https://github.com/apache/nutch
http://fr.wikipedia.org/wiki/Nutch
http://today.java.net/pub/a/today/2006/01/10/introduction-to-nutch-1.html
http://lucene.472066.n3.nabble.com/nutch-crawling-with-java-not-shellscripttd617212.html
http://code.google.com/p/daicaheb/source/browse/trunk/nutch-trunkbb/src/test/org/apache/nutch/fetcher/TestFetcher.java?spec=svn77&r=77
http://cmusphinx.sourceforge.net/2012/06/building-a-java-application-with-apachenutch-and-solr/
http://arifn.web.id/blog/2010/11/29/simple-crawling-with-nutch.html
http://wiki.apache.org/nutch/RunNutchInEclipse
http://wiki.apache.org/nutch/JavaDemoApplication
http://techvineyard.blogspot.fr/2010/12/build-nutch20.html#Running_Nutch_classes_from_Eclipse
http://notebyxz.blogspot.fr/2012/10/building-java-application-with-nutch-20.html
http://java.dzone.com/articles/using-lucene-grails
http://leanjavaengineering.wordpress.com/2012/02/24/using-lucene-in-grails/
http://armelnene.blogspot.fr/2009/11/develop-your-own-google-with-apache.html
http://fr.slideshare.net/abial/nutch-as-a-web-data-mining-platform
3. Documentations Tika :




http://tika.apache.org
http://tika.apache.org/1.3/index.html
http://tika.apache.org/1.3/parser.html
https://tika.apache.org/1.3/parser_guide.html
Page 39 sur 41
Documentation Technique Stage
BoostMySales

http://stackoverflow.com/questions/
4. Documentations Grails :




http://grails.org/doc/2.2.0/
http://www.grails.org/community
http://www.grails.org/plugins/
http://grails.org/doc/latest/guide/gettingStarted.html#requirements
5. Outils :
- Netbeans
- Plate-forme de collaboration (chili project)
- Base de données noSQL (Hbase)
- Base de données relationnelle (MySQL)
- Langage Java, Groovy (FrameWork Grails) et SQ
- Windesign
- Wiki
Page 40 sur 41
Documentation Technique Stage
BoostMySales
Page 41 sur 41
Téléchargement