Spark 1.4.6

  • -

Spark 1.4.6

Faisons le point sur Spark.

Qu’est ce donc?

Spark est un moteur de calcul générique pour le traitement de données volumineuses…

Que faire avec Spark?

Si on s’intéresse de près au traitement de données hétérogènes, Spark permet de les unifier, de les mémoriser et de les interroger en s’appuyant sur une connectivité standard (jdbc, odbc).
Par exemple si l’on dispose de fichiers .cvs et de différents systèmes de bases de données, il est rapide et facile de les mettre en œuvre en utilisant les APIs, notamment les propriétés de l’objet DataFrame et d’en sortir un résultat d’analyse au format json.

Spark s’utilise au travers du langage Scala, Python ou Java.

En plus des APIs dédiés à la manipulation de données, il existe des APIs pour le machine learning, le streaming, l’analyse graphique.

Il existe également une quantité importante de packages pour Spark.

Architecture

Quand on évoque Spark on se dit avoir affaire à la solution “in memory open source” de Hadoop et on peut faire rapidement l’amalgame de penser que l’on s’appuie sur les ressources du cluster hadoop.

En fait, Spark se déploie selon différents modes:

  • Amazon EC2
  • Standalone
  • Mesos
  • Yarn

Au regard de ces options de déploiement, on constate que l’implémentation de Spark dans un environnement Hadoop peut utiliser tout ou partie (ou aucune) des ressources du cluster Hadoop.

Spark peut être déployé sur un cluster ou en standalone indépendamment d’autres composants.

Oui mais Hadoop dans tout cela?

Au même titre que H-Base, Hive, Cassandra et autres composants reposant sur HDFS, Spark sait accéder les données du cluster Hadoop.

… Mais c’est bien sûr !

Selon le mode de déploiement qui a été choisi, Spark a la capacité d’exploiter le cluster manager qu’on lui indique :

  • Yarn, dans le contexte d’un cluster Hadoop
  • Mesos, dans un contexte d’un cluster Mesos
  • Spark dans son contexte standalone (approche q & d).

Le cluster manager se charge d’allouer les ressources auprès des nœuds du cluster.

Au lancement, Spark identifie les noeuds du cluster qui lui sont alloués et leur distrubue le code et les données de l’application. Le “Driver” distribue la matière nécessaire au traitement auprès de “Workers”.

Recommandations

Pour préserver des performances élevées et éviter de perturber la planification du Driver, il est recommandé d’utiliser Spark en mode standalone et de faire en sorte que les Workers soient au plus “près” du Driver, sur le même réseau local par exemple.

Si on envisage de déployer Spark en mode Yarn sur un cluster distribué, réparti dans différentes régions, on devra s’assurer de la fiabilité des communications réseaux et de la stabilité des nœuds du cluster.

Pendant une phase de calcul de Spark on évitera d’enclencher une opération de maintenance sur un ou plusieurs nœuds en les rendant inaccessibles ou en les amputant de leurs ressources.