EA2013 Social data engineering

Présentation

 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (EA2013)
 * Auteur : Walid bibi 
 * Télécharger : [[Media:EA_2013_social_data_engineering.pdf]]

Abstract
Social networks have a more and more large part in our daily life.Users in the millions and shared datas on these networks are evaluated in petabytes. this is called big data. Big data represent large volumes of unstructured data. You have to arrange them in order to exploit them. For that, there are powerful tools as Hadoop used by facebook, linkedIn, amazon...

Résumé
Les réseaux sociaux occupent un.e part de plus en plus importante dans notre vie quotidienne. Les utilisateurs se comptent en millions et les données partagées sur ces réseaux sont évaluées en pétaoctets. C'est ce qu'on appelle les big data. les big data représentent de gros volumes de données non structurées. Il faut donc trier ces données afin de les exploiter. Pour cela il existe des outils puissants comme Hadoop utilisés par facebook, linkedin, amazon etc etc...

Contexte
Aujourd'hui l'utilisation des réseaux sociaux prend une part de plus en plus important dans notre vie quotidienne. Par exemple, on compte plus de 800 millions utilisateurs sur facebook, 200 millions de connectés sur twitter et environ 490 millions de visiteurs chaque mois. Quotidiennement, ces abonnés sont très actifs sur les réseaux sociaux : par jour, on dénombre 50 millions de tweets, 60 millions d'actualités facebook et 1 milliard de mise à jour de profils facebook. Toutes ces données partagées sont évaluées en pétaoctets : c'est ce que l'on appelle les Big Data.

Big Data
Les données des médias sociaux participent au phénomène dit des «Big Data» qui englobe également la croissance des données traditionnelles et des documents bureautiques, emails, images et autres fichiers numériques. Contrairement aux données relationnelles des applications d’entreprise classiques (ERP, CRM, applications analytiques), la plupart des données des médias sociaux ne sont pas structurées. Les pétaoctets d’information participant au Big Data ont donné naissance à des infrastructures matérielles et logicielles spécialement conçues pour traiter ces volumes extrêmes. C’est le cas de la plate-forme open source Hadoop et des applications de datawarehousing.

Pour qui ? Pourquoi?
Les données générés par les réseaux sociaux intéressent plus particulièrement les entreprises. En effet avec ces données, les entreprises vont parvenir à établir une fiche complète du client : ses attentes, ses opinions, ce qu'il recherche, ce qu'il achète le plus, ce qu'il préfère etc etc... . Ainsi grâce à ses données, les entreprises pourront répondre exactement aux recherches du client le but étant d'attirer plus de clients et de fidéliser les clients déjà présents.

Problèmes rencontrés
Toutefois, les responsables marketing souhaitant exploiter les opportunités des médias sociaux doivent surmonter deux difficultés liées aux données. La première concerne les gigantesques volumes d’informations présentes sur les médias sociaux, sachant qu’on estime que seulement 20% d’entre elles présentent une utilité pour le marketing. La deuxième difficulté est d’incorporer les données des médias sociaux dans un profil client enrichi, couvrant tout ce que vous pouvez savoir d’une personne.

Hadoop
Hadoop est un framework open source écrit en Java et géré par la fondation Apache. Il a été conçu pour réaliser des traitements de volumes de données en masse. Il est utilisé par des entreprises ayant de très fortes volumétries de données à traiter. Parmi elles, on trouve notamment des géants du web comme Twitter, LinkedIn, ou encore eBay et Amazon. Hadoop fonctionne sur le principe des grilles de calcul consistant à répartir l'exécution d'un traitement intensif de données sur plusieurs noeuds ou grappes de serveurs. Il repose sur le système de fichiers HDFS (Hadoop Distributed File System) et MapReduce pour distribuer et gérer les calculs.

Dans Hadoop, le nœud maître est appelé le JobTracker et les nœuds esclaves sont appelés TaskTracker. Chaque nœud esclave va contenir les blocs de données en les répliquant. Le nœud maître connaît les emplacements des différentes répliques. Le nœud maître secondaire sert à effectuer des sauvegardes régulières du nœud maître afin de pouvoir le réutiliser en cas de problème.

