Compte rendu du Spark Summit 2017 (Dublin)

Les 25 et 26 Octobre derniers, nous nous sommes rendus à Dublin afin d’assister au Spark Summit, grand-messe incontournable du Big Data organisée chaque année en Europe et aux États-Unis par Databricks (la société fondée par les créateurs d’Apache Spark). De très nombreux intervenants de tous horizons (industriels, académiques, éditeurs, contributeurs, etc.) étaient au rendez-vous. Au total : plus de 1200 participants, deux journées de conférences, plus d’une centaine de talks (créneaux de 30 minutes) et jusqu’à six présentations en parallèle. Au bout du compte, une grande variété de sujets ont été abordés et nous allons chercher ici à vous présenter un condensé de la conférence, en tâchant de mettre en lumière les sujets ayant retenu notre attention. Au programme : Machine Learning, Streaming, annonces de produits, et de nombreux retours du terrain.

Comme le veut la coutume, c’est Matei Zaharia, créateur de Spark et CTO de Databricks, qui ouvre le bal et nous présente les grands thèmes sur lesquels Databricks mise pour l’avenir de Spark. Deux grands sujets sont abordés : le Deep Learning et le Streaming. L’idée présentée par Matei dans sa keynote, et qui sera déroulée tout au long de la  conférence, est que ces technologies présentent un intérêt pour de nombreuses entreprises, mais sont, aujourd’hui encore, considérées comme trop complexes pour être adoptées plus largement. Databricks veut ainsi déconstruire le mythe selon lequel le Machine Learning et le Streaming Big Data sont réservés aux géants du web et maîtrisés par une poignée d’experts.

Côté Machine Learning plusieurs obstacles sont identifiés et notamment :

  • la difficulté à réunir suffisamment de puissance de calcul
  • la rareté des compétences en data science
  • la complexité à constituer des jeux de données labellisés pour l'entraînement des modèles

L’éditeur promet de pallier ces manques et investit, à titre d’exemple, dans des API très simples et de haut niveau pour rendre le Machine Learning accessible à tous.

Sur la partie Streaming, des travaux ont été faits notamment sur l’API de Structured Streaming pour unifier la logique des traitements batch et S_treaming_ et ainsi épargner aux développeurs toute la complexité liée aux architectures de flux.

Dans les deux cas, la volonté est la même : permettre aux développeurs de se concentrer sur des problématiques métier et faciliter ainsi l’adoption de Spark.

Le CEO de Databricks, Ali Ghodsi, profite de la keynote d’introduction pour annoncer la sortie de Delta, un nouveau produit qui vise à réconcilier les deux principales approches d’architecture de stockage (Datalake et Data Warehouse), tout en les rendant compatibles avec les flux de données “temps réel” (S_treaming)_.

Michael Armbrust, développeur Databricks, lors de la démo du produit DeltaMichael Armbrust, développeur Databricks, lors de la démo du produit Delta

Au delà des orientations affichées et des annonces effectuées par Databricks durant les conférences d’ouverture, quatre thèmes récurrents ont émergé au long de cette conférence :

  • le Machine Learning,
  • le Streaming,
  • l’effervescence de l’écosystème Spark,
  • l’axe commercial de Databricks.

Nous allons tenter de détailler un peu plus chacun de ces sujets par la suite.

Machine Learning et Deep Learning en voie de démocratisation

Pour ceux qui n’étaient pas encore au courant, la data science est un sujet à la mode et le Spark Summit était là pour nous le rappeler et pour montrer que Databricks compte bien être de la partie. Le Machine Learning et le Deep Learning ont tenu une place prépondérante lors de cette conférence avec plus d’une vingtaine de talks sur la question. Cela témoigne certainement de l’intérêt de la communauté pour le sujet, mais également de la volonté de Databricks de démocratiser le Machine Learning (et notamment les techniques de Deep Learning) ainsi qu’à faciliter le passage en production des modèles.

