Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...

La page est créée Lionel Launay
 
CONTINUER À LIRE
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
Le choix MongoDB dans l’architecture
BIG DATA du projet KARMA
Refonte du Système de Revenue Management d'Air
France KLM

Conférence BIG DATA - Master MBDS
Université de Nice Sophia Antipolis

26 Janvier 2016

Martial AYAS – maayas@airfrance.fr
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
2        Agenda

1. Présentation de KARMA               4. Utilisation de MongoDB dans KARMA
    -   Le Revenue Management              -   Objectifs & contraintes
    -   Définitions et concepts            -   Technologies et critères d’évaluation
    -   Chiffres clés                      -   Le choix MongoDB
    -   Données et traitements du RM       -   Architecture et fonctionnement

2. Utilisation d’Hadoop dans KARMA     5. Cas d’utilisation
    -   Le choix d’Hadoop                  -   POC Flights Availability
    -   L’architecture technique           -   Eureka
    -   Design d’un batch Hadoop
    -   Etat des lieux technique et
        fonctionnel
                                       6. Evolutions à venir

3. Axes d’amélioration
    -   Les performances
    -   Accès aux données
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
3              Présentation de KARMA                                                    Faible
                                                                                              contribution
                                                                                              200€
                                                                                                             Moyenne      Haute
                                                                                                             contribution contribution
                                                                                                             350€         500€

                     Le Revenue Management

                                                                                                        Contribution moyenne :
                                                                                                        260€

                          Remplissage
                          « naturel »

                                                                             J : Départ vol
M-12 : Ouverture du vol                               M-2 : Saturation vol

                            M-4 : Fermeture BC   M-1 : Fermeture MC

                                                                                                        Contribution moyenne :
                                                                                                        310 €

                                                                                                   Maximalisation du revenu
                                                                                                    par contrôle des ventes
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
4       Présentation de KARMA
        Définitions et concepts

    •    KARMA  KLM Air France
         Revenue Management                  L’objectif principal de
         Application
                                                    KARMA
    •    RMS : Revenue Management
         System
    •    KARMA permet d’optimiser le
                                            « To sell the right seat
         revenu grâce à la prévision :        to the right person
          -   Demande                       at the right moment »
          -   Annulation
          -   Overbooking

    •    Permet aux analystes de vols
         d’agir sur les recommandations
         du système en fonctions :        Et d’influer sur la disponibilité des
          -   Des marchés                 sièges à vendre pour un tarif
          -   Des périodes                donné à une date donnée.
          -   Des évènements
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
5        Présentation de KARMA
         Chiffres clés (2015)

•   Le programme de vol
     -   2500 vols / jour
     -   231 destinations / 103 pays

•   L’activité « Passage »
     -   77,5 millions de passagers

•   Les avions
     -   569 avions
     -   De 40 à 520 sièges

•   La tarification
     -   26 classes
     -   30 000 tarifs
     -   Prix carburant
     -   La concurrence
     -   La demande

 Volumes initiaux + Combinatoire = Démultiplication des volumes
 Augmentation des volumes = Problématiques de performances
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
6       Utilisation d’Hadoop dans KARMA
        Le choix d’Hadoop (1/2)

    •   Contexte fonctionnel et technique au démarrage du projet :

         -   Refonte du RM = Nouvelle approche + Nouveaux besoins
              - Forte augmentation des volumes nécessaires aux calculs de prévision
              - Forte augmentation de la fréquence des évènements à prendre en compte
                pour avoir un système réactif
               Augmentation des volumes et du stockage
               Augmentation de la puissance de traitement

         -   Infaisabilité des traitements batch en BD
              - Le volume des données lié aux évènements et aux combinaisons possibles
              - Temps de traitements incompatibles avec la fréquence nécessaire des MAJ
               Nécessité de paralléliser et distribuer les traitements et les données

         -   Interfaçage avec les moteurs de RO
              - Les moteurs de Recherche Opérationnelle (Prévision + Optimisation)
              - Développés en C++ (CPlex), utilisent l’approche Map Reduce / Fichiers
               L’alimentation des moteurs doit se faire sous la forme de fichiers
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
7        Utilisation d’Hadoop dans KARMA
             Le choix d’Hadoop (2/2)
