MapReduce

Jahrelang habe ich mich gegen Java und Tomcat gescheut wie der Teufel das Weihwasser. Dieser Vergleich ist aktuell etwas ungluecklich gewaehlt, obwohl ... ich kann von jahrelangem Missbrauch von Standard-Javaklassen berichten! Nachdem all die Jahre sich…

Posted by eumel8 on January 09, 2011 · 3 mins read

Jahrelang habe ich mich gegen Java und Tomcat gescheut wie der Teufel das Weihwasser. Dieser Vergleich ist aktuell
etwas ungluecklich gewaehlt, obwohl ... ich kann von jahrelangem Missbrauch von Standard-Javaklassen berichten!
Nachdem all die Jahre sich so eine Art Voodoo um Java entwickelt hat, war es jetzt an der Zeit, etwas dagegen zu tun
und mit dem alten Frust aufzuraeumen. Ich besorgte mir von http://tomcat.apache.org den aktuellen Tomcat 6 und los
gings...

Als erstes brauch unser Projekt ein Ziel. Ziel war es, aus dem Text der taeglichen Nachrichten die meistverwendeten
Woerter herauszufinden. Klar wird das "und", "der", "die", "das" sein, aber es gibt auch andere Wortungetueme, die
durch die Presse unter der Hand in Umlauf gebracht werden. Dies soll unser Projekt darstellen. Dann brauchen wir
Software. Der aktuellste Tomcat war unter obiger Adresse schnell zu finden und heruntergeladen. Die Konfiguration
beschraenkt sich auf Anpassung von JAVA_HOME. Wenn man noch kein Java vom Paket installiert hat, kann man sich
von http://java.sun.com JRE und JDK herunterladen. Das erste ist so eine Art Laufzeit-Java und das zweite das
Entwicklungssystem. Da wir auch Java-Klassen entwickeln, brauchen wir beides. Nach Start des Tomcat praesentiert
sich dieser auf http://www.eumelnet.de:8080/ mit einer Startseite und einigen Beispielanwendungen. Durch Anlegen
eines Directory erzeugen wir eine eigene Webapp. Unsere Ziel-URL ist
http://www.eumelnet.de:8080/cloud/load2.jsp. Eine Java-Klasse, die mit NNTP News lesen tut, wurde im Netz schnell
gefunden. Additional brauch man noch paar weitere Pakete: GNU JavaMail and GNU JAF and GNU inetlib. Die NNTPKlasse,
ist als Source NNTP.java verfuegbar. Wenn man die erforderlichen Kommandos unter NNTP kennt und die GNU
JavaMail Klassenbeschreibung im Internet liest, wird man schnell den Source an seine Beduerfnisse anpassen koennen.
Das Beduerfnis lautet: Hole einfach alle Artikel-Bodies einer Newsgruppe und schreibe diese in eine Datei.Die
NNTP.java wird dann einfach mit javac nach NNTP.class uebersetzt. Mit NNTP.class kann man dann schon loslegen
und zum Newsserver seines Vertrauens connecten. Ich benutze ein RSS2NNTP-Gateway une bekomme also alle
aktuellen Nachrichten als NNTP-Artikel in eine Newsgruppe geliefert. Nach dem Aufruf habe ich eine Textdatei mit dem
Output, also allen Article-Bodies.Was ist MapReduce? MapReduce ist eine von Google entwickelte Technologie zur
nebenlaeufigen Berechnung von Daten. Der Wikipedia-Artikel mutet etwas wissenschaftlich an. Im Prinzip mapt man
Daten in einer Tabelle und reduziert den Output bis zum gewuenschten Treffer. Als "Daten" soll hier mal "Das Internet"
angefuehrt werden. Man ahnt vielleicht schon, dass das ganz schoen viel zu berechnen ist, aber wenn man sich das
mehrdimensional darstellt, dann arbeiten ganz viele Rechnerinstanzen parallel an den Daten und reduzieren den Output
bis ich den besten Suchtreffer habe. Oder ich kriege als Output die Anzahl der verwendeten Woerter aus einer
Mappingtabelle meiner Newsartikel. Und da sind wir schon wieder bei unserem Projekt. Wir besorgen uns Hadoop von
der Apache-Webseite. Die Seite selbst macht nicht viel her, genaugenommen besitzen wir aber eine Freewareversion
der Google-Software. Im Sourcepaket befindet sich schon eine Wordcount.java-Klasse. Wir koennen also mit javac und
dem Hadoop-Enviroment eine neue Java-Klasse erstellen und mit dem Aufruf von hadoop unsere Newsdaten sortieren
lassen. Im output-Directory haben wir dann eine Liste aller vorkommenden Woerter in unseren Newsartikeln. Wenn wir
jetzt noch eine Java Server Page schreiben, koennen wir das Ergebnis im Internet auf unserem Tomcat-Server
praesentieren: http://www.eumelnet.de:8080/cloud/load2.jsp