-
- Une donnée est l’enregistrement d’une observation, d’un objet ou d’un
fait destiné à être interprété, traité par l’homme. Généralement, la
donnée est objective.
- Une information est le signifiant attaché à la donnée ou à un ensemble
de données. L’information est généralement subjective, définie selon un
contexte.
- Une connaissance est une information nouvelle, apprise par association
d’informations de base, de règles, de raisonnement, d’expérience ou
d’expertise
La gestion des données a passé par les phases schématisées par la figure 1, et qui sont
:
Avant 1960, il n’y a pas des bases de données, il n’y a que des applications manipulant
des fichiers gérés par de système de gestion de fichiers. À partir du milieu des années
1960, les BD hiérarchique et celles réseau sont apparues. Ces systèmes sont
caractérisés par :
Durant cette période, les bases de données transactionnelles OLTP sont conçues
pour la gestion des systèmes d’information des entreprises.
Définition de l’OLTP ou On-Line Transanctional Processing. OLTP désigne toutes
les bases de données destinées à gérer le traitement des données de manière
transactionnelle et fiable, à des fins de gestion d’une manière générale. On cite par
exemple les données comptables ou encore les données de ventes des supermarchés.
Les bases de données relationnelles sont gérées par des systèmes de gestion de bases
de données (SGBD). Un SGBD est un logiciel système servant à stocker, à manipuler
ou gérer, et à partager des informations dans une base de données, en garantissant la
qualité, la pérennité et la confidentialité des informations, tout en cachant la complexité
des opérations.
Exemples de SGBD
- Oracle
- SQL SERVER
- DB2
- INFORMIX
Cette période est celle des bases de données décisionnelles et celles utilisées dans la
gestion des données big data.
Base de données décisionnelles
La véracité
La véracité concerne la fiabilité et la crédibilité des informations collectées. Comme
le Big Data permet de collecter un nombre indéfini et plusieurs formes de données, il
est difficile de justifier l’authenticité des contenus, si l’on considère les post Twitter
avec les abréviations, le langage familier, les hashTag, les coquilles etc. Toutefois, les
génies de l’informatique sont en train de développer de nouvelles techniques qui
devront permettre de faciliter la gestion de ce type de données notamment par le
W3C.
La valeur
La notion de valeur correspond au profit qu’on puisse tirer de l’usage du Big Data. Ce
sont généralement les entreprises qui commencent à obtenir des avantages incroyables
de leurs Big Data. Selon les gestionnaires et les économistes, les entreprises qui ne
s’intéressent pas sérieusement au Big Data risquent d’être pénalisées et écartées.
Puisque l’outil existe, ne pas s’en servir conduirait à perdre un privilège concurrentiel.
2. Sources de données
Les sources de données sont :
De la même manière, l’analyse des données provenant de capteurs sur les avions
(données de vol) associées à des données météo permet de modifier les couloirs
aériens afin de réaliser des économies de carburant et d’améliorer la conception
et la maintenance des avions.
Il existe des utilisations concrètes du Big Data dans de nombreux autres
domaines : recherche scientifique, marketing, développement durable,
commerce, éducation, loisirs, sécurité, etc.
Chapitre 2 : Hadoop et Map-reduce
I. Hadoop
Hadoop est un framework open source développé en java, faisant partie des projets
de la fondation de logiciel Apache depuis 2009. Il est destiné à faciliter le
développement d’applications distribuées et scalables, permettant la gestion de
milliers de nœuds ainsi que des pétaoctets de données.
Dans Hadoop, les différents types de données, qu’elles soient structurées ou non,
sont stockées à l’aide du HDFS. Le HDFS va prendre les données en entrée et va
ensuite les partitionner en plusieurs blocs de données. Afin de garantir une
disponibilité des données en cas de panne d’un nœud, le système fera un réplica
des données. Par défaut les données sont répliquées sur trois nœuds différents,
deux sur le même support et un sur un support différent. Les différents nœuds de
données peuvent communiquer entre eux pour rééquilibrer les données.
I.2. Typologies d’un cluster Hadoop
II. Map-Reduce
1. Principe de Map-Reduce
Le modèle MapReduce consiste en deux étapes, représentées toutes deux par des
fonctions. Dans la fonction map on prend en entrée un ensemble de « clé-valeurs
», le nœud fait une analyse du problème et il va le séparer en sous-tâches, pour
pouvoir les redistribuer sur les autres nœuds du cluster. Dans le cas nécessaire,
les nœuds recevant les sous-tâches refont le même processus de manière
récursive. Les sous-tâches des différents nœuds sont traitées chacune d’entre elles
dans leur fonction map respective et vont retourner un résultat intermédiaire. La
deuxième étape nommé « Reduce », consiste à faire remonter tous les résultats à
leur nœud parents respectif. Les résultats se remonte donc du nœud le plus bas
jusqu’à la racine. Avec la fonction Reduce, chaque nœud va calculer un résultat
partiel en associant toutes les valeurs correspondant à la même clé en un unique
couple (clé – valeur). Une fois obtenu ce couple (clé-valeur), le résultat est remonté
au nœud parent, qui va refaire le même processus de manière récursive jusqu’au
nœud racine. Quand un nœud termine le traitement d’une tâche, un nouveau bloc
de données est attribué à une tâche Map. Voici un schéma illustrant tout ça.
Exemple d’utilisation.
Il y a beaucoup de de solutions qui gravitent autour de hadoop et qui forme son écosystème
complexe. Nous illustrons une liste non-exhaustive des principales solutions.
HBASE : Base NoSQL orientée colonnes. Le stockage à proprement parler reste du HDFS
mais hbase apporte une surcouche de stockage qui permet de bénéficier des avantages des
bases orientées colonnes, à savoir les colonnes dynamiques (deux individus d’une même
table n’ont pas forcément les même colonnes, les valeurs null ne sont pas stockées) et
l’historisation à la valeur et non-plus à la ligne (suppression des doublons, quand une
valeur change seule la valeur concernée est historisée et non toute la ligne).
Mesos : Projet Apache plus récent que Yarn, c’est aussi un système de gestion de
ressource de clusters. Il va permettre de gérer et de partager de manière fine, souple et
dynamique des ressources entre différents clusters, pour diverses applications.
Récupération des données
Apache Flume : C’est un système distribué permettant de récupérer des logs de plusieurs
sources, de les agréger et de les pousser dans HDFS. Il est fiable, flexible, assez intuitif et
porté par toutes les distributions Hadoop.
Apache Sqoop : Ce projet permet de faire le lien entre un système de gestion de base de
données relationnel (SGBDR) et HDFS. Moteurs d’interrogation et de manipulation des
données
MapReduce : Framework open source java, permettant la manipulation des données dans
un environnement distribué. Il est composé de deux étapes principales.
L’étape de map qui va permettre d’effectuer des actions là ou sont stockées les
données et fournir en sortie une liste de clés valeurs.
L’étape de reduce qui va regrouper les résultats des map en fonctions de clés et
effectuer les actions finales ( les actions sur les valeurs?).
Les étapes de map et de reduce lisent les données et écrivent leurs résultats sur disque ,
cela rend le processus stable mais lent.
Impala : Moteur SQL distribué mis en place et proposé par Cloudera. Il s’appuie sur le
metastore de hive pour connaître le format des données. Il va 20 fois plus que vite que
MapReduce mais n’est pour l’instant qu’un complément car il n’offre pas encore toutes les
fonctionnalités de mapreduce (sérialisation notamment)
Apache Drill : Moteur SQL open source développé initialement par MapR et maintenant
porté par la fondation Apache permettant d’explorer les données stockées dans un cluster
Hadoop ou dans des bases NoSQL. Apache Drill permet d’exécuter des requêtes sans avoir
à définir un schéma de données, ce qui offre une grande flexibilité aux utilisateurs.
Apache Tez : Moteur SQL distribué initié par Hortonworks qui vise à remplacer
mapreduce notamment au niveau de Hive.
Spark : Projet permettant la manipulation des données dans un environnement distribué.
Il peut aussi bien faire les traitements sur disque ou tout en mémoire. Il va 10 fois plus
vite que mapreduce sur disque et 100 fois plus vite en mémoire. Il est enrichi de librairies
notamment MLiB qui contient des algorithmes parallélisés de machine learning, GraphX
pour les algorithmes de graphes, SparkSQL pour notamment se connecter au metastore
de Hive. Spark peut se plugger sur la majorité des systèmes distribués (NoSQL, Hadoop,
MPP …). Il peut fonctionner en mode standalone ou être géré par un gestionnaire de
ressources tel que Yarn ou Mesos. Il permet nativement de coder en scala, java ou python.
Hive : Hive est donc composé d’un metastore et d’un driver. Ce dernier va permettre de
prendre en entrée du SQL et de générer du map reduce pour manipuler des données dont
on connaît la structure.
Pig : Moteur permettant de manipuler tous types de données avec un langage beaucoup
plus intuitif que le java mapreduce. Il est beaucoup utilisé pour tous les process ETL
(extraction transformation de données), il permet d’aller plus loin que le SQL. Une fois
exécuter le code Pig génère du mapreduce.
Mahout : Librairie java contenant des algorithmes de machine learning déjà codé en map
reduce. Son développement est ralenti au profit de la librairie Mlib de Spark
Ordonnanceurs
Oozie : Il permet d’ordonnancer et de lancer tous types d’applications (spark, impala, shell,
hive, pig ….) dans l’écosystème Hadoop.
Airflow : Outil open source développé par airbnb qui permet d’ordonnancer des jobs shell
en intégrant nativement la notion de flux.
Hue : Interface web qui permet d’accéder directement aux principaux modules (hive, pig,
sqoop, spark, impala, etc……). Nativement on peut accéder aux modules en ligne de
commandes. Hue apporte une interface commune et agréable d’utilisation.