Pourquoi Hadoop ?
Le problème
Depuis maintenant plusieurs années, le monde de l'informatique est entré dans une ère dans laquelle la principale problématique n'est plus de comment acquérir des données mais plutôt de comment gérer l'énorme quantité de données que nous sommes capables d'acquérir.
Exemple :
L'exemple le plus classique de ce changement est Facebook : depuis sa création, l'entreprise a réunit une gigantesque base de données d'informations très diverses sur plus d'un milliard d'utilisateurs dans le monde. Facebook ne se pose aujourd'hui plus la question de comment acquérir les données (les utilisateurs les fournissent), mais plutôt de comment stocker, organiser et retrouver des informations dans ces données.
Cette problématique est récurrente dans beaucoup d'autres entreprises et à propos de sujets très variés. Par exemple, le Large Hadron Collider (LHC) crée plusieurs milliards de collisions à chaque utilisation, et seulement une poignée d'entre elles intéressent les chercheurs. Il faut donc être capable de stocker et organiser ce genre de quantités de données.
Gérer de telles quantités de données pose deux problèmes principaux :
comment stocker ces informations : aucun disque dur seul n'est capable de stocker plusieurs milliers de téraoctets de données
comment organiser et rechercher dans ces informations : une machine seule n'a pas la puissance nécessaire pour effectuer des recherches suffisamment rapides sur les données ;
La solution
La solution à ces deux problèmes est d'utiliser plusieurs machines :
en partageant leur disque dur, les machines forment un groupe de stockage bien plus grand
en partageant leur processeur (et/ou leur carte graphique), les machines forment un groupe de calcul bien plus performant
Cependant, utiliser plusieurs machines comme si elles n'en formaient qu'une aux yeux de l'extérieur implique une synchronisation entre ces machines. Il faut être capable de les faire dialoguer pour qu'elles puissent se répartir la charge et le stockage intelligemment. Cette organisation de machines dialoguant pour partager stockage et puissance de calcul est appelée un cluster de machine (et les machines de ce cluster sont alors appelées des nœuds).
C'est là qu'intervient Hadoop, pour apporter un contexte, des outils et des conventions afin de rapidement pouvoir mettre en place un tel cluster, y stocker des données et y exécuter des programmes de manière distribuée.
Fondamental : Cluster
Un cluster est un ensemble d'ordinateurs connectés entre eux par un réseau et capables de s'organiser pour se répartir la charge (de calcul ou de stockage). Chaque ordinateur de ce cluster est appelé un nœud.
Fondamental : Hadoop
Hadoop est un "framework" (un cadre de travail) qui va mettre en place une synchronisation entre les différents composants de votre cluster afin d'être capable d'y stocker des données et d'y exécuter des programmes. Hadoop un "framework" : ce n'est pas un logiciel (il n'a pas d'interface graphique), ni même une librairie de code, mais plutôt une suite d'outils qui travaillent ensemble.