auch wenn ich derzeit noch in Palo Alto (CA) sitze, wollte ich schon einmal kurz auf den Contest hinweisen wie Ihr ein JavaOne T-Shirt gewinnen könnt.
Viele von Euch haben sicherlich schon mit verteilten Anwendungen gearbeitet, manche aber sicher auch noch nicht. Ich sehe es als den nächsten Step, den jeder (angehende) Developer zu mindestens ansatzweise wissen sollte.
Daher habe ich mich für folgende Challenge entschieden:
Hazelcast ist ein Toolkit um sehr einfach und schnell verteilte Anwendungen zu bauen. Es bietet viele Basisimplementierungen wie Maps, Listen, Sets, Topics (PubSub) und ähnliches. Zu 99% greift es dabei auf die üblichen Java-Interfaces zurück um schnell Erfolge zu sehen.
Die Idee ist nun, ein kleines, lustiges, verteiltes Programm zu schreiben. Es ist dabei vollkommen egal ob es sich um ein Spiel handelt welches Hazelcast für Realtime Communication nutzt, ob es eine kleine verteilte Datenbank-Anwendung wird oder ein Messenger. Es liegt vollkommen bei Euch - überrascht mich
Der Contest läuft bis Mitte November. Bis dahin wird jede Application angenommen und mit in die Verlosung aufgenommen.
Ja, Hazelcast hatte ich irgendwann mal über den Link in deiner Signatur gefunden, und fand das von der Idee her schon sau-cool (nicht zuletzt, weil mal im Raum stand, dass ich an der Entwicklung von etwas ähnlichem arbeiten sollte). Auch wenn ich vermutlich nicht den kreativen Funken auffangen werde, der zur Teilnahme notwendig ist, nur allgemein: Nach welchen Kriterien wird der Gewinner ermittelt?
Der kleine Zettel mit der Aufschrift “Hazelcast!” ist in meiner Queue schon ein Stück weiter hoch gewandert, aber da es noch an kreativen Ideen fehlt, könnte ich bestenfalls auf “wenige Mitbewerber” spekulieren - was aber auch schade wäre…
Es gibt zwar Experimente zu MapReduce (mit Hadoop) + JCuda, aber … leider sind Java Collections und CUDA erstmal SO unterschiedliche Welten, dass es schwer würde, da irgendeine sinnvolle Kombination zu finden. (Plain primitive arrays FTW :D)
Jetzt hab’ ich nochmal hochgescrollt, und gesehen, dass da nichts von „sinnvoll“ in den Anforderungen stand Aber wenn, dann dachte ich eher an irgendwas Spiel-artiges, oder irgendwas, was einfach nur ein fancy Experiment ist (und nicht unmittelbar, aber zumindest in bezug auf den Erkenntnisgewinn oder eine „Horizonterweiterung“ als „sinnvoll“ bezeichnet werden könnte). Zeit ist halt auch immer so eine Sache, aber mal schauen, ob sich die Gelegenheit ergibt, da was zu basteln… :reflect:
Es gibt mindestens zwei mögliche Schlüsse, die man aus der Anzahl derer, die bisher in diesem Thread etwas geschrieben haben, ziehen kann: Entweder, keiner wird teilnehmen, oder diejenigen, die teilnehmen, halten das bisher geheim.
Ersteres wäre verständlich. Eine kreative Idee kommt ja nicht einfach so auf Abruf.
Letzteres wäre auch verständlich. Wer will sich schon seine kreative Idee klauen lassen?
Aber ein Hinweis, und sei es nur ein „Ich bastle da an was…“ wäre schon interessant…
Ich habe mir Hazelcast jetzt mal „angesehen“ (auf der Ebene von „Das HelloWorld mal laufen lassen“ :o ) : Irgendwie habe ich das Gefühl, dass man damit richtig coole Sachen machen könnte, aber eingefallen ist mir bisher nichts. Das MapReduce auf Basis von Hazelcast ist in diesem Sinne ja schon fast „nahe liegend“, und da ich mir auch MapReduce schon länger mal ansehen wollte, habe ich das gleich mit in meine Inspirationssuche einbezogen … aber auch DA liest man immer nur „Joa, damit kann man Worthäufigkeiten zählen“ :rolleyes: Hm. Irgendwie muss da noch mehr dahinter stecken :reflect:
Wegen der „Idee fällt nicht vom Himmel“ Sache:
Deswegen habe ich einen Monat gegeben, mit HZ anfangen ist zügig, sollte also nicht die große Zeitverzögerung sein. Bleibt das Problem „was kann man cooles mit verteilten Anwendungen bauen?“
Jetzt weiß ich, was mich am Titel dieses Threads dauernd so irritiert. Naja, gut, dass die Konferenz nicht “Wet” heißt :o)
Wie auch immer. Gibt’s in CastMapR schon vorgefertigte, generische Identity-Mapper und Reducer? (Wenn ja, habe ich die API doc wohl noch nicht richtig überblickt, und) wenn nicht, könnte man sowas in Betracht ziehen. Braucht man anscheinend öfter mal. (Ich fräs’ mich da gerade erst in die oberste Schicht der Oberfläche… :o )
Hab schon eine Idee, die halbwegs Sinn macht. Muß allerdings noch ein paar Kleinigkeiten überdenken und dann die nötige Zeit und Muse finden das dann auch umzusetzen. Eine andere Geschichte hab ich erstmal hinten angestellt, da ich da noch zuviele Probleme sehe.
Ein Problem an dem Hazelcast ist halt wirklich einen Anwendungsfall zu finden. So ein verteiltes System macht ja auch erst Sinn, wenn man mehrere Rechner zur Verfügung hat. Dafür muss dann auch das Problem groß genug sein.
Nun, große Probleme zu finden könnte schwierig werden. Dafür bräuchte man ja richtig Große Daten. (Oder wie soll man „Big Data“ übersetzen? ). Sowas wie Matrixmultiplikation ist einerseits ein Kandidat, aber da müßte es entweder um wirklich gigantische, dicht besetzte Matrizen gehen, oder man muss sich überlegen, welche Sparse Datenstruktur für diesen Fall der geeignetste ist (und damit sich das für Sparse Matrizen lohnt, müßten es ja wiederum astronomisch viele non-zeros sein). Ich hatte auch angesetzt, mal zu schauen, welche Graphenalgorithmen man da drauf loslassen könnte. Da gibt’s zwar ein paar (die jemand schon auf MapReduce abgebildet hat, deswegen wäre CastMapR da praktisch ), aber da stellt sich erstens die Frage, ob das bzgl. der Performance wirklich Sinn macht, und ob es nicht etwas gibt, was „mehr her macht“, als ein Kommandozeilentool, das stundenlang rechnet und am Ende „42“ ausgibt. Deswegen hab’ ich jetzt nochmal mit etwas Spiel-artigem angefangen, aber auch da könnte man den Sinn in Frage stellen: FALLS das irgendwann mal lauffähig wird, wird Hazelcast da nur ein theoretisches, unter vielen Schichten verstecktes „Implementierungsdetail“ sein, das nicht wirklich ausgenutzt wird. Naja, mal schauen, was sich ergibt.
[QUOTE=Majora]Hab schon eine Idee, die halbwegs Sinn macht. Muß allerdings noch ein paar Kleinigkeiten überdenken und dann die nötige Zeit und Muse finden das dann auch umzusetzen. Eine andere Geschichte hab ich erstmal hinten angestellt, da ich da noch zuviele Probleme sehe.
Ein Problem an dem Hazelcast ist halt wirklich einen Anwendungsfall zu finden. So ein verteiltes System macht ja auch erst Sinn, wenn man mehrere Rechner zur Verfügung hat. Dafür muss dann auch das Problem groß genug sein.[/QUOTE]
Nee du kannst relativ simpel zum testen auch mehrere Instanzen innerhalb der selben JVM starten oder mehrere Prozesse parallel starten. Mir geht es mehr um die Idee
Vielleicht kann ich die beste Idee mal in unserem Amazon EC2 laufen lassen @Marco13
Ich denke die Sinnhaftigkeit ist nicht so wichtig eher dass es eine lustige, coole Idee ist
einfügt, würde ich das als „Thema verfehlt“ abstempeln (und mein zweiter Ansatz würde auf so etwas hinauslaufen, aber die übrigen 4999 Zeilen wären auch ganz unterhaltsam, deswegen ist mir das egal ). Die Möglichkeiten, die Hazelcast bietet, wirklich auszunutzen erfordert wohl etwas mehr Kreativität. Der verteilte ExecutorService klingt toll, den würde ich gerne mal antesten, aber … womit füttern? Naja, vielleicht wirklich mal eines dieser Straightforward-Fälle wie Matrixmultiplikation ausprobieren…
Wir hatten in der Uni bei Verteilten Systemen oder so die Matrixmultiplikation ich glaube einer 1000x1000 Matrix mal einer 1000x1000 Matrix [oder sogar 10.000x10.000 mal 10.000x10.000 bin mir nicht sicher] (befüllt mit Zufallswerten) und den Vergleich zwischen Berechnung auf einer Maschine Single Thread und Verteiltem Berechnen gibt da ja auch verschiedene Möglichkeiten, wie man das dann aufteilen kann, ist aber von der Theorie her einfach
Also 1000x1000 löst man heute im Schlaf, d.h. entweder das ist schon 20 Jahre her, oder war 10000x10000 Mit „Straightforward-Fälle“ meinte ich gerade das - nämlich dass die wichtigsten Zerlegungsmethoden da auch gleichzeitig recht einfach sind. Sowas wie http://de.wikipedia.org/wiki/Strassen-Algorithmus sollte man ziemlich direkt runterschreiben können. Das spannende ist DA dann eher, wie man die Daten am besten repräsentiert, und ob nicht das Verteilen der Daten schnell zum Bottleneck wird (und auch bleibt). Am besten wäre, wenn man irgendwelche kleinen (am besten GAR keine ;)) Eingabedaten hätte, und die Berechnung „beliebig“ aufwändig wäre. Sowas wie ein brute-force-Passwortknacker oder so, aber… das ist auch schon fast langweilig.