SlideShare ist ein Scribd-Unternehmen logo
1 von 14
A BAS CRON !
VIVE OOZIE !
“possibly the most underrated
component of the Hadoop stack”
david.morel@booking.com
Fast forward
• Problèmes de cron
• Rappel archi Hadoop/YARN
• Archi oozie
• Workflow
• Coordinator
• Exécution
• Contrôle, SLA, etc
• Perl ?
Crond
• Adapté aux tâches locales
• Mal à l’aise pour le reste
• Scalabilité horizontale ?
• Dépendances ?
• Contrôle, reruns, etc
• Que des soucis !
Hadoop : YARN
Oozie
• 1 serveur (ou 2, pour HA)
• 1 backend DB (agnostique)
• 1 cluster Hadoop (HDFS + YARN)
• C’est tout !
Workflow intro
• L’unité de base
• Définition en XML
• + job.properties
• + options (jars, lib, etc)
• Upload sur HDFS
• oozie job -run -config job.properties
• Done !
Workflows, DAG
Workflow guts
• “ligne de commande de cron”
• DAG
• Actions externes / internes
• Decision nodes
• Forks
• Communication entre étapes
• Exécution distribuée, tolérance aux pannes
Coordinator secrets
• “spécification de fréquence de cron”
• Parent du workflow
• Le maître du temps
• Abstraction : “nominal time”
• Du workflow aux “coordinator actions”
• Le maître des dépendances
• UTC !
Exécution
• Fire and forget
• Worker map + child
• Worker call home
• Callbacks optionnels
• Flags sur HDFS
Pros & C(r)ons
• C’est nul comme jeu de mots
• Parallélisme, retries
• La précieuse abstraction du temps
• Contrainte : idempotency
• SLA
• UTC
• => WTH ?
Perl & Oozie
• REST : listen, parse, introspect
• Monitor, submit, start, stop, query
• Shell action hors JVM
• STDIN/OUT/ERR capturés
• Use WebHDFS
• TRANSFORM dans Hive
Perl & Oozie
• @booking.com
Merci !
• Questions ?

Weitere ähnliche Inhalte

Andere mochten auch (20)

Git v2
Git v2Git v2
Git v2
 
Fetal Ağrı
Fetal Ağrı Fetal Ağrı
Fetal Ağrı
 
Wadhwani et al 2014
Wadhwani et al 2014Wadhwani et al 2014
Wadhwani et al 2014
 
план 2016 2017н.р. (2)
план 2016 2017н.р. (2)план 2016 2017н.р. (2)
план 2016 2017н.р. (2)
 
MIC - Résultats annuels-2016
MIC - Résultats annuels-2016MIC - Résultats annuels-2016
MIC - Résultats annuels-2016
 
Estrategias lect y escritura
Estrategias lect y escrituraEstrategias lect y escritura
Estrategias lect y escritura
 
Uso do Dicionário de Inglês
Uso do Dicionário de InglêsUso do Dicionário de Inglês
Uso do Dicionário de Inglês
 
Proceso contable
Proceso contableProceso contable
Proceso contable
 
Contexto Economico
Contexto EconomicoContexto Economico
Contexto Economico
 
Regras do uso do dicionário
Regras do uso do dicionárioRegras do uso do dicionário
Regras do uso do dicionário
 
Taite wk 3 term 3 13pdf
Taite wk 3 term 3 13pdfTaite wk 3 term 3 13pdf
Taite wk 3 term 3 13pdf
 
Investigación cualitativa
Investigación cualitativaInvestigación cualitativa
Investigación cualitativa
 
Plan tutorial silvia
Plan tutorial silviaPlan tutorial silvia
Plan tutorial silvia
 
Innovación final
Innovación finalInnovación final
Innovación final
 
Powerpoint roser
Powerpoint roserPowerpoint roser
Powerpoint roser
 
Boletín 24 1
Boletín 24 1Boletín 24 1
Boletín 24 1
 
Projet iBATs: utilisation du microgrid au Techno-Pôle
Projet iBATs: utilisation du microgrid au Techno-PôleProjet iBATs: utilisation du microgrid au Techno-Pôle
Projet iBATs: utilisation du microgrid au Techno-Pôle
 
2012 02-06 notasegw
2012 02-06 notasegw2012 02-06 notasegw
2012 02-06 notasegw
 
Unidad 4
Unidad 4Unidad 4
Unidad 4
 
Skedule appointment management solution for salons
Skedule appointment management solution for salonsSkedule appointment management solution for salons
Skedule appointment management solution for salons
 

