Domanda

Recentemente ho avuto un gioco intorno con Hadoop ed è stato colpito con la sua pianificazione, la gestione e la segnalazione di posti di lavoro MapReduce. Sembra di fare la distribuzione e l'esecuzione di nuovi posti di lavoro del tutto senza soluzione di continuità, permettendo allo sviluppatore di concentrarsi sull'attuazione dei loro posti di lavoro.

Mi chiedo se qualcosa esiste nel dominio di Java per l'esecuzione distribuita di posti di lavoro che non sono facilmente espressa come problemi MapReduce? Ad esempio:

  • lavori che richiedono attività di coordinamento e la sincronizzazione. Ad esempio, essi possono comportare esecuzione sequenziale dei compiti tuttavia è possibile eseguire alcuni compiti contemporaneamente:

                   .-- B --.
            .--A --|       |--.
            |      '-- C --'  |
    Start --|                 |-- Done
            |                 |
            '--D -------------'
    
  • CPU attività ad alta intensità che vorreste distribuire, ma non forniscono alcuna uscite per ridurre -. la conversione di immagini / ridimensionamento ad esempio

Quindi c'è un Java framework / piattaforma che fornisce un tale ambiente di calcolo distribuito? O è questo genere di cose accettabili / ottenibile utilizzando Hadoop -? E se sì ci sono dei modelli / linee guida per questo tipo di lavori

È stato utile?

Soluzione

da allora ho trovato primavera Batch e Primavera Batch Integrazione che sembrano affrontare molte delle mie esigenze. Vi farò sapere come mi trovo.

Altri suggerimenti

Date un'occhiata a quarzo . Penso che supporta cose come la gestione di posti di lavoro in remoto e di clustering diverse macchine per eseguire i processi.

Credo che siete alla ricerca di un motore di workflow per le attività ad alta intensità di CPU (anche sapere "flusso di lavoro scientifico", ad esempio, http://www.extreme.indiana.edu/swf-survey ). Ma io non sono sicuro di come distribuita vuoi che sia. Di solito tutti i motori di workflow hanno un "single point of failure".

Credo non pochi problemi possono essere espressi come mappa-ridurre i problemi.

Per i problemi che non possono essere modificati per adattarsi alla struttura del vostro può guardare a creare il proprio utilizzando Java ExecutorService . Ma sarà limitata ad un JVM e sarà piuttosto basso livello. Essa consentirà una facile coordinamento e la sincronizzazione comunque.

ProActive Scheduler sembra per soddisfare le vostre esigenze, in particolare i flussi di lavoro complessi si menzionate con coordinamento compiti. E 'open source e Java based. Si può usare per eseguire qualsiasi cosa, i lavori Hadoop, gli script, il codice Java, ...

Disclaimer: io lavoro per l'azienda dietro di esso

Redisson quadro. Esso fornisce un facile API per l'esecuzione e il calendario e le attività java.util.concurrent.Callable java.lang.Runnable. Ecco documentazione su servizio esecutore distribuito e servizio di pianificazione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top