•       Le choix Hadoop n’est pas sans contraintes …
         -   Contraintes d’exploitation
              - Haute disponibilité / Tolérance aux pannes
              - Seuls la Base de données et le NFS sont supportés (backup) par la production
                 Mécanisme de synchronisation entre la BD, le NFS et le HDFS
              - Maitrise du stockage malgré les volumes  Utilisation du format Avro + compression

         -   Contraintes de développement / Maintenabilité
              - Apprentissage de l’approche et des API
              - Démultiplication des composants : 1 req SQL  1 à n jobs Hadoop
              Ex : Le traitement d’optimisation quotidien comporte 765 jobs dont 376 en Hadoop
               Création d’un Framework de développement pour harmoniser le dev des jobs Hadoop
              - Chaque job de MapReduce crée une nouvelle copie des données
               Besoin d’un outil de design des jobs est de suivi du cycle de vie des traitements et des
              données produits par Hadoop (Voir diagramme)

         -   Contraintes métier
              - Concilier les 3 activités : Batch / Utilisateur / Evènementielle (Problématique de
                concurrence sur l’accès et la mise à jour des données)
               Séparation des traitements par la planification / contraintes de perfs importantes
Le choix MongoDB dans l'architecture BIG DATA du projet KARMA - Refonte du Système de Revenue Management d'Air France KLM Conférence BIG DATA ...
8           Utilisation d’Hadoop dans KARMA
                  Design technique d’un Batch Hadoop

                     Extractions                       Traitements                               Injections
DB Oracle 11g       DB  HDFS                                                                   DB  HDFS        DB Oracle 11g
                                                         Métier
3To ~350 tables       SQOOP                                                                     SQL*Loader       3To ~350 tables
                                                       C++ CPlex
                                     Transformations                       Transformations
                    Avro, CSV, XML     Agrégations         Avro              Formatage            Avro, CSV
                                      Hadoop / PIG                          Hadoop / PIG                              NFS
     NFS             Copies                                                                      Copies
    1,5To                                               Traitements                                                  1,5To
                   NFS  HDFS         Avro, CSV, XML      Métier              Avro, CSV        HDFS  NFS
 CSV, XML, …                                                                                     DistCp           CSV, XML, …
                     DistCp                            Hadoop / PIG

•     Accès aux données DB                                        •   Traitements métier
        -   SQOOP + OraOop : Extractions en //                         -      Hadoop MapReduce : traitements hors RO
        -   SQL*Loader : Injection en //                               -      C++ Cplex : Moteurs de prévisions,
        (Suppression des contraintes d’intégrité,                             d’optimisations (Recherche Opérationnelle)
        dénormalisation, recalcul des indexs)
                                                                  •   Reporting
•     Accès aux données NFS                                            -      PIG : Statistiques et KPI vérification de la
        -    DistCp : Copies HDFS  NFS                                      qualité des données

•     Préparation des données                                     •   Exploitation / Supervision
        -    Hadoop MapReduce : Transformation,                        -      Error collector, compacteurs, archivage,
             comparaisons, jointures, agrégations,                            purge
             filtres, fusion, …
9          Utilisation d’Hadoop dans KARMA
                 Etat des lieux technique et fonctionnel

                Revue Technique                                     Exemple du RSU (OAC27)
                 Ferme de serveurs                                  Profil du batch (MAJ 01/2016)
-   21 Serveurs : 32 CPU et 128 Go de RAM par serveur      -   Exécution quotidienne
                                                           -   Durée approximative : 10 Heures (11h30)
                    Grille de calcul                       -   Nombre d’Unités de tâches : 117 (128)
                                                           -   Nombre de jobs total : 603 (765)
