Les technologies big-dataCe cours présente ce qu'est le big data ainsi que les solutions permettant de réaliser des traitements sur de gros volumes de données

Qu'est-ce que le big data ?

Le big data offre des solutions nouvelles adaptées au traitement de données volumineuses. Les bases de données relationnelles optimisaient le stockage de l'information et non la rapidité d'accès. Les technologies big data permettent d'accéder et de modifier les données plus rapidement.

Le but de des technologies big data est de proposer des servives assurant :

  • Une tolérence aux pannes. Un cluster hadoop est composé de nombreux serveurs, les pannes ne sont pas un cas exceptionnel.
  • Une haute disponnibilité des données.
  • La gestion d'un important volume de données (stockage et traitement)
Hadoop

Hadoop une version open source d'une technologie big data inspirée par google. Hadoop a beaucoup de distributeurs : Apache, Hortonworks, Cloudera, MapR, IBM.

Fonctionnement

Hadoop permet d'organiser le stockage des données sur plusieures machines qui travaillent en parallèle. De cette manière, le temps de traitement est inversement proportionnel au nombre de machines.

L'ensemble des machines garantissant ce service est nommé cluster hadoop.

Le cluster hadoop est composé d'un ensemble de serveur travaillant ensemble appelés datanodes et pilotés par un serveur unique : le namenode.

Architecture big data

Namenode

Un Namenode est un service central (également appelé maître) qui s'occupe de gérer l'état du système de fichiers.

Il maintient l'arborescence du système de fichiers et les métadonnées de l'ensemble des fichiers et répertoires d'un système Hadoop.

Le Namenode a une connaissance des Datanodes (étudiés juste après) dans lesquels les blocs sont stockés. Ainsi, quand un client sollicite Hadoop pour récupérer un fichier, c'est via le Namenode que l'information est extraite.

Datanode

Les Datanodes sont les serveurs sur lesquels les données sont enregistrées. Ils sont sous les ordres du Namenode. Ils sont sollicités par les Namenodes lors des opérations de lecture et d'écriture.

Enregistrement des données

hadoop est conçu pour stocker de manière fiable des fichiers très grands dans un cluster. Il stocke chaque fichier comme une séquence de blocs.

Tous les blocs d'un fichier à l'exception du dernier ont la même taille. Les blocs d'un fichier sont répliquées pour une meilleure tolérance aux pannes et pour améliorer la disponnibilité. La taille de bloc et le facteur de réplication sont configurables par fichier.

Le NameNode prend toutes les décisions concernant la réplication de blocs . Il reçoit régulièrement des Heartbeat et des Blockreport de chacun des DataNodes :

  • Un Heartbeat implique que le DataNode fonctionne correctement
  • Un Blockreport contient une liste de tous les blocs sur le DataNode
Traitements map-reduce

Pour exécuter des traitements sur des données volumineuses se trouvant sur différentes machines, il est impossible de transférer les données directement. Le traitement des données doit se faire sur la machine qui lest contient.

Pour cela, le traitement est répari entre les différentes machines du cluster qui fournissent chacune un résultat (étape Map). Ce résultat est alors agrégé afin de produire un résultat final (étape Reduce).

Exemple de réalisation d'une somme par un traitement map-reduce
Des langages adaptés au big data

Il existe un grand nombre de langages qui permettent de créer de générer des procédures map-reduce sans avoir à les écrire en java. Il s'agit entre autre, de pig, hive, sqoop, flume, impala. Ces langages sont plus accessibles et plus performants que les procédures map-reduce en java. Par exemple, 10 lignes de code pig sont équivalents à 200 lignes de code java.

Les langages Big-Data