Perché la tempesta non fornisce un meccanismo per fornire giare dipendenti necessarie per la topologia oltre al barattolo di grasso?

1

Di seguito è riportata una domanda che ho postato all'indirizzo incubator-storm-user mailing list (verbatim). Avevo deciso di aprire la domanda anche qui, perché contiene anche un lato concettuale ad esso, a cui potrebbero rispondere gli utenti non tempestosi.

I am no python expert and am also a newbie to storm.

I have gone over the storm source code in order to see how to add jars to the classpath. Obviously, the preferred mechanism is the fat jar (as specified in Micheal Noll's tutorial and another post on the storm-user mailing list). The second seemingly available mechanism is via the USER_CONF_DIR which amounts to os.path.expanduser("~/.storm") but this does not allow for topology independent versioning of the same jars (e.g. apache-commons-aaa version x and version y). There does not seem to be a third way. Many other Java based technologies do give a way to amend the classpath. Why doesn't storm?

Per generare un po 'la domanda, perché un framework / contenitore software (in cluster) java non fornisce un meccanismo per aggiungere giare dipendenti specifici dell'app, ma ti costringe ad usare i grassi jar?

    
posta Yaneeve 11.05.2014 - 13:13
fonte

1 risposta

2

Prima di tutto, parliamo di cosa dovrebbe essere Storm . Dalla loro prima pagina otteniamo:

Storm is a distributed realtime computation system. Similar to how Hadoop provides a set of general primitives for doing batch processing, Storm provides a set of general primitives for doing realtime computation. Storm is simple, can be used with any programming language, is used by many companies, and is a lot of fun to use!

E da la loro wiki abbiamo anche:

Unfortunately, these data processing technologies are not realtime systems, nor are they meant to be. There's no hack that will turn Hadoop into a realtime system; realtime data processing has a fundamentally different set of requirements than batch processing.
However, realtime data processing at massive scale is becoming more and more of a requirement for businesses. The lack of a "Hadoop of realtime" has become the biggest hole in the data processing ecosystem.
Storm fills that hole.

Con la "citazione di denaro" che è questa parte:

Storm provides a set of general primitives for doing realtime computation. Storm is simple...

Quindi Storm è nato come qualcosa che doveva essere piccolo, follemente veloce 1 e semplice.

E mentre non ho tirato il file jar per vedere le sue dimensioni effettive, la mia aspettativa basata sulla descrizione del progetto è che il "file jar grasso" è ragionevolmente piccolo. Se non lo è, penso che il progetto abbia perso uno dei suoi obiettivi originali.

Il fatto che stiano tentando di creare un set di primitive per questo tipo di calcolo implica anche che stiano cercando di mantenere le cose concise. O detto in un altro modo, stanno cercando di evitare il rigonfiamento e si stanno concentrando sul fornire solo un nucleo di funzionalità.

Dobbiamo anche considerare la semplicità come uno degli obiettivi principali del progetto. Really Good Simplicity (tm) si estende oltre le chiamate API e nel pacchetto stesso. Non avere molte opzioni di configurazione rende più semplice e semplice la distribuzione del progetto.

Quando arrotoli questi tre elementi insieme, penso che il contrario della tua domanda sia una risposta appropriata. Perché vorresti vuoi l'ulteriore capacità di configurazione che stai descrivendo? Complicherà l'implementazione (quindi è meno semplice), incoraggerà l'allontanamento da un set di funzionalità ristrette e, comunque, ti preoccuperai comunque di una dimensione di file banale.

E questa è la tua risposta architettonica. Non è stato fatto perché non è mai stato concepito per essere supportato in quel modo. L'architettura e il design implicano il taglio di percorsi in modo che la forma possa essere formata o definita. Anche se certamente non ho progettato il pacchetto Storm, posso vedere dove i loro architetti possono aver rifiutato quello che stai chiedendo al fine di raggiungere gli altri obiettivi del progetto.

1 Okay, i sistemi in tempo reale sono meglio definiti come sistemi che garantiranno una risposta entro un determinato periodo di tempo.

    
risposta data 19.05.2014 - 16:00
fonte

Leggi altre domande sui tag