La première démonstration a été faite dès la keynote d’ouverture par Sue Ann Hong : en combinant les librairies Spark MLlib et Spark Deep Learning, il est possible d’utiliser sur Spark un réseau de neurones pré-entraîné pour la reconnaissance d’image (via la technique du transfer learning) et de le coupler à un algorithme de clustering (en l'occurrence K-NN), le tout pour permettre de construire un algorithme de recommandation de paires de chaussures en 7 lignes de codes et sans donnée d’entraînement.  Une autre session de Databricks est également dédiée à la présentation en détail de l’API Spark Deep Learning et montre que ces algorithmes sont aujourd’hui bien intégrés à Spark.

Par ailleurs, nous avons pu constater que PySpark (l’API Python de Spark) était à l’honneur dans beaucoup des présentations liées au Machine Learning alors que le Scala est généralement privilégié pour les traitements plus “classiques”. Cela permet une adoption plus large par la communauté data-scientist plutôt habituée au Python et facilite l’intégration avec les librairies généralement utilisée dans ce domaine : Scikit-Learn, Keras, TensorFlow… Plusieurs exemples sur la question : une présentation de reconnaissance d’image avec Spark et Keras et un exemple d’intégration avec TensorFlow.

Quelques retours d’expérience qui nous ont semblé intéressants : Applying Multiple ML Pipelines, un talk qui propose une méthode pour répondre à un besoin bien spécifique : l'entraînement et l’application de plusieurs centaines de modèles en parallèle avec Spark. Autre intervention intéressante : BBVA qui présente un problème de classification supervisé dans le secteur bancaire résolu avec Spark (voir Classifying Text in Money Transfers).

Structured Streaming : Osez la prod !

Le Streaming était cette année encore à l’honneur au Spark Summit et a occupé une bonne partie de la keynote d’ouverture de Matei Zaharia.

Databricks assume son positionnement et entend convaincre la communauté que sauter le pas est plus facile que jamais. Plus particulièrement sur le fait qu’il permet de traiter la donnée exactement comme le mode batch, le tout sans changer le code.

En bref, une volonté affichée de rassurer sur la maturité du Structured Streaming et de sa capacité d’être emmené jusqu’en production.

Via une track dédiée, plusieurs conférences ont souligné les propriétés de tolérance à la panne et de scalabilité des architectures de Streaming, ainsi que l’intégration avec Delta, le nouveau produit annoncé par Databricks. Dans sa présentation “Easy, Scalable, Fault Tolerant Stream Processing with Structured Streaming in Apache Sparkpartie 1 et partie 2, Tathagata Das, commiter Databricks sur la partie Structured Streaming, met l’accent sur la simplicité de mise en place du Streaming et présentent les techniques de développement d’une application fault-tolerant, grâce au checkpointing, au windowing, au watermark et au monitoring.

De nombreux patterns d’architecture pour répondre aux besoins du Streaming ont été présentés, notamment au niveau des persistances et partages d’états ainsi que la tolérance à la panne :

What’s next?

Databricks continue de concentrer des efforts de développement sur le Streaming.

Dès la keynote d’introduction, Matei Zaharia annonce la volonté d’ajouter la possibilité de faire du Streaming faible latence en plus du système micro-batch actuel. Le détail de cette évolution est présentée ici : https://issues.apache.org/jira/browse/SPARK-20928

Spark : un écosystème en pleine effervescence

Spark est un écosystème bien en vie qui évolue au rythme soutenu des développements de Databricks et des contributions variées de la communauté.

Les investissements de Databricks poursuivent plusieurs objectifs : faciliter l’usage et étendre les fonctionnalités du framework d’une part en ajoutant de nouvelles API comme on l’a vu avec le Deep Learning et le Streaming dans les paragraphes précédents. Mais aussi poursuivre l’optimisation du cœur de la librairie. Nous pouvons citer à titre d’exemple, le talk de Wenchen Fan (Databricks) qui présente des optimisations de gestion de la mémoire côté spark core, ou encore la présentation de Karps de Tim Hunter (Databricks). Karps est une librairie expérimentale multi-usages qui a (entre autre) pour objet de faciliter la lecture et l’optimisation de pipelines de transformation de données (ex : préférer le single pass sur la donnée lorsque c’est possible, éviter le caching inutile des RDD, etc.). Le talk démontre avec efficacité les limites actuelles de la console Spark (Spark UI) et présente de manière convaincante les gains d’une librairie telle que Karps.

Le Spark Summit sert également de tribune aux nombreux contributeurs du projet et les aspects explorés par la communauté sont nombreux. Certains talks promettent de rendre le développement plus accessible grâce à des outils permettant d’abstraire une partie de la complexité des jobs Spark. La présentation de Dr Elephant par Linkedin, qui met à disposition des développeurs un outil facilitant le tuning de jobs Spark pour qu’ils soient mieux optimisés va dans ce sens. D’autres présentent des développements spécifiques à un domaine métier particulier, comme on peut le voir avec la présentation de la librairie Variant-Apache Spark par Piotr Szul (ingénieur chez Data61 à CSIRO Research), visant à apporter des optimisations spécifiques au traitement de données biologiques. Enfin, là encore, la data science n’est pas en reste et plusieurs présentations investissent le sujet. On peut par exemple mentionner BMW qui présente son API de sélection de variables ou encore Red Hat qui nous enseigne comment implémenter efficacement un algorithme de Machine Learning avec Spark dans un talk qui nous a paru clair et intéressant : Building Machine Learning Algorithms on Apache Spark.

Enfin, les éditeurs de solution Big Data tentent également de tirer leur épingle du jeu et certains n’hésitent pas à contribuer sur les aspects fondamentaux de la libraire. Hortonworks présente notamment les fruits d’un travail de recherche portant sur l’optimisation des performances des calculs matriciels lors d’une présentation résolument technique.

On l’aura compris, Spark bénéficie à l’heure actuelle d’une véritable effervescence et le framework poursuit son évolution au gré des transformations apportées par Databricks et par la communauté.

Databricks : l’expansion d’une plateforme Cloud

L’un des points forts de cette édition a été l’annonce du tout nouveau produit Databricks Delta. Delta a été présenté comme l’outil qui combine le meilleur des data warehouses (requêtes transactionnelles, accès concurrents) et des datalakes (scalabilité, faible coût) sans les inconvénients (données mal structurées, obsolètes, la lenteur des ETL, les erreurs en cascade lors de l’échec d’un job...). Delta serait un outil qui favorise grandement les traitements en Streaming, qui vient au dessus d’Amazon S3 et stocke la donnée dans des formats comme Parquet ou ORC.

La conférence est restée assez haut niveau et floue côté technique. Nous avons trouvé assez difficile de se forger un avis sur la présentation qui a été faite. L’accent a été placé sur l’intégration de Delta par rapport à la Unified Analytics Platform. En effet, Delta semble bien intégré, avec une compatibilité avec les traitements batch et Streaming de Spark, et la visualisation de résultats de jobs Spark avec des métriques. Ou tout du moins c’est ce qui ressorti de la courte démonstration de M. Armburst.

L’arrivée de Delta s’inscrit dans la vision poussée par Databricks, à savoir la mise en avant de sa plateforme cloud. Certaines conférences, comme celle de Hotels.com ou de Shell, présentaient des retours d’expérience qui mettent en avant l’utilisation de cette plateforme, et la présentent comme l’outil qui leur a permis de démystifier Spark, de leur simplifier les développements et d’arriver jusqu’en production. Thème récurrent, nous avons senti en filigrane tout au long de ces 2 jours de conférence que la question de “Comment vulgariser Spark et l’écriture de jobs, et comment mettre le fine-tuning à la portée du plus grand nombre ?” était au cœur des préoccupations de Databricks.

Delta est sorti en version bêta, toutes les informations pour le tester et mettre les mains dans le cambouis sont sur le site de Databricks.

Conclusion

Vous l’aurez compris, Databricks concentre ses efforts pour rendre Spark le plus accessible possible et cherche à montrer que ses extensions autour du Machine Learning et du Streaming sont aujourd’hui matures et à portée de tous. En particulier, l’entreprise californienne veut faire de Spark la brique centrale des SI ayant des problématiques de Big Data via son produit Databricks Delta. Néanmoins cette annonce nous met l’eau à la bouche sans pour autant beaucoup en dévoiler. A suivre de de près.

La multitude de retours d’expérience présentés pendant le Spark Summit semble en tout cas montrer que la communauté est aujourd’hui très active autour de Spark.

En supplément, certains talks ont retenu notre attention et nous ont semblé valoir le coup d’œil :