Recherche

Coder's IO

Tag

Python

Livre : Learning Spark

Auteurs : Holden Karau, Andy Konwiski, Patrik Wendell, Matei Zaharia
Pendant ces derniers mois j’ai suivi pas mal de MOOC sur des sujets liés au Big Data. Le dernier en date était une introduction au Big Data avec Spark. Pour aller plus loin, je me suis acheté le livre Learning Spark afin d’approfondir le sujet.

Je n’ai pas encore tout à fait terminé la lecture de l’ouvrage, mais je peux déjà donner mes impressions sur les trois quart du livre.

Le livre est très bien, il est un bon complément à cours en ligne que j’ai suivie. Les premiers chapitres du livre se concentrent sur les concepts fondamentaux de Spark. Cette première partie permet de fixer les notions vue d’un point de vue pratique pendant le cours.

Ensuite ce sont les problématiques de chargement et de sauvegarde de données. C’est un point essentiel naturellement car sans données Spark ne sert pas à grand chose :P.

Le chapitre suivant est consacré à la programmation avancée avec Spark. On découvre des tips de programmation que l’on peut mettre en oeuvre selon certains de use cases.

Lorsque l’on arrive à ce moment du livre, on a déjà une vision très claire de comment développer avec Spark.

Spark est un outil permettant de traiter massivement des données dans un environnement distribué. La deuxième partie du livre commence en abordant les capacités de Spark à fonctionner dans un environnement clusterisé et également s’intégrer avec des outils de déploiement comme Meso ou Yarn.

Le livre continue son exploration en abordant les problématiques de configuration avancées et la façon de faire du debugging de programme écrit avec Spark.

La dernière partie du livre est consacrée à la présentation de 3 modules de Spark. Pour l’instant seul le module principal : Spark Core avait été abordé.

Les 3 modules sont

  • Spark SQL : Librairie permettant de requêter des sources de données en se basant sur la – -language SQL.
  • Spark Streaming : Librairie permettant de traiter des flux en temps réel
  • Spark MLib : Librairie dédiée au Machine Learning
    Le tour d’horizon proposé par l’ouvrage donne une vision très claire sur Spark. Le spectre couvert est large et approfondi et permet de démarrer très rapidement un projet.

Bien que l’outil soit écrit en Scala, l’outil est polyglotte. Il est possible d’écrire ses programmes sur la base de 3 langages :

  • Scala
  • Python
  • Java

Etant complètement partial… Je préfère écrire mes programmes en Scala 😉 plus concis, expressif, etc… (troll ;))

En résumé, un très bon ouvrage qui se lit très bien. Pas de prérequis nécessaire pour lire ce livre. Je recommande se livre à qui veut se plonger dans l’univers de Spark!

Suite à la lecture de ce livre, j’ai commandé le livre : Advanded Analytics with Spark pour aller plus loin.

Vert.x

 

je vais vous présenter le projet Vert.x. Je suis tombé dessus par hasard lors d’une veille technique quotidienne au détour d’un post sur un blog… (vous me suivez ? 😉 )

Qu’est ce que Vert.x?
C’est un framework qui peut se résumer par les termes suivants : 

– moins d’effort
– polyglotte,
– scalable,
– simple,
– concurrence.

La première release 1.0 a vu le jour le 25 avril 2012 (aujourd'hui, la version courante est  1.2.3).
Ce projet est sponsorisé par VMware.
Lors de sa sortie en version béta, le projet est devenu le 32ieme projet Java suivi sur Github, juste derrière JBoss AS (ceci grâce à un article publié sur infoQ).

Pour se faire une idée rapide, c’est un outil très proche de Node.js dans l’état d’esprit. C’est à dire qu’au travers de quelques lignes de code, vous avez un serveur HTTP fonctionnel et très performant.

Pour être tout à fait honnête, je ne connais que les aspects théoriques de Node.js. Par conséquent, je ne vais pas pousser plus loin la comparaison et me focaliser sur Vert.x

Plus concrètement…
Vert.x est un framework d'application événementielle qui fonctionne sur la JVM. 

Il est polyglotte : vous avez le choix  du langage avec lequel vous souhaitez travailler : 
– Javascript
– CoffeeScript
– Ruby
– Python
– Groovy,
– ….. et Java.

Vous avez aussi la possibilité de mixer les langages.

Il est simple : quelques lignes suffisent pour obtenir une application robuste et scalable : 

import org.vertx.java.core.Handler;
import org.vertx.java.core.http.HttpServerRequest;
import org.vertx.java.deploy.Verticle;

public class Server extends Verticle {
    public void start() {
        vertx.createHttpServer().requestHandler(new Handler<HttpServerRequest>() {
            public void handle(HttpServerRequest req) {
                String file = req.path.equals("/") ? "index.html" : req.path;
                req.response.sendFile("webroot/" + file);
            }
        }).listen(8080);
    }
}

Il est scalable : il se base sur le modèle de programmation asynchrone avec des IO non-bloquantes.

La concurrence simplifiée : le framework offre la possibilité de coder comme dans un environnement mono-threadé.

Il est reparti : La communication entre les différents composants d’une application basée sur Vertx se fait via un bus d’évènement distribué. La communication se fait entre toutes les instances du serveur ainsi que la partie cliente. Cette gestion d’évènements est basée sur le modèle d’acteur.

Il supporte : 
– websokets,
– SockJS
– communication HTTP/HTTPS
– TCP / SSL

Vert.x offre un système d’extension via les modules. Un repo public est disponible sur Github.

Autres fonctionnalités en vrac : 
– Gestion de tâches planifiées,
– Fichier de conf rédigé en JSON,
– Module de définition de route,
– Manipulation du système de fichiers.
– etc…

Comment utiliser vert.x ?
Vert.x peut être utilisé comme une plateforme autonome ou alors embarqué dans une autre application.

La documentation est assez complète. La liste de discussion est très fréquentée et les questions trouvent rapidement des réponses.
Ce projet est encore jeune mais propose déjà des fonctionnalités avancées. 

Je pense que c’est un projet sur lequel il faut garder un oeil et qu’il ne faut pas hésiter à tester.

#java #vertx #vmware #groovy   #Javascript #CoffeeScript #Ruby #Python #Groovy ,

Créez un site Web ou un blog gratuitement sur WordPress.com.

Retour en haut ↑

Concevoir un site comme celui-ci avec WordPress.com
Commencer