Ninox - Une Architecture Big Data Scalable pour le Machine Learning

Introduction

Ninox est un système d'architecture Big Data scalable conçu pour le Machine Learning. C'est une plateforme complète qui combine streaming temps réel, stockage distribué et capacités d'analyse prédictive.

L'Architecture Lambda

Ninox implémente le pattern Lambda Architecture qui combine :

Batch Layer (Couche par lots)

Pour le traitement de grandes quantités de données historiques avec HDFS (Hadoop Distributed File System).

Speed Layer (Couche temps réel)

Pour le traitement en streaming avec Apache Spark Streaming et MongoDB pour des résultats instantanés.

Serving Layer (Couche de service)

Combine les résultats des deux couches pour fournir une vue complète des données.

Stack Technologique

Apache Kafka

La colonne vertébrale du système. Kafka gère les flux de données en temps réel avec :

  • Des producers qui injectent les données
  • Des topics pour organiser les flux
  • Des consumers qui traitent les messages

HDFS (Hadoop Distributed File System)

Le stockage distribué pour les données historiques. Parfait pour les analyses batch sur de grands volumes.

Apache Spark

Le moteur de traitement rapide pour :

  • Spark Streaming : traitement temps réel
  • Spark MLlib : modèles de Machine Learning
  • Spark SQL : requêtes sur les données

MongoDB

Base de données NoSQL pour les résultats temps réel, facilement accessible par les applications web.

Cas d'Usage

Voici comment utiliser Ninox :

Scénario 1 : Ingestion simple

Kafka → Gobblin → HDFS

Idéal si vous voulez juste stocker des flux de données pour analyse ultérieure.

Scénario 2 : Reporting temps réel

Kafka → Spark Streaming → MongoDB → Web App

Pour des dashboards qui se mettent à jour en temps réel.

Scénario 3 : ML Prédictif (le plus puissant)

  1. Stockage historique dans HDFS
  2. Entraînement d'un modèle Python sur les données historiques
  3. Application du modèle en temps réel via Spark Streaming
  4. Visualisation des prédictions sur une web app

Déploiement Docker

Toute l'architecture est conteneurisée avec Docker. Un simple script start.sh lance l'ensemble des composants sur un réseau Docker dédié.

Exemple Concret

Dans notre démo, nous :

  1. Injectons des données de séries temporelles via un producer Kafka
  2. Stockons l'historique dans HDFS pour l'entraînement
  3. Créons un modèle de prédiction en Python
  4. Appliquons les prédictions en temps réel via Spark Streaming
  5. Affichons les résultats sur un graphe web qui se rafraîchit automatiquement

Ce que j'ai appris

  • Conception d'architectures distribuées
  • Gestion de flux de données temps réel
  • Intégration de composants Big Data
  • Conteneurisation de systèmes complexes

Projet développé à l'ESIGELEC pour explorer les architectures Big Data modernes.