Non sono un programmatore professionista, ma piuttosto un ingegnere / matematico che usa il computer per risolvere problemi numerici. Finora la maggior parte dei miei problemi sono legati alla matematica, come risolvere sistemi lineari su larga scala, eseguire operazioni di algebra lineare, fft, ottimizzazione matematica ecc. Su scala più piccola, questi sono meglio gestiti da Matlab (e simili pacchetti matematici di alto livello) . Su larga scala, tuttavia, devo ricorrere a linguaggi di basso livello vecchio stile (e MOLTO TEDESCO) come Fortran o C / C ++. Non è tutto, quando il problema diventa eccessivamente grande, la parallelizzazione diventa necessaria, e MPI in questo senso è un incubo da superare.
Recentemente ho sentito parlare di hadoop e di "big data" su base regolare. Ma la mia impressione è che il hadoop NON è un paradigma di calcolo parallelo general-purpose, nel senso che gestisce i dati che richiedono comunicazioni reciproche minime (correggimi se sbaglio). Ad esempio, in un'operazione di LA generale su un set di dati di grandi dimensioni distribuito su più nodi, anziché elaborare indipendentemente la propria parte di dati, ogni nodo deve comunicare con OGNI altro nodo per inviare / ottenere informazioni prima che i propri dati possano essere elaborati correttamente, e l'intero set di dati viene aggiornato solo dopo che TUTTE le comunicazioni sono state eseguite. Spero di aver chiarito il mio punto di vista: nelle applicazioni numeriche, l'elaborazione dei dati è naturalmente GLOBAL, e il "grafico" per la comunicazione spesso è un GRAFICO COMPLETO (sebbene ci siano eccezioni).
La mia domanda è, è haadoop adatto a tale scopo, o è progettato solo per lavori di elaborazione dati "semplici", in cui le comunicazioni tra i nodi distribuiti sono scarse?