Forces et faiblesses de Spark et Elasticsearch

Nous avons partagé les enjeux liés à la techno du Serverless dans le précédent article. Nous allons creuser aujourd’hui les solutions les plus connues dans le domaine du traitement de données à grande échelle, Spark et Elasticsearch.

Spark (ou Apache Spark) est un framework open source de calcul distribué. Il s’agit d’un ensemble d’outils et de composants logiciels structurés selon une architecture définie. Ce produit est un cadre applicatif de traitements big data pour effectuer des analyses complexes à grande échelle. Spark a été développé à l’université de Berkeley en 2009. À l’origine, son développement était une solution destinée à accélérer le traitement des systèmes Hadoop. Les développeurs mettent notamment en avant la rapidité du produit en termes d’exécution des tâches par rapport à MapReduce. Spark réalise une lecture des données au niveau du cluster (grappe de serveurs sur un réseau), effectue toutes les opérations d’analyse nécessaires, puis écrit les résultats à ce même niveau. Malgré le fait que les tâches s’écrivent avec les langages Scala, Java et Python, il utilise au mieux ses capacités avec son langage natif, Scala. De ce fait, là où le MapReduce de Hadoop travaille par étape, Spark peut travailler sur la totalité des données en même temps. Il est donc jusqu’à dix fois plus rapide pour le traitement en lots et jusqu’à cent fois plus rapide pour effectuer l’analyse en mémoire. Spark est aujourd’hui leader de ce type de solutions. Cette solution versatile permet de requêter les données en SQL. On peut coder n’importe quoi en termes de data, requêter des images et faire du deep learning dessus. C’est la boite à outil clef. Spark est très flexible. Il faut provisionner son cluster au préalable. De nombreuses entreprises travaillent pour faciliter le scaling. Cela reste malgré tout un outil assez lourd, qui montrera ses limites pour avoir une faible latence. A la base imaginé pour tourner sur Hadoop,  Spark s’est progressivement ouvert avec le cloud pour aller chercher les données sur S3, ce qui devient très commun de nos jours. On peut aussi combiner S3 et HDFS avec Spark.

Elasticsearch est un logiciel utilisant Lucene pour l’indexation et la recherche de données. Lucene est une bibliothèque open source écrite en Java qui permet d’indexer et de chercher du texte. Il est utilisé dans certains moteurs de recherche. Créé en 2010 par Shay Banon, Elasticsearch fournit un moteur de recherche distribué et multi-entité à travers une interface REST (indexation et moteur de recherche). Cette interface permet donc à n’importe quel langage d’accéder aux données. Les données échangées sont au format JSON. C’est un logiciel écrit en Java distribué sous licence Elastic. L’éditeur propose aussi une version sous Server Side Public License ainsi que la possibilité de souscrire à une offre Saas. Elasticsearch est devenu le serveur de recherche le plus populaire chez les professionnels, suivi par Apache Solr qui utilise aussi Lucene. Il est associé à deux autres produits libres, Kibana et Logstash, qui sont respectivement un visualiseur de données et un ETL (initialement destiné aux logs). On appelle souvent le trinôme, “suite ELK”. Elasticsearch est open source, mais les sources sont complexes. La société Elastik propose une gamme d’outils complémentaires performants. Il offre une bonne optimisation du cache et une bonne capacité d’agrégation. Le cache permet d’afficher les résultats de plus en plus rapidement. La première analyse est un peu plus lente, mais les suivantes sont plus rapides. Elasticsearch est basé sur un cluster. Il prend du temps à démarrer. Le modèle de données prend comme hypothèse que le modèle de données est stable. Très interactif.

En parallèle de ces deux solutions leaders, nous pourrons également faire appel à d’autres solutions plus spécialisées, basées sur des clusters: Presto et Impala ont la fonctionnalité SQL, mais pas la boîte à outil Spark. Toutes deux ont des performances similaires.  

Nous aborderons dans le prochain article, Athena, solution d’Amazon.

Vous devriez également aimer​

Le serverless, une approche efficace à bas prix

Nous avions introduit dans l’article précédent ce qu’était la notion de moteur de requête de dashboarding. Nous allons à présent nous concentrer sur une nouvelle notion, plus proche des ressources matérielles, le serverless. Qu’est-ce que le serverless?

“Buzz Query”, un moteur de requêtes pour dashboarding bigdata serverless

L’histoire commence par la rencontre entre l’équipe DataPy et Rémi Dettai… Rémi est un ingénieur de talent spécialisé en Data et Cloud. Rémi a eu de nombreuses expériences dans les domaines de la tech, chez des industriels comme Continental ou encore dans des startups.

En route vers l’automatisation: iceberg, procrastination et nœud...

Quels sont les freins et accélérateurs du DevOps ? Iceberg Lorsque l’on évoque l’automatisation, le top management dispose trop souvent de peu d’indicateurs sur le volume de taches automatisables dans son département. En effet, les collaborateurs ont...