MRNT - der map/reduced Newsticker (MapReduce Teil 3)

Okay, letztlich war es leichter als gedacht - wenn man Servlets erstmal verstanden hat. Die neue Java-Webanwendung ist zwar noch nicht perfekt, aber das Projekt soll ja auch noch Potential fuer ein Release 2.0 hergeben und die prinzipielle Funktionsweis…

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

Okay, letztlich war es leichter als gedacht - wenn man Servlets erstmal verstanden hat. Die neue Java-Webanwendung
ist zwar noch nicht perfekt, aber das Projekt soll ja auch noch Potential fuer ein Release 2.0 hergeben und die
prinzipielle Funktionsweise von Servlets und Apache Tomcat demonstrieren.

Kernkomponente unserer Anwendung ist jetzt NNTP.class. Wir kennen die Java-Klasse schon aus frueheren Tests, aber
nun ist es ein Servlet:

http://www.eumelnet.de:8080/cloud/NNTP.servlet.html


Es hat die HTTP-Servlet Classes bekommen, erwartet
Parametereingaben und ruft zum Schluss per Systemcall das Hadoop auf., nachdem es alle Artikel der gewuenschten
Gruppe abgeholt hat.Wir koennten die Servlet-Klasse in /usr/local/apache-tomcat-6.0.26/webapps/cloud/WEBINF/
classes kompilieren:

javac -cp /usr/local/share/java/gnumail.jar:/usr/local/share/java/gnumail-provider
s.jar:/usr/local/share/java/inetlib.jar:/usr/local/apache-tomcat-6.0.26/lib/servlet-api.jar NNTP.java

 


Aber dann muessten wir gnumail.jar und inetlib.jar als CLASSPATH in die catalina.sh schreiben, aber es geht auch
anders: Die benoetigten jars einfach ins Tomcat-Lib-Verzeichnis unter /usr/local/apache-tomcat-6.0.26/lib/ kopieren.
In /usr/local/apache-tomcat-6.0.26/webapps/cloud/WEB-INF/web.xml machen wir das Servlet fuer den Browser sichtbar:


NNTP
NNTP


NNTP
/NNTP


Nach dem Tomcatneustart koennte das Servlet schon funktionieren, wenn wir es mit den Parametern direkt fuettern.
Stattdessen bauen wir noch eine schicke Java-Server-Page fuer die Eingabe:
http://www.eumelnet.de:8080/cloud/mrnt.jsp.html

Die Ausgabe holen wir uns von dieser Server-Page ab:http://www.eumelnet.de:8080/cloud/load.jsp.html

Wir haben also Daten-Eingabe/-Ausgabe und -Verarbeitung gut
entkoppelt. Jedoch krankt unsere Webanwendung gleich an mehreren Stellen:


- Only one Single-Thread. Parallele Verarbeitung und mehrere gleichzeitige Benutzer nicht moeglich.
- Abholen der News dauert bei grossen Gruppen sehr lange. Hier wuerde ein Background-Job besser laufen
- Ausgabe der Artikelanzahl nicht begrenzt (bei 5000 Artikeln gibt es eine Art von Timeout)
- Eingabe wird nicht ueberprueft (eher ein fehlendes Sicherheitsfeature)
- Hadoop wird direkt aufgerufen und nicht als Jobconf im Hadoop-Cluster. Deswegen laeuft Hadoop auch noch relativ
lang. Aber das ist dann vielleicht etwas fuers naechste Release, oder ;-)

Das Ergebnis des Projekts gibt es erstmal
hier: http://www.eumelnet.de:8080/cloud/mrnt.jsp