Hadoop exécute une tâche de type MapReduce en commençant par diviser les données en entrée en bloc de données de même taille. Ensuite, chaque bloc est planifié pour être exécuté par un TaskTracker. Le processus d’assignement des tâches est implémenté comme un protocole de type « battement de cœur ». Cela signifie que le TaskTracker notifie le JobTracker que sa tâche est terminée afin que celui-ci lui assigne une nouvelle tâche à exécuter. Lorsque la fonction map est achevée, le système va regrouper toutes les paires intermédiaires et lancer une série de réductions pour produire le résultat final

Hadoop Distributed file system
Le HDFS est un système de fichiers distribué, extensible et portable développé par Hadoop à partir du GoogleFS. Écrit en Java, il a été conçu pour stocker de très gros volumes de données sur un grand nombre de machines équipées de disques durs banalisés. Il permet l'abstraction de l'architecture physique de stockage, afin de manipuler un système de fichiers distribué comme s'il s'agissait d'un disque dur unique.

Une architecture de machines HDFS (aussi appelée cluster HDFS) repose sur deux types de composants majeurs :

NameNode (nœud de nom) : ce composant gère l'espace de noms, l'arborescence du système de fichiers et les métadonnées des fichiers et des répertoires. Il centralise la localisation des blocs de données répartis dans le cluster. Il est unique mais dispose d'une instance secondaire qui gère l'historique des modifications dans le système de fichiers (rôle de backup). Ce NameNode secondaire permet la continuité du fonctionnement du cluster Hadoop en cas de panne du NameNode d'origine.

DataNode (nœud de données) : ce composant stocke et restitue les blocs de données. Lors du processus de lecture d'un fichier, le NameNode est interrogé pour localiser l'ensemble des blocs de données. Pour chacun d'entre-eux, le NameNode renvoie l'adresse du DataNode le plus accessible, c'est-à-dire le DataNode qui dispose de la plus grande bande passante. Les DataNodes communiquent de manière périodique au NameNode la liste des blocs de données qu'ils hébergent. Si certains de ces blocs ne sont pas assez répliqués dans le cluster, l'écriture de ces blocs s'effectue en cascade par copie sur d'autres DataNodes.

Chaque DataNode sert de bloc de données sur le réseau en utilisant un protocole spécifique au HDFS. Le système de fichiers utilise la couche TCP/IP pour la communication. Les clients utilisent le Remote Procedure Call pour communiquer entre eux. Le HDFS stocke les fichiers de grande taille sur plusieurs machines. Il réalise la fiabilité en répliquant les données sur plusieurs hôtes et par conséquent ne nécessite pas de stockage RAID sur les hôtes. Avec la valeur par défaut de réplication, les données sont stockées sur trois nœuds : deux sur le même support et l'autre sur un support différent. Les DataNodes peuvent communiquer entre-eux afin de rééquilibrer les données et de garder un niveau de réplication des données élevé.

Le HDFS n'est pas entièrement conforme aux spécifications POSIX, en effet les exigences relatives à un système de fichiers POSIX diffèrent des objectifs cibles pour une application Hadoop. Le compromis de ne pas avoir un système de fichiers totalement compatible POSIX permet d'accroître les performances du débit de données.

Le HDFS a récemment amélioré ses capacités de haute disponibilité, ce qui permet désormais au serveur de métadonnées principal d’être basculé manuellement sur une sauvegarde en cas d'échec (le basculement automatique est en cours d'élaboration). Les NameNodes étant le point unique pour le stockage et la gestion des métadonnées, ils peuvent être un goulot d'étranglement pour soutenir un grand nombre de fichiers, notamment lorsque ceux-ci sont de petite taille. En acceptant des espaces de noms multiples desservis par des NameNodes séparés, le HDFS limite ce problème.



Algorithme Map Reduce
Un cluster MapReduce utilise une architecture de type Maître-esclave où un nœud maître dirige tous les nœuds esclaves.

