Scala IO 2013 => Big Data + Scala

Présentateurs
Sam Bessalah, indépendant intervenant sur des sujets tournant autour du Big Data, Machine Learning…
- Twitter : @samklr
- Sa bio sur Scala IO
- La description de la session ScalaIO
Big Data + Analytics
What is Big Data Analytics ?
C’est par cette question que commence le talk de Sam. La réponse sera :
It’s about doing aggregations and running complex models on large datasets, offline, in real time or both.
Pour analyser de gros volumes de données distribuées, il y a donc 3 stratégies :
- offline (mode batch),
- en temps réel,
- ou les deux en même temps.
Sam va tout au long de la session présenter les outils du Big Data et leurs utilisations avec Scala. Il précisera pour chaque outil les stratégies compatibles.
Hadoop + Scala
Hadoop est un système permettant de créer des applications scalables massivement distribuées. Dans le domaine du Big Data, il est utilisé en mode batch et non en temps réel.
Pour traiter de grands volumes de données distribuées, Hadoop possède un module appelé Hadoop MapReduce qui applique le pattern Map Reduce.
Sam a pris le temps d’expliquer le concept de Map Reduce par des schémas et un exemple de code Scala.
Pour définir des jobs Hadoop MapReduce en scala, Sam conseille l’utilisation de la librairie Scalding.
Storm + Scala
Storm, contrairement à Hadoop, va permettre de traiter massivement les données en temps réel.
Pour utiliser Storm avec un DSL Scala, il y a le projet ScalaStorm.
SummingBird => Scala
SummingBird est une librairie Scala qui fournit une abstraction du pattern Map Reduce applicable à Hadoop et à Storm.
Ainsi, vous définissez vos jobs avec SummingBird et vous allez pouvoir les exécuter dans Hadoop ou Storm.
Apache Spark + Scala
Apache Spark est une alternative au module Hadoop MapReduce qui permet de faire des traitements distribués.
Il est réputé plus performant que Hadoop MapReduce et reste compatible avec Apache Hadoop.
Le concept clé de Spark est de permettre le traitement simplifié de collections de données distribuées. Il dispose d’une API en Scala, Java et Python donnant la possibilité d’enchainer des actions (count, collect, save, …) ou encore des transformations (map, filter, groupBy, join, …).
Spark s’utilise en mode batch et non en temps réel.
Apache Spark Streaming + Scala
Apache Spark Streaming étend les possibilités de Spark en traitant des streams de données en temps réel.
Les slides de la présentation
Ce que j’en ai pensé
Ce talk m’a permis de découvrir l’univers du Big Data. Scala y semble bien implanté :
- Existence de multiples API pour manipuler les systèmes les plus utilisés
- Des projets comme Spark ou SummingBird sont écrits en scala.
La programmation fonctionnelle (FP) semble trouver avec le Big Data un créneau d’utilisation particulièrement adapté. En effet, effectuer des analyses de données consiste souvent à appliquer un enchainement de transformations à ces données. Et la FP, de part sa nature, est l’outil idéal pour représenter un enchainement de fonctions :)