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 NNTP-Klasse, 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

 

   

Blogs  

   
© ALLROUNDER