IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Big Data Discussion :

Migration d'un programme écrit C++ vers Spark ou Hadoop


Sujet :

Big Data

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 24
    Points
    24
    Par défaut Migration d'un programme écrit C++ vers Spark ou Hadoop
    Bonjour tout le monde,

    J'ai un programme parallèle à mémoire partagée écrit en C++ et je voudrai savoir comment migrer ce programme là vers l'infrastructure distribuée Hadoop ou Spark et si c'est possible de le faire.

    Merci de me répondre

  2. #2
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Bonsoir,

    Je ne suis pas expert ni en Hadoop, ni en Spark, mais il faudrait que tu nous en dises un peu plus sur ton programme STP.

    Peux-tu nous dire STP sous quel OS tourne ton programme ? Parce que là je suppose qu'il tourne sous Linux, en utilisant de la Shared Memory.

    Ton programme est-il conçu pour un seul serveur, ou bien tourne t'il sur un cluster (un ensemble de serveurs) ?

    Peux-tu nous dire en quelques mots à quoi sert ton programme, et quel type de données il traite ?

    Quel est le volume de données à traiter ?

    Voilà ce qui me vient à l'esprit :

    1) ton programme est écrit en C++. Il faudra le porter soit en Java, soit en Python pour Hadoop. Idem pour Spark, sachant que tu peux en plus développer en langage Scala (Spark a été écrit en Scala).

    2) ces Frameworks ont été développés pour faire du calcul distribué sur un cluster et un de leurs avantages est que tu n'as pas à te soucier dans ta programmation de parallélisme, car le parallélisme est géré pour toi par ces Framework

    3) lorsque tu charges tes données, elles sont automatiquement partitionnées pour être réparties sur les différents noeuds du cluster.

    4) Hadoop a été conçu pour traiter de gros fichiers, et par défaut la taille de bloc du fichier est de 64 Mo. Hadoop n'a jamais été conçu pour traiter des petits fichiers de qq Ko. Lorsque tu charges tes fichiers de données sur Hadoop, elles sont donc réparties sur les différents noeuds du cluster, et stockées par blocs de 64 Mo dans HDFS.

    Une fois tes développements de Mapper et de Reducer écrits en Python ou en Java, tu les soumets en batch au cluster Hadoop, et ceux-ci s'exécuteront sur les noeuds concernés.

    Si tu veux te simplifier la vie car la programmation MapReduce est complexe, tu peux utiliser des interfaces de plus haut niveau avec Pig ou Hive.

    5) Si tu utilises Scala, tu charges tes données en gérant soit des RDD (Resilient Distributed Dataset pour traiter des fichiers ligne à ligne), soit des DF (DataFrames pour les données tabulaires, comme les fichiers CSV ce qui revient à traiter les données en ligne et en colonne)

    Une fois tes données chargées dans des RDD ou des DF, Spark les partitionne aussi et distribue les partitions sur les noeuds du cluster.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    Bonjour,

    En fait, je vous remercie pour votre réponse.

    Mon programme tourne sous Linux en utilisant de la shared memory et vous avez raison. Un nombre de threads est fixé à la main lors de la commande de l'exécution du programme. Mon programme sert à la recherche des motifs fréquents dans un jeu de données. Mais je trouve que sa réécriture en Java ou même en python va être un peu délicate vu que dans mon programme j'ai apporté des bibliothèques que j'hésite qu'elles existent dans Java o Python. De même, l'exécution se fait sous shell, comment pourrai-je le ré exécuter en Java ou Python( une fois réécrit)? Je pense que ceci ne sera pas évident du tout mais espérons l'atteindra.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur Études et Développement
    Inscrit en
    Décembre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur Études et Développement
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 23
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Je n'ai jamais eu un cas ou je dois exécuter un programme C++ dans l'environnement Hadoop donc je ne pourrai pas trop t'aider dessus, mais tu peux migrer ton programme en Java et utiliser "User Defined Functions" sur Pig pour les bibliothèques je ne crois pas qu'il sera des bibliothèques en C++ qui ne se trouve pas en Java ou Python. si tu trouve des difficultés pense a réparti ton programme a des DLL's qui se consomment ailleurs et retourne des valeurs a ton programme java...

  5. #5
    Expert Oracle confirmé

    Homme Profil pro
    Consultant Big Data
    Inscrit en
    Mars 2003
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Consultant Big Data
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2003
    Messages : 448
    Points : 926
    Points
    926
    Par défaut
    Bonjour,

    Le C++ a beau être un beau langage, dès que l'on veut travailler dans la Data Science et sur Big Data, on n' a pas le choix : il faut investir 1 des 4 langages prédominants que sont Java, Python, Scala et R.

    Les Data Scientists utilisent R et Python, tandis que les gens travaillant sur Hadoop utilisent Java ou Python, et éventuellement Scala pour ceux qui travaillent sur Spark.

    Pour moi, Python pousse très très fort comme langage, car c'est un langage facile à apprendre, avec une syntaxe très légère (fini de gérer des accolades, de mettre des terminateurs en fin de ligne, de se demander si une chaîne de caractères doit être mise entre quotes simples ou doubles).

    Ce sont des langages très permissifs et faciles d'emploi, au contraire du C++ (rappelez vous vos débuts de programmation en C++ avec la notion de classes et d'objets, les pointeurs, la gestion mémoire, et les redoutables phases de compilation du code, suivies de la phase de Link pour enfin produire un exécutable qui marche après tant d'efforts !).

    Et puis la force de Python, ce le nombre de librairies diverses et variées existantes.


    Quant à Java, du moins à ses débuts, il a amené 3 choses par rapport au C++ :
    - la disparition des redoutables pointeurs
    - la fin de la gestion mémoire avec le ramasse-miettes (garbage collector)
    - sa portabilité

    Mais ce qui a fait le succès de Java en plus, ce n'est pas tant le langage en lui-même, mais la plateforme Java qui a permis la création d'autres langages comme Groovy et Ruby, qui une fois compilés en bytecode, tournent sur une JVM.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2015
    Messages : 17
    Points : 24
    Points
    24
    Par défaut
    Merci bien pour vos propositions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Migration d'un programme XE4 vers XE7 (ou XE8) boires et déboires
    Par SergioMaster dans le forum Composants FMX
    Réponses: 1
    Dernier message: 22/04/2015, 11h21
  2. Réponses: 3
    Dernier message: 18/02/2012, 03h05
  3. Convertir un programme Visual c++ vers C++ builder
    Par Skarlix dans le forum C++Builder
    Réponses: 11
    Dernier message: 16/10/2004, 22h51
  4. migration d'une base de mssql vers postgre sql
    Par dim_italia dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 06/08/2004, 22h56
  5. Mettre son programme dans Envoyer Vers ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 11
    Dernier message: 29/07/2003, 19h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo