Bonjour,
Nos projets internes deviennent de plus en plus dépendants les uns des autres : certains récupèrent des données, d'autres compilent ces données, d'autres les analysent, d'autres les exportent, etc... Du coup certains process sont bloquants pour que d'autres puissent démarrer (bien entendu uniquement si ce dernier n'a pas rencontré de problème).
J'aimerai savoir comment vous vous gérez ce genre de problématique de scheduler gérant les dépendances entre plusieurs process sur potentiellement plusieurs machines ? - vous gérez simplement via cron - vous testez si une ressource/notif/info quelconque soit ok et vous bouclez en sleepant tant que ce n'est pas dispo (avec des gardes fous pour éviter que ça sleep à l'infini) - vous avez développé votre propre solution ? - autre ?
En cherchant un peu, voici des solutions qui ont l'air pas mal (avec des jolies interfaces pour suivre ce qui est lancé/fail/done) - les avez vous testé? - http://airbnb.github.io/chronos/ http://airbnb.github.io/chronos/ (une sorte de cron un peu plus poussé pour gérer de la dépendance avec une GUI) - https://github.com/spotify/luigi (la sollution home made de spotify)
J'ai pu lire aussi que certains utilisaient Jenkins pour faire ça, mais ça me semble très lourd.
On se dirige vers une solution en interne mais j'aimerai bien avoir votre retour et échanger sur comment vous faîtes de votre côté :)
Merci d'avance ! /Erwan
2014-11-24 16:10 GMT+01:00 Erwan Ben Souiden erwan@aleikoum.net:
Nos projets internes deviennent de plus en plus dépendants les uns des autres : certains récupèrent des données, d'autres compilent ces données, d'autres les analysent, d'autres les exportent, etc... Du coup certains process sont bloquants pour que d'autres puissent démarrer (bien entendu uniquement si ce dernier n'a pas rencontré de problème).
J'aimerai savoir comment vous vous gérez ce genre de problématique de scheduler gérant les dépendances entre plusieurs process sur potentiellement plusieurs machines ?
- vous gérez simplement via cron
- vous testez si une ressource/notif/info quelconque soit ok et vous
bouclez en sleepant tant que ce n'est pas dispo (avec des gardes fous pour éviter que ça sleep à l'infini)
- vous avez développé votre propre solution ?
- autre ?
JobScheduler gère cela assez bien : http://www.sos-berlin.com/modules/cjaycontent/index.php?id=62&page=osour... l'idéal est de travailler avec une logique d'évènement déclencheur et non une planification.
Sinon il y'a la logique de queuing mais ça doit être intégrer au développement (Gearman, RabbitMQ, Kafka, Amazon SQS etc ...)
Le 24/11/2014 16:10, Erwan Ben Souiden a écrit :
Bonjour,
Nos projets internes deviennent de plus en plus dépendants les uns des autres : certains récupèrent des données, d'autres compilent ces données, d'autres les analysent, d'autres les exportent, etc... Du coup certains process sont bloquants pour que d'autres puissent démarrer (bien entendu uniquement si ce dernier n'a pas rencontré de problème).
J'aimerai savoir comment vous vous gérez ce genre de problématique de scheduler gérant les dépendances entre plusieurs process sur potentiellement plusieurs machines ?
- vous gérez simplement via cron
- vous testez si une ressource/notif/info quelconque soit ok et vous
bouclez en sleepant tant que ce n'est pas dispo (avec des gardes fous pour éviter que ça sleep à l'infini)
- vous avez développé votre propre solution ?
- autre ?
En cherchant un peu, voici des solutions qui ont l'air pas mal (avec des jolies interfaces pour suivre ce qui est lancé/fail/done) - les avez vous testé?
(une sorte de cron un peu plus poussé pour gérer de la dépendance avec une GUI)
(la sollution home made de spotify)
J'ai pu lire aussi que certains utilisaient Jenkins pour faire ça, mais ça me semble très lourd.
On se dirige vers une solution en interne mais j'aimerai bien avoir votre retour et échanger sur comment vous faîtes de votre côté :)
Merci d'avance ! /Erwan
Je suppose que tu souhaites du libre, car il ya plein de gros tenors sur ce créneau comme Control-M, $Univers... Liste ici : https://fr.wikipedia.org/wiki/Ordonnancement_de_t%C3%A2ches_informatiques#.C...
J'ai vu récemment une conf où ils parlaient de rundeck (http://rundeck.org/), certainement à prendre en considération.
Sinon, à l'époque où j'ai aussi regarder ce genre de besoin, j'avais vu qu'il y en avait quelques uns, mais assez orienté cluster de calcul. Dans ma Debian, je trouve : - Torque (http://www.clusterresources.com/pages/products/torque/) - Grid Engine (http://gridengine.sunsource.net) - OAR (http://oar.imag.fr/)
Bonjour a tous;
J'ai parfois vu Ortro en prod également.
http://sourceforge.net/projects/ortro/
On Mon Nov 24 2014 at 16:23:36 Gilles Mocellin < gilles.mocellin@nuagelibre.org> wrote:
Le 24/11/2014 16:10, Erwan Ben Souiden a écrit :
Bonjour,
Nos projets internes deviennent de plus en plus dépendants les uns des autres : certains récupèrent des données, d'autres compilent ces données, d'autres les analysent, d'autres les exportent, etc... Du coup certains process sont bloquants pour que d'autres puissent démarrer (bien entendu uniquement si ce dernier n'a pas rencontré de problème).
J'aimerai savoir comment vous vous gérez ce genre de problématique de scheduler gérant les dépendances entre plusieurs process sur potentiellement plusieurs machines ?
- vous gérez simplement via cron
- vous testez si une ressource/notif/info quelconque soit ok et vous
bouclez en sleepant tant que ce n'est pas dispo (avec des gardes fous pour éviter que ça sleep à l'infini)
- vous avez développé votre propre solution ?
- autre ?
En cherchant un peu, voici des solutions qui ont l'air pas mal (avec des jolies interfaces pour suivre ce qui est lancé/fail/done) - les avez vous testé?
(une sorte de cron un peu plus poussé pour gérer de la dépendance avec une GUI)
- https://github.com/spotify/luigi (la sollution home made de spotify)
J'ai pu lire aussi que certains utilisaient Jenkins pour faire ça, mais ça me semble très lourd.
On se dirige vers une solution en interne mais j'aimerai bien avoir votre retour et échanger sur comment vous faîtes de votre côté :)
Merci d'avance ! /Erwan
Je suppose que tu souhaites du libre, car il ya plein de gros tenors sur ce créneau comme Control-M, $Univers... Liste ici :
https://fr.wikipedia.org/wiki/Ordonnancement_de_t%C3%A2ches_informatiques#.C...
J'ai vu récemment une conf où ils parlaient de rundeck ( http://rundeck.org/), certainement à prendre en considération.
Sinon, à l'époque où j'ai aussi regarder ce genre de besoin, j'avais vu qu'il y en avait quelques uns, mais assez orienté cluster de calcul. Dans ma Debian, je trouve :
- Torque (
http://www.clusterresources.com/pages/products/torque/)
- Grid Engine (http://gridengine.sunsource.net)
- OAR (http://oar.imag.fr/)
Liste de diffusion du FRsAG http://www.frsag.org/
----- Mail original -----
De: "Gilles Mocellin" gilles.mocellin@nuagelibre.org À: frsag@frsag.org Envoyé: Lundi 24 Novembre 2014 16:23:02 Objet: Re: [FRsAG] Ordonnancement de jobs dépendants
Je suppose que tu souhaites du libre, car il ya plein de gros tenors sur ce créneau comme Control-M, $Univers... Liste ici : https://fr.wikipedia.org/wiki/Ordonnancement_de_t%C3%A2ches_informatiques#.C...
Je fonctionne avec le second de la liste : VEGA d'Unilink.
Salut,
Slurm sait trés bien gérer la dépendance entre plusieurs jobs. http://slurm.schedmd.com/slurm.html
Le 24 novembre 2014 17:01, linuxmasterjedi@free.fr a écrit :
----- Mail original -----
De: "Gilles Mocellin" gilles.mocellin@nuagelibre.org À: frsag@frsag.org Envoyé: Lundi 24 Novembre 2014 16:23:02 Objet: Re: [FRsAG] Ordonnancement de jobs dépendants
Je suppose que tu souhaites du libre, car il ya plein de gros tenors sur ce créneau comme Control-M, $Univers... Liste ici :
https://fr.wikipedia.org/wiki/Ordonnancement_de_t%C3%A2ches_informatiques#.C...
Je fonctionne avec le second de la liste : VEGA d'Unilink. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
Le lun 24 nov 14 à 16:23:02 +0100, Gilles Mocellin gilles.mocellin@nuagelibre.org écrivait :
Bonjour,
Salut,
Dans ma Debian, je trouve :
- Torque (http://www.clusterresources.com/pages/products/torque/)
- Grid Engine (http://gridengine.sunsource.net)
- OAR (http://oar.imag.fr/)
Torque n'est pas mal, mais il me semble que SGE est plutôt abandonné (je ne connais pas OAR).
J'ai aussi un client qui utilise Talend avec satisfaction, même si à la base ce n'est pas un ordonnanceur mais un ETL !
c'est vraiment intéressant car il y a de quoi explorer :) merci pour toutes vos réponses.
/Erwan
2014-11-24 18:37 GMT+01:00 Thierry Thomas thierry@freebsd.org:
Le lun 24 nov 14 à 16:23:02 +0100, Gilles Mocellin < gilles.mocellin@nuagelibre.org> écrivait :
Bonjour,
Salut,
Dans ma Debian, je trouve :
- Torque (http://www.clusterresources.com/pages/products/torque/)
- Grid Engine (http://gridengine.sunsource.net)
- OAR (http://oar.imag.fr/)
Torque n'est pas mal, mais il me semble que SGE est plutôt abandonné (je ne connais pas OAR).
J'ai aussi un client qui utilise Talend avec satisfaction, même si à la base ce n'est pas un ordonnanceur mais un ETL ! -- Th. Thomas. _______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/
En cherchant un peu, voici des solutions qui ont l'air pas mal (avec des jolies interfaces pour suivre ce qui est lancé/fail/done) - les avez vous testé?
(une sorte de cron un peu plus poussé pour gérer de la dépendance avec une GUI)
(la sollution home made de spotify)
J'ai pu lire aussi que certains utilisaient Jenkins pour faire ça, mais ça me semble très lourd.
On se dirige vers une solution en interne mais j'aimerai bien avoir votre retour et échanger sur comment vous faîtes de votre côté :)
Alors dans jobs -1 les dev avait recréé un openjobscheduler en php. C’était pas mal (modulo les bugs que j'ai du fixé moi même), mais bon honnêtement je ne vois pas l’intérêt de ré-inventer la roue.
Openjobscheduler est vraiment bien, très/trop complet, java based. Les projets que tu as cité ont l'air très intéressant surtout Chronos qui à l'air hyper sexy.
On 24/11/2014 16:10, Erwan Ben Souiden wrote: (snip)
Nos projets internes deviennent de plus en plus dépendants les uns des autres : certains récupèrent des données, d'autres compilent ces données, d'autres les analysent, d'autres les exportent, etc... Du coup certains process sont bloquants pour que d'autres puissent démarrer (bien entendu uniquement si ce dernier n'a pas rencontré de problème).
(snip)
Bonjour,
Il y a plein d'outils pour ce genre de choses, qui se départagent surtout par leur domaine d'application.
Voilà ceux que j'ai pu croiser.
Il y a ceux qui sont résolument tourné vers le HPC:
- torque/PBS: le vieux de la vieille, un peu hardu, mais stable et sans surprise, mon choix perso pour du HPC (et très modulaire pour les gestions de files)
- sungridengine (SGE), maintenant oraclegridengine (OGE), assez lourd (java), mais fait le boulot, tres tourné HPC egalement, n'est plus vraiment maintenu
- slurm: plus recent mais tres populaire dans le HPC, scale sur de tres grosses infra
- OAR: un peu plus versatile (HPC, mais pas que), un peu hardu, son gros plus (selon moi) est son systeme de reservation avancé (exemple: optimiser l'infra en minimisant les resources utilisés ou le temps de deploiement), mais si on ne se sert pas de ca, il y a probablement plus simple à deployer.
- LoadLeveler, un truc d'IBM intégré à Tivoli maintenant ... tourné HPC, je l'ai testé car il avait été négocié comme porte-clé par les acheteurs, mais je préfere torque/PBS de loin.
Il y a ceux qui sont tournés vers l'integration continue:
- Jenkins: c'est du Java, c'est lourd, mais c'est stable et ca marche, et vu ce que tu décris, ca semble correspondre à ce que tu cherches, c'est pas méchant à mettre en place, par contre faut une (des) grosses VMs.
- gitlab-ci: je n'ai fait que le survoler pour le moment, mais ca se veut un clone de travis ... et travis est vraiment sympa (c'est tourné code testing, mais ca s'adapte assez bien à d'autres usages)
Il y a ceux qui sont tournés vers un use case spécifique:
- drqueue: simple, gère une ferme de rendering, mais pas tres souple pour faire autre chose
Voilà ce que j'ai eu l'occasion de manipuler, et sans connaître plus précisément ton use case, c'est dur de donner un avis.
Bonne continuation
Ju