So che ci sono domande simili a questa, come ad esempio:Chiarimento di casi d'uso per Hadoop contro RabbitMQ + sedano
- https://stackoverflow.com/questions/8232194/pros-and-cons-of-celery-vs-disco-vs-hadoop-vs-other-distributed-computing-packag
- Differentiate celery, kombu, PyAMQP and RabbitMQ/ironMQ
ma mi sto chiedendo questo perché sto cercando una distinzione più particolare supportata da un paio di esempi di casi d'uso, per favore.
così, sono un utente pitone che vuole fare programmi che sia/sia:
- sono troppo grandi per
- troppo lungo
fare su una singola macchina e elaborarli su più macchine. Ho familiarità con il pacchetto multiprocessing (macchina singola) in python, e scrivo codice di stile mapreduce in questo momento. So che la mia funzione, per esempio, è facilmente parallelizzabile.
Nel chiedere le mie solite intelligenti CS consigli-givers, ho formulato la mia domanda come:
"Voglio fare un compito, dividerlo in una serie di attività secondarie che vengono eseguiti contemporaneamente su un mucchio di macchine, quindi quei risultati devono essere aggregati e trattati secondo alcune altre funzioni, che possono essere ridotte, o possono essere istruzioni per aggiungere in serie ad un database, ad esempio. "
Secondo questa ripartizione del mio caso d'uso, penso che potrei ugualmente usare Hadoop o un insieme di lavoratori di Celery + broker RabbitMQ. Tuttavia, quando chiedo ai saggi consiglieri-donatori, mi rispondono come se fossi totalmente pazzo a guardare a Hadoop e Celery come soluzioni comparabili. Ho letto un bel po 'di Hadoop e anche di Celery --- Penso di avere una buona conoscenza di quello che entrambi --- quello che non capisco è:
- Perché sono considerato così separato, così diverso?
- Dato che sembrano ricevere tecnologie totalmente diverse --- in che modo? Quali sono i casi d'uso che distinguono l'uno dall'altro o sono migliori per uno rispetto all'altro?
- Quali problemi potrebbero essere risolti con entrambi e quali aree sarebbe particolarmente folle usare l'una o l'altra per?
- Ci sono modi migliori e più semplici per ottenere Pool.map() multiprocessore come funzionalità per più macchine? Immaginiamo che il mio problema non sia limitato dallo storage, ma dalla CPU e dalla RAM necessarie per il calcolo, quindi non c'è un problema nel disporre di troppo poco spazio per contenere i risultati restituiti dai lavoratori. (cioè, sto facendo qualcosa come la simulazione dove ho bisogno di generare un sacco di cose sulle macchine più piccole seminate da un valore da un database, ma queste sono ridotte prima che ritornino alla macchina/database di origine.)
Capisco che Hadoop sia lo standard per i big data, ma anche Celery sembra ben supportato; Apprezzo che non sia java (l'API di streaming che python deve usare per hadoop mi sembrava a disagio), quindi sarei propenso a usare l'opzione Celery.
Sto indagando su questo, e credo che tu abbia ragione, e questo è stato di grande aiuto. ZeroMQ è abbastanza sorprendente finora. Questo è un posto strano tra il calcolo distribuito e il corretto indirizzamento dei messaggi, la programmazione di rete. Sto ancora cercando di risolverlo. – Mittenchops
Amo ZeroMQ. Grazie! – Mittenchops
@Mittenchops Sono contento di averti conquistato. Ci vuole un po 'di tempo per superare l'ostacolo iniziale, ma ne vale la pena. – RickyA