-   Pour une capacité d’environ 850 slots d’exécution en   -   Nombre de jobs en séquence : 244 (232)
    parallèle
                                                           -   Nombre de jobs en parallèle : 359 (533)
            Grille de stockage (HDFS)                      -   Nombre de jobs Hadoop : 313 (376)

-   Répartit sur les 21 serveurs                                    Stockage nécessaires (HDFS)
-   3,2 To par serveur soit 67 To au total
                                                           -   700GB, soit 2,1TB avec la réplication x3
                                                               (1,2TB soit 3,6 TB avec la réplication x3)
             Revue Fonctionnelle                                       Typologie des traitements
       Traitements Batchs (uniquement)                     -   Job Java Hibernate
-   45 batch (métiers / techniques / KPI)                  -   Job techniques Shell
-   8 process planifiés > 1H dont 7 utilisent Hadoop       -   Jobs techniques Hadoop
-   7 process à la demande > 1H dont 7 utilisent Hadoop        (préparation / transformation / agrégation)
                                                           -   Jobs fonctionnels Hadoop
                                                           -   Moteurs de RO (C++)
10       Axes d’amélioration
         Performances et accès aux données

     •    La performance des batch
           -   Optimisation du séquencement des jobs au sein des Batchs
           -   Optimisation / limitation des extractions / injections entre la DB et le
               HDFS

     •    La performance des traitements interactifs et évènementiels
           -   Normalisation + Volumes = Jointures et agrégations couteuses

     •    Multiplication et diversification de l’accès aux données
           -   A des traitements batch d’applications tierces
           -   A des traitements non batch
                 - Traitements interactifs
                 - Traitements évènementiels

      Les pistes : Nouvelles approches + nouvelles technologies
11       Utilisation de mongoDB dans KARMA
         Objectifs et contraintes

     •    Constats
           -   KARMA bénéficie d’une architecture et de moyens uniques au sein du SI
           -   Cependant la puissance de calcul et les données sont « sous utilisées »
           -   Traitements batch très évolués / optimisés
           -   Traitements interactifs limités / optimisation couteuse

     •    Objectifs
           -   Réutiliser la puissance de calcul et les données de KARMA pour
               améliorer les traitements interactifs
                - Améliorer et faire évoluer KARMA
                - Proposer de nouveaux services
                - Ouvrir les données à des applications tierces

     •    Contraintes
           -   Pas d’impact sur les performances
                - Activité batch la nuit et les week-ends
                - Base de données Oracle dédiée au RM (Forte sensibilité qualité / perfs)
           -   Sortir des contraintes propres à KARMA
                - Eclipse RCP
12       Utilisation de MongoDB dans KARMA
                Technologies et critères d’évaluation

            •    Points faibles de l’accès interactif aux données
                  -     Jointure et Agrégation des données
                          - Oracle est déjà surchargée (GUI + Alimentation temps réel)
                          - La plupart des jointures et agrégations existent déjà sur le HDFS

  Techno              Type             Support     Performances                 Compatibilité / Impacts
Hive        Metastore                   HDFS       Usage interactif   Impact uniquement lors de l’utilisation
                                                       exclu          couteux
HBase       BD NoSQL – Colonne          HDFS             OK           Impact continu sur la grille Hadoop
mongoDB     BD NoSQL – Document           FS             OK           Pas d’impact direct mais de nouveaux
                                                                      investissements

            •    Aucune technologie ne se démarque vraiment
                  -     D’autres critères doivent être pris en compte …