MapReduce possède quelques caractéristiques :


 * Le modèle de programmation du MapReduce est simple mais très expressif. Il possède deux fonction, map et reduce, qui peuvent être utilisées pour de nombreux types de traitement des données, les fouilles de données, les graphes… Il est indépendant du système de stockage et peut manipuler de nombreux types de variable.
 * Le système découpe automatiquement les données en entrée en bloc de données de même taille. Puis, il planifie l’exécution des tâches sur les nœuds disponibles.
 * La parallélisation est invisible à l'utilisateur afin de lui permettre de se concentrer sur le traitement des données.

Une fois qu'un nœud a terminé une tâche, on lui assigne un nouveau bloc de données. Grâce à cela, un nœud rapide fera beaucoup plus de calculs qu'un nœud plus lent. Le nombre de tâches Map ne dépend pas du nombre de nœuds, mais du nombre de blocs de données en entrée. Chaque bloc se fait assigner une seule tâche Map. De plus, toutes les tâches Map n'ont pas besoin d'être exécutées en même temps en parallèle, les tâches Reduce suivent la même logique.

Par exemple, si des données en entrée sont divisées en 400 blocs et qu'il y a 40 nœuds dans le cluster, le nombre de tâches Map sera de 400. Il faudra alors 10 vagues de Map pour réaliser le mapping des données.



Exemple d'Amazon EMR
Amazon Elastic MapReduce (Amazon EMR) est un service Web qui permet aux commerces, aux chercheurs, aux analystes de données et aux développeurs de traiter de grandes quantités de données de manière simple et économique. Il utilise un logiciel hébergé Hadoop s'exécutant sur l'infrastructure d'Amazon Elastic Compute Cloud (Amazon EC2) et d'Amazon Simple Storage Service (Amazon S3) à l'échelle du Web.

Fonctionnalités
Amazon Elastic MapReduce lance une implémentation Hadoop du logiciel intégré MapReduce sur des instances Amazon EC2, sous-divisant les données dans un flux de travail, en plus petits segments de façon à ce qu'elles soient traitées en parallèle (la fonction "Map") et finalement recombinant les données traitées dans la solution finale (la fonction "Reduce"). Amazon S3 sert de source aux données pour les analyser et de destination de sortie pour les résultats finaux.

Éléments principaux du service

 * Elastic : Amazon Elastic MapReduce permet d'utiliser autant ou aussi peu d'instances de calcul possible en faisant fonctionner Hadoop. Il est possible de passer une commande d'une, de centaines, ou même de milliers d'instances pour traiter des giga octets, des tera octets ou même des péta octets de données et de modifier le nombre d'instances alors que votre flux de travail fonctionne.


 * Fiable : Amazon Elastic MapReduce est créé sur une infrastructure Amazon hautement fiable et a ajusté la performance de Hadoop spécifiquement sur l'environnement d'infrastructure d'Amazon. Le service surveille aussi l'exécution de votre flux de travail – réessayant des tâches non réussies, fermant des instances problématiques et mettant en services quelques nœuds pour remplacer ceux qui ont échoué.


 * Sécurité : Amazon Elastic MapReduce configure automatiquement les réglages du pare-feu Amazon EC2 qui contrôle l'accès du réseau vers et entre les instances qui font fonctionner votre flux de travail. Job Flows peut aussi être lancé dans Amazon Virtual Private Cloud (Amazon VPC ), vous permettant d'isoler vos instances de calcul en spécifiant la plage IP que vous souhaitez utiliser et vous connecter à votre infrastructure informatique existante à l'aide du VPN encodé selon la norme de l'industrie IPsec VPN.

Conclusion
Les big data représentent des pétaoctets de données, provenant des réseaux sociaux, non structurés. Ces données sont analysées, et interprétées à des fins économiques,marketing et commerciales. Pour cela il existe des outils puissants tels que hadoop. Hadoop utilise un système de fichier distribué, HDFS qui distribue les données à analyser dans plusieur noeuds. (noeud maîtres et noeuds esclave). Par la suite, elles sont triées puis regroupées grâce à l'algorithme MapReduce où la fonction Map permet de transformer les données (découper) et la fonction Reduce qui permet de fusionner les données triées.