2010-08-16 17 views
7

Sto cercando di sostituire una serie di script ETL Python che eseguono un riepilogo dei dati notturni/orari e la raccolta di statistiche su una grande quantità di dati.Spring-Batch per un'enorme elaborazione notturna/oraria Hive/MySQL

Quello che mi piacerebbe realizzare è

  • Robustezza - un posto di lavoro/step in mancanza deve essere riavviato automaticamente. In alcuni casi, mi piacerebbe eseguire invece una fase di ripristino.
  • Il framework deve essere in grado di ripristinare da arresti anomali. Immagino che sarebbe necessaria una certa persistenza qui.
  • Monitoraggio - Devo essere in grado di monitorare lo stato di avanzamento dei lavori/passaggi e preferibilmente visualizzare cronologia e statistiche relative alle prestazioni.
  • Tracciabilità - Devo essere in grado di comprendere lo stato delle esecuzioni
  • Intervento manuale - bello avere ... essere in grado di avviare/interrompere/sospendere un lavoro da un'API/interfaccia utente/riga di comando.
  • Semplicità: preferisco non arrabbiarmi con i colleghi quando introduco la sostituzione ... Avere un'API semplice e facile da capire è un requisito.

Gli script attuali effettuare le seguenti operazioni:

  • registri di testo raccogliere da molte macchine, e li spingono in Hadoop DFS. Potremmo utilizzare Flume per questo passaggio in futuro (vedere http://www.cloudera.com/blog/2010/07/whats-new-in-cdh3b2-flume/).
  • Eseguire le query di riepilogo sui dati e inserire (sovrascrivere) le nuove tabelle/partizioni di Hive con Hive.
  • Estrarre i nuovi dati di riepilogo in file e caricare (unire) in tabelle MySql. Questi sono i dati necessari in seguito per i rapporti online.
  • Eseguire ulteriori join sui dati MySql appena aggiunti (dalle tabelle MySql) e aggiornare i dati.

La mia idea è di sostituire gli script con spring-batch. Ho anche esaminato Scriptella, ma credo che sia troppo "semplice" per questo caso.

da quando ho visto alcune vibrazioni negative su Spring-Batch (principalmente vecchi post) spero di ottenere alcuni input qui. Inoltre, non ho visto molto sull'integrazione Spring-batch e Hive, il che è problematico.

+0

Questi script sono nati nel peccato.Lo so, li ho scritti :) – Yossale

+0

Spank per la tua eredità @yossale –

+0

Fintanto che non sono io quello che deve sistemarlo .. :) – Yossale

risposta

3

Se si desidera rimanere all'interno dell'ecosistema Hadoop, si consiglia vivamente di controllare Oozie per automatizzare il flusso di lavoro. Noi (Cloudera) forniamo uno packaged version of Oozie che è possibile utilizzare per iniziare. Vedi il nostro recente blog post per maggiori dettagli.

+0

Grazie Jeff. Oozie si integra con Hive e MySql? –

+1

Sì. Ci sono azioni Hive e Sqoop nella versione di Oozie in pacchetto con CDH. Sqoop ti permetterà di eseguire importazioni ed esportazioni con MySQL. Per eseguire query su dati archiviati in MySQL, è possibile utilizzare l'azione Java (http://yahoo.github.com/oozie/releases/2.2.0/WorkflowFunctionalSpec.html#a3.2.7_Java_Action) e un driver JDBC per inviare query . –

+0

10X di nuovo, lo esaminerò –

1

Perché non utilizzare JasperETL o Talend? Sembra lo strumento giusto per il lavoro.

+0

Questi strumenti sono validi, ma sto cercando in un programma più programmatico soluzione. In realtà stavamo usando Talend in precedenza e abbiamo riscontrato alcuni problemi di scala. Un altro problema è rappresentato dal fatto che gli strumenti grafici non sono molto popolari tra gli sviluppatori: le icone nascondono troppa complessità e la comprensione del flusso ETL si è rivelata un grande sforzo per la maggior parte degli sviluppatori. –

1

ho usato in cascata un po 'e l'ho trovato essere abbastanza impressionante:

Cascading

Si tratta di un livello di astrazione M/R, e gira su Hadoop.

+0

Grazie per il riferimento @sethcall. Alla fine abbiamo usato il batch di primavera che è molto più flessibile di Oozie. –

+1

Due domande su softball: hai trovato accettabile la curva di apprendimento? Ti senti produttivo usandolo? (Chiedo perché cascading + hadoop, per i neofiti, non è nulla da aggiungere senza una seria considerazione: è una tecnologia solida e risolve un problema molto complesso, ma con alcuni bagagli) – sethcall

+0

Uso Spring da molto tempo, quindi la curva di apprendimento non era un problema. Siamo più preoccupati dell'integrazione con i nostri sistemi esistenti e della nostra base di codice che Spring risolve facilmente. Apprezzo molto il riferimento. Non lo sapevo nemmeno :) –