• Aucun résultat trouvé

Depuis plus de 10 ans, Apache Hadoop est considéré comme la principale technologie de traitement des données massives. Il s’agit effectivement d’une solution adaptée pour le traitement de larges ensembles de données.

Pour les calculs "one-pass", MapReduce est effectivement très efficace, mais se retrouve moins pratique pour les cas d’usage nécessitant des calculs multi-pass et des algorithmes. Pour cause, chaque étape du traitement de données est décomposée entre une phase Map et une phase Reduce (voir figure3.22).

Entre chaque étape, les données doivent être stockées dans le système de fichier distribué (HDFS) avant que la prochaine étape ne puisse débuter. Dans la pratique, cette approche se révèle très lente. De plus, les solutions Apache Hadoop incluent généralement des "clusters" difficiles à configurer et à gérer. Plusieurs outils doivent également être intégrés pour les différents cas d’usage autour des données massives. Pour le Machine Learning, il faudra par exemple utiliser Mahout. Pour le traitement de flux de données, il sera nécessaire d’intégrer Storm23

. Ce qui rend complexe l’utilisation de la technologie.

23. Storm est un système informatique distribué qui fonctionne en temps réel, de type FOSS (Free Open Source System), développé par Apache Software Foundation).

Figure3.29: Courbe ’Hype" du Gartner pour les 2017

Apache Spark24 est une nouvelle solution (un framework aussi) qui permet d’offrir une alternative

à MapReduce pour cas d’usage nécessitant un moteur de traitement parallèle de données, pour des analyses de grande envergure.

Le principal avantage de Apache Spark est sa vitesse, puisqu’il permet de lancer des programmes 100 fois plus rapidement que Hadoop MapReduce "in-memory", et 10 fois plus vite sur disque. Il est également facile à utiliser, et permet de développer des applications en Java, Scala, Python et R. Son modèle de programmation est plus simple que celui d’Apache Hadoop.

Grâce à plus de 80 opérateurs de haut niveau, le logiciel permet de développer facilement des applications parallèles.

Un autre avantage d’Apache Spark est sa généralité. Il fait à la fois office de moteur de requêtes SQL (Spark SQL), de logiciel de traitement de données en flux (Spark Streaming), et de système de traitement par graphes (GraphX) (voir figure3.28).

Apache Spark regroupe aussi une grande quantité de bibliothèques d’algorithmes (MLib) pour le Machine Learning. Ces bibliothèques peuvent être combinées en toute simplicité au sein de la même application.

Figure3.30: Mode de fonctionnement d’un Resilient Distributed Datasets -RDD avec Spark

La figure3.28 synthétise son architecture avec ces quatre librairies : Spark SQL, Spark ML, GraphX et Spark Streaming.

L’un des grands principes de Spark est l’utilisation des Resilient Distributed Datasets (RDD). Un RDD représente une partition des données que l’utilisateur va utiliser pour ses calculs. Cette partition est mise en mémoire (RAM), ainsi cela évite au système de faire des lectures disque à chaque fois qu’une donnée est nécessaire à un calcul. C’est en effet les lectures sur disque à répétition qui ralentissent Hadoop. Si la partition demandée est trop grande, le système ira chercher certaines données sur le disque. Également, il est possible de créer de nouveaux RDDs en en modifiant d’autres. L’API permet également de sauvegarder des RDDs dans HDFS.

Le moteur Apache Spark25 peut être exécuté sur des clusters Hadoop reposant sur le gestionnaire de ressources YARN, ou sur Mesos. Il est également possible de le lancer sous forme autonome ou sur le "cloud" avec le service Elastic Compute Cloud de Amazon. Il permet d’accéder à diverses sources de données comme HDFS, Cassandra, Hbase et S3. Il peut donc être totalement décorrélé du monde Apache Hadoop.

L’autre point fort de ce moteur est sa communauté massive d’utilisateurs et développeurs. Depuis 2009,

plus de 1000 développeurs ont contribué au projet Apache Spark, qui est utilisé par un grand nombre d’entreprises pour le traitement d’ensembles de données volumineux. IBM a même annoncé en 2015 un centre de développement commun avec la communauté Apache Spark26

, preuve de son intérêt pour cette technologie. Quelques mois après IBM a abandonné son développement de distribution Apache Hadoop (IBM BigInsight)27

, pour s’associer avec HortonWorks, preuve de sa confiance en l’adoption massive de cette technologie dans le domaine des données massives. IBM intégre Apache Spark désormais dans tous ces outils autour de la science des données (Data science) et des données massives28

, au travers de son offre Watson Studio notamment.

Plutôt qu’un remplacement d’Apache Hadoop, Apache Spark peut être considéré comme une alternative à Hadoop MapReduce ou un complément. Spark n’a pas pour vocation de remplacer Hadoop, mais de fournir une solution unifiée et compréhensible pour gérer différents cas d’usage liés aux données massives. Il n’y a donc aucun intérêt à vouloir les opposer.

Il est intéressant de regarder l’état des lieux d’utilisation et de perception de Apache Hadoop et de Apache Spark. La courbe "Hype" du Gartner (dont nous avons décrit la lecture dans la section3.6) de 2017 3.13, positionne Apache Hadoop dans la partie de "désillusion", en attente de voir comment les organisations vont industrialiser (ou pas) cette technologie. Apache Spark se situe à la fin de la zone de "grande attente" du marché. La maturité des deux technologies n’étant pas identique, de l’adoption et l’intégration de Spark par les acteurs du marché des données massives, dépendra son évolution.

Au delà des outils, composants et autres frameworks liés à la mouvance du monde Apache Hadoop, nous étudions dans la section suivante l’impact que ce "nouveau" monde des technologies des données massives a sur les systèmes décisionnels existants.