2010-08-16 29 views
7

Je cherche à remplacer un tas de scripts Python ETL qui effectuent une synthèse de données toutes les heures/toutes les heures et une collecte de statistiques sur une quantité massive de données.Spring-Batch pour un traitement de données Hive/MySQL tous les soirs/toutes les heures

Ce que je voudrais réaliser est

  • Robustesse - un emploi à défaut/étape doit être redémarré automatiquement. Dans certains cas, je voudrais exécuter une étape de récupération à la place.
  • L'infrastructure doit être en mesure de récupérer des plantages. Je suppose qu'une certaine persistance serait nécessaire ici.
  • Surveillance - Je dois être capable de surveiller la progression des travaux/étapes, et de préférence voir l'historique et les statistiques en ce qui concerne la performance. Traçabilité - Je dois être capable de comprendre l'état des exécutions
  • Intervention manuelle - c'est bien d'avoir ... pouvoir démarrer/arrêter/mettre en pause un travail à partir d'une API/interface utilisateur/ligne de commande.
  • Simplicité - Je préfère ne pas avoir l'air énervé de mes collègues lorsque je présente le remplacement ... Avoir une API simple et facile à comprendre est une exigence.

Les scripts actuels procédez comme suit:

  • journaux texte de Collectionnez beaucoup de machines, et les poussent dans Hadoop DFS. Nous pouvons utiliser Flume pour cette étape dans le futur (voir http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/).
  • Exécutez les requêtes récapitulatives Hive sur les données et insérez (remplacez) les nouvelles tables/partitions Hive.
  • Extrayez les nouvelles données de synthèse dans des fichiers et chargez (fusionnez) dans des tables MySql. Ce sont les données nécessaires plus tard pour les rapports en ligne.
  • Effectuez des jointures supplémentaires sur les données MySql nouvellement ajoutées (à partir des tables MySql) et mettez à jour les données.

Mon idée est de remplacer les scripts par spring-batch. J'ai également examiné Scriptella, mais je crois que c'est trop «simple» pour ce cas.

depuis que j'ai vu quelques mauvaises vibrations sur Spring-Batch (surtout les anciens messages) j'espère avoir des entrées ici. Je n'ai pas non plus beaucoup vu l'intégration de Spring-batch et de Hive, ce qui est gênant.

+0

Ces scripts sont nés dans le péché.Je sais, je leur ai écrit :) – Yossale

+0

Donnez-vous la fessée pour votre héritage @yossale –

+0

Tant que je ne suis pas celui qui doit le réparer .. :) – Yossale

Répondre

3

Si vous voulez rester dans l'écosystème Hadoop, je vous recommande fortement de vérifier Oozie pour automatiser votre flux de travail. Nous (Cloudera) fournissons un packaged version of Oozie que vous pouvez utiliser pour commencer. Voir notre récente blog post pour plus de détails.

+0

Merci Jeff. Oozie s'intègre-t-il à Hive et MySql? –

+1

Oui. Il existe des actions Hive et Sqoop dans la version d'Oozie fournie avec CDH. Sqoop vous permettra d'effectuer des importations et des exportations avec MySQL. Pour exécuter des requêtes sur des données stockées dans MySQL, vous pouvez utiliser l'action Java (http://yahoo.github.com/oozie/releases/2.2.0/WorkflowFunctionalSpec.html#a3.2.7_Java_Action) et un pilote JDBC pour soumettre des requêtes . –

+0

10X encore, je vais regarder dans –

1

Pourquoi ne pas utiliser JasperETL ou Talend? On dirait que le bon outil pour le travail.

+0

Ces outils sont valides, mais je suis à la recherche dans un plus programmatique Solution. Nous utilisions Talend auparavant et nous avons rencontré des problèmes d'échelle. Un autre problème est que les outils graphiques ne sont pas très populaires par les développeurs - les icônes cachent trop de complexité, et la compréhension du flux ETL s'est révélée être un gros effort pour la plupart des développeurs. –

1

Je l'ai utilisé Cascading un peu et nous avons constaté ce qu'il peut être assez impressionnant:

Cascading

Il est une couche d'abstraction M/R, et fonctionne sur Hadoop.

+0

Merci pour la référence @sethcall. Nous avons finalement utilisé spring-batch, qui est beaucoup plus flexible qu'Oozie. –

+1

Deux questions sur le softball: avez-vous trouvé la courbe d'apprentissage acceptable? Vous êtes-vous senti productif en l'utilisant? (Je demande parce que cascade + hadoop, pour les débutants, n'est rien à sauter dedans sans considération sérieuse.Il est solide technologie, et résout un problème très complexe bien, mais avec des bagages) – sethcall

+0

J'utilise Spring depuis longtemps, donc la courbe d'apprentissage n'était pas un problème. Nous sommes plus préoccupés par l'intégration avec nos systèmes existants et la base de code que Spring résout facilement. J'apprécie vraiment la référence. Je ne savais même pas à ce sujet :) –