13       Utilisation de mongoDB dans KARMA
         Le choix mongoDB

     •   Choix de privilégier mongoDB pour ses autres atouts :
          -   Approche document
               - Dénormalisation de l’information
               - Plus proche de l’utilisation de la donnée que du stockage
          -   Interopérabilité : JSON, Drivers
          -   Format optimisé BJSON
          -   Agrégation Framework  Performances
     •   Développement / Exploitation
          -   Courbe d’apprentissage et mise en œuvre rapide
          -   Communauté très active
          -   HA (Haute Disponibilité) / Sharding (Scalabilité horizontale)

     •   MongoDB et nouvelles tendances :
               - Développements Agile
               - MongoDB + AS + AngularJs + D3.js + CSS = Rich Modern Web Apps
                   - Applications Web mono page
                   - Applications multi supports (PC, Smartphones, Tablettes, …)
14       Cas d’utilisation
         POC Flight Availability

     •    Proposer un outils de recherche de disponibilité des vols
           -   Réutilisation des données du HDFS
           -   Client léger (Navigateur Web)
           -   Interface graphique riche et dynamique
     •    Données
           -   Oracle : YS_DFLS (15M), YS_DFLCS (25M), référentiel géographique
           -   MongoDB : Vols (3,7M), Trajets (~1000), référentiel géographique

     •    Démo
15       Cas d’utilisation
         Eureka

     •    Proposer un outils de monitoring de l’activité utilisateur
           -   Analyser de quelle façon les utilisateurs maximisent le revenue
           -   Analyser la couverture des marchés
                - Identifier les bonnes pratiques afin de les diffuser
                - Identifier les lacunes et les combler

     •    Démo
Evolutions à venir
16

     •    MongoDB en complément et non en remplacement d’Oracle
     •    L’idée est donc de spécialiser chaque technologie en fonction des
          usages

           -   Oracle :
                - Normalisation et intégrité des données
                - Usage transactionnel / interactif
           -   MongoDB :
                - Performances liées à l’agrégation des données
                - Usage interactif / BI dynamique
           -   Hadoop (MapReduce + HDFS) :
                - Performances des batch
                - Préparation / spécialisation des données

     •    Prochaine étape :
           -   Spark Streaming / Kafka
                - Usage temps réel / évènementiel
Annexes
18        Présentation d’Hadoop
                   Fonctionnement général / Architecture

•   Objectifs d’Hadoop                                                                           TWS
     -   Paralléliser et distribuer des                                                 Planification des Jobs
         traitements sur une ferme de serveurs
         pour améliorer les performances et                                                Hadoop Master
         permettre des traitements dont les
                                                                               JobTracker                  NameNode
         volumes de données sont (très)                                        Gestion de la            Gestion du HDFS
         importants.                                                         soumission et de              répartition et
                                                                           l’exécution des jobs      réplication des données
