EclairJS – Un peu de Spark dans les Web Apps

Présentation de David Fallside, IBM. Les images sont issues des slides de présentation.

Introduction

Le développement d’applications Web est passé d’un environnement Java vers des environnements Javascript avec NodeJS qui fournit des outils simples et riche à la fois avec NPM.

EclairJS est une librairie NodeJS fournissant des binding sur une application Spark :

  • Un RDD est représenté par un object JS rendu immutable
  • Les opérateurs Spark sont mappés de manière transparente en fonctions JS (ex: flatMap, filter, …)
  • Les fonctions JS mappées aux opérateurs Spark retournent des promesses

L’utilisation des promesses permet d’émuler l’utilisation du DAG par Spark :

  • Les transformations renvoient un nouvel objet RDD et sont ajoutés au DAG
  • Les actions exécutent le DAG afin de récupérer un résultat
EclairJS - Code semantics

EclairJS – Code semantics

Architecture

EclairJS est composé de deux éléments :

  • Le client: API Javascript, installable avec NPM
  • Le serveur: Javascript fournissant un mapping JS/Java et capable de tourner dans la JVM avec le projet Oracle Nashorn

Le serveur utilise également Jupyter Notebook afin d’exposer un point d’entrée WebSocket entre le client et le serveur.

EclairJS - Architecture

Performance

En terme de performances, l’API Spark native en Java est bien plus rapide, cependant EclairJS est deux fois plus rapide que l’API PySpark, ce qui en fait une alternative tout à fait viable.

EclairJS - Performances

Conclusion

EclairJS est un bon projet, stable et utilisable, si vous avez besoin d’intégrer des jobs Spark dans une web app.

Par |2018-06-05T22:37:06+00:00July 17th, 2016|Évènements|0 commentaire

À propos de l'auteur :

César Berezowski est un architecte solution BigData & Hadoop et un Data Engineer avec 3 ans d’expérience sur Hadoop et les systèmes distribués. Il a conçu, développé et opéré des workflows d’ingestion de données et des services temps réels tout en accompagnant ses clients dans la définition de leurs besoins et dans leur mise en application. Il est polyvalent sur les plateformes BigData, de la planification, la conception et l’architecture du déploiement de clusters, l’administration, la maintenance ainsi que le prototypage et l’industrialisation d’applications en collaboration avec les utilisateurs métiers, les analystes, les data scientists, les ingénieurs et les équipes d’exploitation. Il aime découvrir de nouvelles choses et expérimenter de nouvelles technologies au-delà de son travail. Il est aussi doté d’une expérience en tant que formateur facilitant le transfert de connaissance et la formation des équipes.

Laisser un commentaire