jeudi 26 mai 2011

Le dataware façon... Facebook !


S'il y'a bien une société qui doit avoir des problèmes de volumétrie pour gérer son datwarehouse... c'est Facebook ! Dans l'article que l'on trouve sur le blog de Facebook Engineering (ici), on parle d'un dataware d'un Petabyte (1 000 to) et d'une mise à jour quotidienne de 15 to de données par.... jour. Les connaiseurs apprécieront la performance... Si vous voulez savoir ce que cela représente, je vous recommande la vidéo (ici)... et le petit tableau ci-dessous



Un éléphant en peluche...
Si l'on en croit le film "The social Network", on y voit des geeks qui codent toute la journée et on se doute bien qu'ils n'utilisent pas un logiciel commercial. Quand on porte des tongs, on ne fait pas ses courses chez Microsoft, IBM, SAP ou Oracle ! Mais de là à choisir une solution Open Source dont le logo est un éléphant parce que c'était la peluche préférée du gamin du créateur... Il y'a un grand pas. Oui, on parle bien de Hadoop.  Et pour parfaire la légende, il est aussi dit que ce soit aussi son gamin qui ait trouvé le nom parce qu'il avait encore du mal à prononcer certains mots ^^

Le monde étrange de l'open source
Ce qui m'occupe depuis plusieurs semaines, c'est la découverte du monde de l'open source ! C'est assez paradoxal d'avoir à la fois une tonne d'information (document, vidéos, présentations, etc...) et de ne pas trouver une présentation simple avec une vue d'ensemble. Bref c'est vraiment tout le contraire du logiciel commercial où l'on a que des présentations générales et très peu de document technique. Autre fait marquant, c'est l'omniprésence du code et des lignes de commandes. On est loin d'un monde fait de clicks et de simplicité.

Hadoop c'est quoi ?
La première chose qu'il faut expliquer c'est que l'on parle d'un monde où l'informatique est distribuée. Plutôt que d'aller acheter le serveur le plus puissant du monde, on préfère une tactique qui consiste à acheter des serveurs d'entrée de gamme mais en très grand nombre. Vous voulez étendre votre capacité informatique... il suffit d'ajouter des serveurs.

Encore faut-il le logiciel qui va avec et c'est là que vous avez besoin d'Hadoop dont la première composante est un système de gestion de fichier. Vous avez un énorme fichier de données, il va le "couper" en bout pour le répartir sur l'ensemble des serveurs. C'est toujours la problématique d'avoir des serveurs de petite taille avec des capacités de stockage unitaire limitée.

La deuxième composante d'Hadoop, ce sont deux fonctions très simples Map et Reduce qui va permettre via programmation d'effectuer des traitements sur vos données que ce soit des filtres, comptages, regroupements etc... Mais et le mais est important, ces deux fonctions permettent que ces traitements soient totalement distribués sur l'ensemble de vos serveurs. La meilleure explication que j'ai trouvé est ici si vous voulez approfondir votre compréhension. On y explique comment ces deux fonctions vont vous permettre de "coordonner" 50 000 personnes si elles devaient faire le comptage du nombre de mots dans un site de blogs en fonction de leur longueur de caractères ^^

Et comme souvent dans ce monde d'open source, on y ajoute une composante complémentaire (HIVE) qui va permettre à des non initiés de pouvoir requêter en SQL - cette composante se chargeant de décomposer la requête en "jobs" enchainés Map et Reduce !

Et alors ?
Quand on regarde les vidéos, c'est incroyablement rudimentaire d'un point de vue utilisateur mais c'est aussi incroyablement puissant de... simplicité et d'efficacité d'un point de vue architecture. Il n'est pas étonnant de voir les IBM ou Teradata proposer ce type d'offre et d'architecture. C'est d'une rare efficacité sur par exemple des données semi-structurées (logs, adresse url, etc...) ou non structurées (voir l'exemple du comptage des mots). Et il n'est pas non plus étonnant que toutes ces idées vienent de problèmes et travaux effectués chez Google.

Et de penser personnellement, qu'il y'a un avant et un après... Mais que dans cet après, il faut encore trouver la valeur additionnelle que l'on peut tirer de ces possibilités !

2 commentaires:

Anonyme a dit…

Bonjour,
On peut donc parler de virtualisation du serveur et de serveurs virtuels.
Nathalie Mollet

François Nguyen a dit…

Oui - la "vraie" virtualisation - celle qui consiste à avoir au global un serveur composé d'une multitude de machines physiques. Et non celle qui consiste à avoir plusieurs serveurs virtuels sur une seule machine physique.

Enregistrer un commentaire