A bas Cron ! Vive Oozie !

  • 1. A BAS CRON ! VIVE OOZIE ! “possibly the most underrated component of the Hadoop stack” david.morel@booking.com
  • 2. Fast forward • Problèmes de cron • Rappel archi Hadoop/YARN • Archi oozie • Workflow • Coordinator • Exécution • Contrôle, SLA, etc • Perl ?
  • 3. Crond • Adapté aux tâches locales • Mal à l’aise pour le reste • Scalabilité horizontale ? • Dépendances ? • Contrôle, reruns, etc • Que des soucis !
  • 5. Oozie • 1 serveur (ou 2, pour HA) • 1 backend DB (agnostique) • 1 cluster Hadoop (HDFS + YARN) • C’est tout !
  • 6. Workflow intro • L’unité de base • Définition en XML • + job.properties • + options (jars, lib, etc) • Upload sur HDFS • oozie job -run -config job.properties • Done !
  • 8. Workflow guts • “ligne de commande de cron” • DAG • Actions externes / internes • Decision nodes • Forks • Communication entre étapes • Exécution distribuée, tolérance aux pannes
  • 9. Coordinator secrets • “spécification de fréquence de cron” • Parent du workflow • Le maître du temps • Abstraction : “nominal time” • Du workflow aux “coordinator actions” • Le maître des dépendances • UTC !
  • 10. Exécution • Fire and forget • Worker map + child • Worker call home • Callbacks optionnels • Flags sur HDFS
  • 11. Pros & C(r)ons • C’est nul comme jeu de mots • Parallélisme, retries • La précieuse abstraction du temps • Contrainte : idempotency • SLA • UTC • => WTH ?
  • 12. Perl & Oozie • REST : listen, parse, introspect • Monitor, submit, start, stop, query • Shell action hors JVM • STDIN/OUT/ERR capturés • Use WebHDFS • TRANSFORM dans Hive
  • 13. Perl & Oozie • @booking.com

Hinweis der Redaktion

  1. premier cronmaster à booking.com Crond pas seulement problematique hors big data - scalabilité horizontale (que faire quand un serveur ne suffit plus?) - dépendances entre scripts (pipelines) - reruns difficiles - nécessité d'avoir des wrappers pour exécution, monitoring, etc
  2. - job.properties (uniquement local) - workflow.xml (sur HDFS) - autres fichiers si nécessaire (jars, etc) - pousser workflow.xml vers HDFS - oozie job -run -config job.properties - c'est tout
  3. - Le workflow est un DAG - actions externes, comme Hive, sqoop, mapreduce (java) - actions internes (opérations sur le système de fichiers, ssh, etc) - decision nodes - fork / join - error / end - une action externe particulière : shell action - passage d'arguments et de données d'un step à l'autre (capture output) basé sur hadoop/hdfs -> les steps ne s'exécutent pas sur une seule machine tolérance aux pannes (retries max, etc), écriture des données intermédiaires sur le FS distribué
  4. - le maître du temps, et l'abstraction du nominal time - quand on lance un coordinateur, il calcule à l'avance quand il doit tourner en fonction de la fréquence indiquée - start et end times, fréquence > déduit les nominal times - génère des "coordinator actions", c.à.d des instances; attention à la terminologie, "action" est ambigu. - permet de passer des variables aux workflows qu'il lance, en particulier basées sur le temps (nominal) - EL (expression language = jsp) fonctions pour manipuler le temps - support des timezones, mais attention aux migraines -> tout faire en GMT, y compris la BDD (compliqué et en plus il y a des bugs)
  5. - Fire and forget Oozie - le serveur oozie n'est qu'un backend DB, les jobs sont auto-gérés - lancement d'une tâche controleur (map), dans certains cas execute l'action directement, sinon lance une autre application YARN; double niveau de délégation d'exécution - transmet son état régulièrement au serveur, si pas de signe de vie le serveur fait du polling - aussi possible de donner un callback HTTP pour monitoring externe - flags pour déclenchement des workflows dépendants: écrits dans HDFS et utilisés comme input datasets (on pourrait utiliser zookeeper aussi) - forcer une éxécution séquentielle : conditionner à la sortie de l'instance précédente
  6. - Fire and forget Oozie - le serveur oozie n'est qu'un backend DB, les jobs sont auto-gérés - lancement d'une tâche controleur (map), dans certains cas execute l'action directement, sinon lance une autre application YARN; double niveau de délégation d'exécution - transmet son état régulièrement au serveur, si pas de signe de vie le serveur fait du polling - aussi possible de donner un callback HTTP pour monitoring externe - flags pour déclenchement des workflows dépendants: écrits dans HDFS et utilisés comme input datasets (on pourrait utiliser zookeeper aussi) forcer une éxécution séquentielle : conditionner à la sortie de l'instance précédente - possible par coordinateur, par workflow de spécifier les dates de début, de fin, la durée attendue - email ou autres moyens (SMS?) - en particulier, la map controleur est toujours SUCCEEDED, ce qui confuse les débutants - la map controleur récupère, dans le cas de hive, le log renvoyé par l'enfant - la map controleur, dans le cas d'un shell, est aussi l'exécuteur, donc logs directs
  7. Tout ça c’est joli, mais et perl? - tout le dialogue entre serveur et jobs se fait via REST (mais des fois obligé de lire la BDD directement) - interface accessible aux clients pour soumettre des jobs, lister, etc - ligne de commande est un wrapper autour d'appels HTTP - tourne comme une shell action - possible de passer des options possible de paralléliser
  8. - tout le dialogue entre serveur et jobs se fait via REST - interface accessible aux clients pour soumettre des jobs, lister, etc - ligne de commande est un wrapper autour d'appels HTTP - tourne comme une shell action - possible de passer des options possible de paralléliser