•   Ce que fournit Hadoop
     -   Moteur d’exécution
           -   Gère la // et la distribution des traitements
                                                                           Serveur 1          Serveur 2           Serveur N
           -   Gère la distribution et la réplication des
               données                                                    TaskTracker        TaskTracker         TaskTracker
     -   Des API qui implémentent l’approche                    Grille                                                             Nœud
                                                                              UC                   UC                UC
         MapReduce et l’accés au HDFS                             de
                                                                calcul       (CPU)                (CPU)             (CPU)
                                                                                                                               d’exécution
     -   Un système de stockage distribué le
         HDFS (Supporte différents formats (CSV,
         XML, JSON, AVRO, …)                                     Grille        US                   US                US           Nœud
                                                                  de         (HDD)                (HDD)             (HDD)
                                                                                                                                       de
•   Des outils complémentaires                                 stockage
                                                                 HDFS      DataNode           DataNode            DataNode
                                                                                                                                 stockage
           -   Supervision
           -   Import / Export DB  HDFS
           -   Abstraction (PIG, HIVE, …)
19       Présentation d’Hadoop
         L’approche MapReduce

     •   Un traitement MapReduce se décompose en 3 étapes :
          1 - L’étape de Map : Préparation des données
          Permet de lire, extraire / créer une clé de regroupement, transformer / formater, filtrer, …
          2 - L’étape de Shuffle : Tri, regroupement et distribution
          Les données en sortie du Mapper sont automatiquement triées et regroupées par clé dans
          différents blocks.
          3 - L’étape de Reduce : Traitement métier
          Applique les règles métier sur les données regroupées par clé : Filtrer, agréger, sommer,
          transformer, …

                                       Contexte d’exécution Hadoop
                                                 Job Hadoop

                                                   Shuffle
                        ~64 MB
                                       Map          key                         ~X MB
                                                    Grp1         Reduce
            ~1GB        ~64 MB         Map                                                    ~Z MB
                                                    key
                                                    Grp2         Reduce         ~Y MB
                                       Map
                        ~64 MB
20         Présentation d’Hadoop
                Fonctionnement général

•   Objectifs d’Hadoop                                                                             TWS
     -   Paralléliser et distribuer des traitements                                       Planification des Jobs
         sur une ferme de serveurs pour
         améliorer les performances et permettre                                             Hadoop Master
         des traitements dont les volumes de
                                                                                 JobTracker                   NameNode
         données sont (très) importants.                                         Gestion de la            Gestion du HDFS
                                                                               soumission et de              répartition et
•   Ce que fournit Hadoop                                                    l’exécution des jobs      réplication des données
     -   Moteur d’exécution
           -   Gère la // et la distribution des traitements
           -   Gère la distribution et la réplication des
                                                                             Serveur 1          Serveur 2           Serveur N
               données
     -   Des API de développement qui                                       TaskTracker        TaskTracker         TaskTracker
         implémentent l’approche MapReduce et                   Grille de
                                                                                UC                   UC                UC
         permet d’accéder au HDFS                                calcul
                                                                               (CPU)                (CPU)             (CPU)
     -   Un système de stockage distribué le
         HDFS (fichiers)
           -   Supporte différents formats (CSV, XML,                            US                   US                US
                                                               Grille de
               JSON, AVRO, …)                                  stockage
                                                                               (HDD)                (HDD)             (HDD)

                                                                 HDFS
•   Des outils complémentaires                                               DataNode           DataNode            DataNode

           -   Supervision
           -   Import / Export DB  HDFS
           -   Abstraction (PIG, HIVE, …)
21            Cas d’utilisation
                      Mise à jour du programme de vol
        D Purge Job                                                                    Avec Hadoop
                          Map Task                               D Compare Job
        64 MB
                                                       Xml
         Xml                                                                 Map Task                  Reduce Task
                 Read                       Sort
                               Extract
20 GB   64 MB   blocks                      keys                                                      Process all
                                Keys                   Xml                                      Xml                          Xml
 Xml     Xml     from                       store                                                       grouped                        New
                               Purge
                splited                      Into                                                         keys               Xml      Flights
                                XML
        64 MB
                 files                     blocks                             Read              Xml   together 
                                                       Xml          Read                Sort                         Sort
         Xml                                                                  data,                       apply                       Canc.
                                                                   blocks               keys                         keys    Xml
                                                                             extract            Xml
                                                                                                       business                       Flights
                                                                    from                store                        store    Xml
                                                                              keys,                     rules 
                                                                   splited               Into                         Into
                                                                               and                     determine
                                                                    files              blocks   Xml                 blocks            Modif.
        D-1 Purge Jobs                                                       values                        new               Xml      Flights
                                                                                                       Cxl, upd,
20 GB                                               Xml
                                                                                                      unchanged
            Purge                                     Xml                                       Xml                                   Unch.
 Xml                   Purge                                                                             flights             Xml
                                                        Xml                                                                           Flights
                                   Purge

                           Xml                                  Resquest, compare, apply rules, and update data
20 GB     Split and        Xml
                                           Launch and
                                             manage             Resquest, compare, apply rules, and update data
                                                                                                                                   Avec un
 Xml     purge data
                           Xml
                                            Threads                                                                                 SGBD
                                                                Resquest, compare, apply rules, and update data

  Complexité à la charge du développeur                       La quasi-totalité du traitement repose sur la BD  PB Contention
                                                                                                                PB Puissance
   Actions implemented by Developers                  Actions supported by Hadoop Framework
22         Cas d’utilisation
           Optimisation des traitements (1/2)
       Décomposer pour mieux paralléliser
       •    Approche séquentielle
Donnée X                 Donnée X                    Donnée X               Donnée X
• A                      • A                         • A                    • A
• B                      • B                         • B                    • B
• C            Job 1     • C            Job 2        • C            Job 3   • C
• D                      • D                         • D                    • D

       •    Approche optimisée          Donnée X
                                    •    A
                                    •    B                        Conf.
                                    •    C
                                    •    D                        règles
                 Job 1              •    Signature

Donnée X                                                                    Donnée X
                                        Donnée X
• A                                 •    A                                  • A
• B                                 •    B                      Job 3       • B
                 Job 2              •
• C                                      C                      Merger      • C
                                    •    D
• D                                 •    Signature                          • D

                 Job 3                  Donnée X
                                    •    A
                                    •    B
                                    •    C
                                    •    D
                                    •    Signature
23       Cas d’utilisation
         Optimisation des traitements (2/2)

     •    Optimiser par le séquencement et la disponibilité des données
           -   Démultiplication du nombre de jobs Hadoop
           -   Analyse des entrées / sorties de chaque jobs
           -   Déterminer le séquencement optimal des traitements
           -   Les traitements se lancent uniquement lorsque l’ensemble des données
               sont prêtes
           -   Plus il y a de traitements parallélisés mieux on utilise la grille
24          Cas d’utilisation
                Equilibrage des traitements (1/2)

                                   Donnée Y                         Job 2
                                   Grp clé 1
                                                          Map      Reduce

Donnée X                                                                                      Donnée Z
                  Job 1            Grp clé 2
                                                           Map        Reduce

                                   Grp clé 3
                                                        Map Reduce
             L’application des
           règles métier créent    Grp clé 4
                                                             Map            Reduce
           un déséquilibre dans
               le volume des
           données regroupées
            selon la clé choisie          Le temps de traitement est égal au temps du job le plus long
                                           (dont le volume de données à traiter et le plus important)

                                                Risque qu’un reducer ne tienne pas en mémoire
25       Cas d’utilisation
                  Equilibrage des traitements (2/2)

                           Donnée Y                          Donnée Y
                                                             Grp clé 1          Job 2
                           Grp clé 1
                                                             Grp clé 2a      Map   Reduce
Donnée                                    Job         Job
  X           Job 1        Grp clé 2                                         Map   Reduce
                                         Stats       Stats   Grp clé 2b
                                         (Map)       (Map)                   Map   Reduce     Donnée Z
                           Grp clé 3                         Grp clé 3
L’application des règles                                     Grp clé 4a
                                                                             Map   Reduce
    métier créent un
                           Grp clé 4                                         Map   Reduce
  déséquilibre dans le                                       Grp clé 4b
 volume des données                                                          Map   Reduce
      regroupées                           Stats             Grp clé 4c
                                          volumes

                                                                          Les temps de traitement sont
                                Analyse les volumes / clé                           équilibrés
                                et calcul un discriminant                   Levée du risque lié à la
                                 technique pour mieux                       mémoire nécessaire au
                                équilibrer les groupes de                     traitement du reduce
                                            clés
26        Axes d’amélioration et évolutions
          Migration vers Hadoop 2

•   Introduction de YARN
     -   Plusieurs moteurs
         d’exécution
     -   Meilleure gestion des
         ressources
     -   amélioration des
         performances
     -   Permet de gérer
         plusieurs applications

•   Traitement interactifs
     -   HIVE, HBASE, …
     -   Ouverture des données du HDFS à des applications tierces
     -   Accès aux données simplifié par l’utilisation de langages de Scripts / SQL Like

•   Traitement temps réel :
     -   Storm, Spark Streaming, …
     -   Intégration des évènements / CEP
Vous pouvez aussi lire