2010-03-19 15 views
6

Ho letto alcuni documenti su hadoop e ho visto risultati impressionanti. Ottengo l'immagine più grande, ma sto trovando difficile se si adatta al nostro setup. Questione di programmazione isnt legato, ma io sono ansioso di chiedere il parere di persone che attualmente lavorano con Hadoop e come si adatterebbe nostra messa a punto:domanda principianti hadoop

  • Usiamo Oracle per backend
  • Java (Struts2/Servlet/iBatis) per frontend
  • Ogni notte riceviamo dati che devono essere riassunti. questo funziona come un processo batch (richiede 5 ore)

Stiamo cercando un modo per ridurre quelle 5 ore a un tempo più breve.

Dove si adatterebbe questa immagine? Possiamo ancora continuare a utilizzare Oracle anche dopo hadoop?

+0

Che volume di dati [GB o TB] e che tipo di riassunto? –

+0

sqoop è un buon strumento se hai bisogno di dati da Oracle per essere importati in hadoop – wlk

risposta

4

È probabile che si possa ridurre drasticamente il tempo trascorso di tale processo batch con una sintonizzazione semplice.Offro questa analisi sulla base semplice dell'esperienza passata. I processi batch tendono ad essere scritti molto male, proprio perché sono autonomi e quindi non hanno utenti irati che richiedono tempi di risposta migliori.

Certamente non penso che abbia senso investire molto tempo ed energie per implementare nuovamente la nostra applicazione in una nuova tecnologia - non importa quanto fresca e fresca possa essere - finché non abbiamo esaurito le capacità della nostra attuale architettura.

Se desideri alcuni consigli specifici su come ottimizzare la query batch, beh quella sarebbe una nuova domanda.

2

Hadoop è progettato per parallelizzare un lavoro su più macchine. Per determinare se sarà un buon candidato per la configurazione, porsi queste domande:

  • Devo molte macchine su cui posso correre Hadoop, o sono disposto a spendere soldi per qualcosa come EC2?

  • è il mio lavoro parallelizzabile? (Se il tuo processo batch di 5 ore consiste di 30 attività da 10 minuti che devono essere eseguite in sequenza, Hadoop non ti aiuterà).

  • i miei dati richiedono l'accesso casuale? (Questo è in realtà piuttosto significativo: Hadoop è ottimo all'accesso sequenziale e terribile all'accesso casuale. In quest'ultimo caso, non si vedrà abbastanza accelerazione per giustificare il lavoro/costo extra).

Per quanto riguarda il punto in cui "si adatta", fornite a Hadoop una serie di dati e vi restituisce l'output. Un modo per pensarlo è come un gigantesco processo Unix: i dati entrano, i dati vengono fuori. Quello che fai con esso è affar tuo. (Si tratta ovviamente di una vista eccessivamente semplificata, ma si ottiene l'idea.) Quindi sì, si sarà ancora in grado di scrivere dati nel database Oracle.

+0

secondo passo è un fallimento nel mio caso. sebbene non siano attività di 10 minuti, ma ogni attività dipende dal completamento dell'attività precedente. ci sono altre soluzioni o dovremmo solo concentrarci sull'ottimizzazione delle nostre query .. – Omnipresent

+0

Beh, se le singole attività sono di lunga durata è possibile parallelizzare ciascuna di esse. Supponi di avere cinque compiti che durano un'ora ciascuno. Se si dispone di un cluster di cinque macchine, è possibile teoricamente accelerare un'attività fino a 12 minuti (60/5). Puoi anche utilizzare lo stesso cluster per eseguire ognuna delle attività, quindi questo ridurrebbe il tempo totale a un'ora anziché a 5. Se le attività sono brevi, non vedrai questo vantaggio poiché il sovraccarico di impostazione del lavoro supererà la velocità. Quindi, per riassumere, questo funzionerà se riesci a suddividere il tuo lavoro in singoli pezzi che sono entrambi – danben

0

Hadoop file system distribuito supporta l'elaborazione in batch in parallelo altamente di dati usando MapReduce.

Quindi il processo corrente richiede 5 ore per riepilogare i dati. Del resto, i compiti generali di riepilogo sono uno dei "tipi" di lavoro su cui MapReduce eccelle. Tuttavia, è necessario comprendere il tempo in cui i requisiti di elaborazione si tradurranno in un lavoro MapReduce. Con questo voglio dire, puoi ottenere i sommari che ti servono usando le coppie chiave/valore che MapReduce ti limita ad usare?

Hadoop richiede un cluster di macchine da eseguire. Hai hardware per supportare un cluster? Questo di solito dipende dalla quantità di dati che si stanno memorizzando su HDFS e dalla velocità con cui si desidera elaborare i dati. Generalmente quando esegui MapReduce su un Hadoop più macchine hai o più dati puoi archiviare o più velocemente esegui un lavoro. Avere un'idea della quantità di dati che elaborate ogni notte sarebbe di grande aiuto qui?

È ancora possibile utilizzare Oracle. È possibile utilizzare Hadoop/MapReduce per eseguire il crunch dei dati e quindi utilizzare il codice personalizzato per inserire i dati di riepilogo in un DB Oracle.

Problemi correlati