Verteilte Dateisysteme Enterprise

Verteilte Datenanalyse aus der Lucene-Familie

Apache Hadoop
Immer mehr Bereiche in Wissenschaft, Forschung und Wirtschaft sind auf die Fähigkeit angewiesen, effizient auch große Datenmengen zu speichern und gewinnbringend auswerten zu können: Die Entscheidung über die Kreditwürdigkeit eines Kunden bei Banken ist von umfangreichen Faktoren abhängig, die längst nicht mehr manuell ausgewertet werden können. Nicht nur bei Unternehmen wie Google und Yahoo! kommen Technologien zum Einsatz, die die verteilte Verarbeitung von unstrukturierten und semistrukturierten Dokumenten zur Informationsgewinnung ermöglichen: Auch im Marketing, zur Trendanalyse sowie für die personalisierte Auswahl von auf Webseiten anzuzeigenden Werbeanzeigen wird die Auswertung immer größerer Datenmengen wichtig. Selbst kleine und mittelständische Unternehmen in Deutschland stehen immer öfter vor der Herausforderung, wachsende Mengen von Rohdaten in angemessener Zeit verarbeiten zu müssen.

von Isabel Drost
Liegen die zu verarbeitenden Daten in rein strukturierter Form vor und lassen sich leicht auf ein relationales Modell mappen, liegt der Einsatz herkömmlicher relationaler Datenbanken für die Speicherung nahe. Als Abfragesprache wird auf SQL zurückgegriffen. Ein großer Vorteil liegt dabei in der Unterstützung gängiger Tools sowie der Vertrautheit der meisten Entwickler mit diesen Technologien. Doch was ist, wenn sich die Daten nicht sinnvoll in ein relationales Schema umwandeln lassen? Was ist, wenn die Anzahl der durchzuführenden Analysen so gering

ist, dass sich eine Konvertierung mit anschließendem Import eigentlich gar nicht lohnt? Ein weiteres Problem kann die schiere Menge an zu verarbeitenden Daten darstellen: Vor allem in Fällen, in denen die Datenmenge kontinuierlich anwächst, sollte in die Auswahl einer geeigneten Technologie deren Skalierbarkeit einbezogen werden – wie hoch fallen die Kosten aus, sollen mehr Rechenressourcen einem existierenden System hinzugefügt werden? Lassen sich Operationen überhaupt auf mehr als einen Rechenknoten verteilen? Das aus dem Apache-Projekt Nutch hervorgegangene Apache Hadoop stellt ein System dar, mit dessen Hilfe vergleichsweise leicht Rechner zu einem gemeinsamen

www.JAXenter.de

javamagazin 12 | 2010

51

Da immer wieder Exceptions Auf diese Weise kann recht schnell ein Überblick über das Verhalten über einige wenige Tage gewonnen werden. Da diese Informationen aus Performancegründen im Hauptspeicher gehalten werden. Mit der Publikation der Technologien hinter Googles verteiltem Dateisystem [2] und Map Reduce Engine [3] waren die Grundsteine gelegt. Die Idee liegt nahe. Der clientseitige schreibende Zugriff auf eine im HDFS gespeicherte Datei ist in Abbildung 1 dargestellt: In einem ersten Schritt wird der NameNode konkaktiert. der ähnlich einer I-Node-Tabelle die Dateimetadaten enthält. wie oft welche Fehlermeldung auftritt. 1: Beim Abspeichern einer Datei im HDFS kontaktiert der Client zuerst den so genannten NameNode-Rechner. Die Replikation der Daten Eine kleine Geschichte des Elefanten Die Geschichte von Hadoop ist eng mit der von Lucene verknüpft: 2000 [1] veröffentlichte Doug Cutting das erste Lucene-Release über Sourceforge.Enterprise Verteilte Dateisysteme bisher ungeklärter Ursache in den Logs zu finden sind. Das Setup eines eigenen Test Clusters [4] nimmt nicht mehr als eine Stunde in Anspruch (inklusive Setup eines Linux auf den betreffenden Maschinen). um auch die Algorithmen hinter Nutch verteilen zu können. der so genannte NameNode. Soll jedoch die gleiche Statistik am Ende jedes Monats für das gesamte System erstellt werden. dessen Name sich vom Namen des Stoffelefanten von Doug Cuttings Kind ableitete. Inzwischen sind zum Kern HDFS und Map Reduce viele weitere Projekte hinzugekommen.de . die mit Hadoop betrieben wurden. wird (entsprechender Traffic auf der Anwendung vorausgesetzt) das Shell Script schnell an seine Grenzen stoßen. Seit Anfang 2008 ist Hadoop ein eigenes Apache-Top-Level-Projekt. Ähnlich einer I-Node-Tabelle hält er Metainformationen und Blockzuordnungen der gespeicherten Daten. Bei Lucene handelt es sich um die bekannte Implementierung eines Suchindex. Die Replikation der Daten übernehmen die DataNodes selbst Cluster zusammengeschaltet und für verteilte Datenanalyse eingesetzt werden können. kurze Zeit später wurden erste Schritte in Richtung Map Reduce gemacht. indem sich mehrere Rechner die Aufgaben des NameNodes teilen. Um 2004 begann im Projekt Nutch die Implementierung des Nutch Distributed File Systems. sondern auch analysiert werden können.JAXenter. Ein Jahr später erschienen erste Berichte von Yahoo! über Cluster mit bis zu 1000 Knoten. Je nach Systemkonfiguration können von jedem Block n Replikas gespeichert werden. die im Hauptspeicher der NameNode gehalten werden können. dem so genannten Hadoop File System. Dateien werden darin in (mit per Default 64 KB vergleichsweise große) Blöcke aufgespalten und im Cluster verteilt gespeichert. Die Verwaltung der Zuordnung der einzelnen Blöcke zu Maschinen übernimmt ein dedizierter Rechner. Anschließend kann direkt auf den entsprechenden DateNode gespeichert werden.]*. Auch sind oft umfangreichere Analysen sinnvoll.gz grep -o [a-zA-Z\.Exception prod-2010-09-10 | sort | uniq -c Abb. In einer initialen Analyse kommt dafür ein einfaches Shell Script auf den tagesaktuellen Logfiles zum Einsatz: tar xzf prod-2010-09-10. Im Laufe der folgenden Jahre entstand unter dem Namen Nutch ein Projekt. Als Beispiel soll uns die Implementierung eines einfachen Filters dienen: In einer verteilten Webanwendung werden alle Logs über einen zentralen Logservice gesammelt und aggregiert. die die Arbeit in einem Hadoop Cluster. Dank der Integration in bekannte Linux-Distributionen [5].tar. In einem ersten Schritt soll dazu identifiziert werden. die Analyse der Logfiles auf einen Hadoop Cluster zu verschieben. Über das zurückgelieferte Datei-Handle kann die Datei auf den von der NameNode ausgewählten DataNode gespeichert werden. Anfang 2006 wurde die Codebasis von Hadoop aus Nutch heraus in ein eigenes Projekt (damals noch als Lucene-Unterprojekt) migriert. das die aus der funktionalen Programmierung bekannten Funktionen map und reduce zur Implementierung verteilter Algorithmen nutzt. In seinen Ursprüngen basiert es auf den von Google publizierten Papers zum Google File System [2] – einem verteilten Dateisystem – und Map Reduce [3] – einem Programmiermodell. Mit der in einem der nächsten Releases einzuführenden Federated NameNodes soll dieses Problem angegangen werden. in dem sie nicht nur verteilt gespeichert. 52 javamagazin 12 | 2010 www. wird damit auch ein erstes Bottleneck deutlich: Die in einem Hadoop Cluster speicherbare Datenmenge ist abhängig von der Menge an BlockID-DataNode-Paaren. soll bis zum kommenden Release für die häufigsten Fehler die Ursache identifiziert und nach Möglichkeit beseitigt werden. der einen Dateideskriptor zum Schreiben zurückliefert. die Erstellung von Map-Reduce-Jobs und die Interoperabilität von Hadoop mit anderen Systemen erleichtern. um beispielsweise Fehlverhalten mit bestimmten RequestTypen oder Tageszeiten korrelieren zu können. [6] ist eine Installation inzwischen im Idealfall nicht aufwändiger als die Installation und Konfiguration über die distributionseigenen Tools. dessen Ziel die Implementierung einer Internet-Scale-Suchmaschine ist. Verteilte Datenspeicherung mit Hadoop Apache Hadoop basiert auf einem verteilten Dateisystem.

0 eine Hochsprache speziell zur Analyse von JSON-Dokumenten veröffentlicht. teils aufbauend auf Hadoops Map Reduce Engine. die die Interoperabilität des Systems erhöhen. aber auch auf die offizielle Projektliste der Apache Software Foundation sowie in den Incubator lohnt sich daher immer. die.apache. und Bibliotheken. Insbesondere bei Einsatz in Cloud-Infrastrukturen. die ähnliche Ziele verfolgen. In Bereichen.org/) eine Sprache. Mit Chukwa (http:// hadoop. die mithilfe von Hadoop spannende Ziele erreichen. Daneben existiert mit Cascading (http://www. com/papers/sawzall. Ein Blick auf GitHub. Eine zweite Kopie wird auf einem Rechner in einem separaten Rack gespeichert. Mit Mahout wird die Familie letztlich um eine Bibliothek ergänzt.apache. 2: Map. Entsprechende Äquivalente finden sich in der Welt der freien Software mit Pig (http://hadoop. Join.und Aggregationsjobs sind die zu schreibenden Jobs einander oft sehr ähnlich. Insbesondere für Filtering-.apache. Mit JAQL (http://code. aber vergleichsweise ineffizient. www. Cascading wird unabhängig von der ASF entwickelt und ist unter der GPL verfügbar. Projekte.cascading. eine zweite nutzbare Kopie zur Verfügung zu haben. sollte diese Einschränkung in Betracht gezogen werden.und Reduce-Funktionen werden vom Nutzer implementiert und auf dem Cluster datenparallel ausgeführt Verteilte Berechnungen mit Map/Reduce Der Entwicklung von Hadoop liegen drei Annahmen zugrunde. Mit Cassandra (http://cassandra. um auch bei Ausfall von Komponenten. und wo verfügbar. stellt sich die Frage nach der effizienten Datenspeicherung: XML-basierte Formate sind zwar leicht lesbar und erweiterbar.com/p/jaql/) hat IBM unter ASL 2. Nutch (http://nutch.org/solr).org/) bietet sich noch ein Hybrid aus BigTable und Amazons Dynamo [8] an. Die Migration von herkömmlichen relationalen Datenbanken hin zu Hadoop erleichtert Sqoop (http://github. deren Schema sich von Zeit zu Zeit auch ändern kann.apache. in denen viele semistrukturierte Datenmengen anfallen. soll das zugrunde liegende Schema geändert werden. falls dieser sich selbst im Cluster befindet.apache. Hadoop das Layout des eigenen Clusters mitzuteilen. kann das Framework zwar noch immer eingesetzt werden.org/chukwa) wird ein verteiltes Logging ermöglicht. deren physikalisches Layout nicht einsehbar ist. die die Formulierung von Map-Reduce-Jobs vereinfachen. sind Thrift und Avro aus der Apache Software Foundation zu nennen. Daneben sind in den letzten Monaten und Jahren auch außerhalb der Apache Software Foundation unzählige Projekte entstanden. den entsprechenden wissenschaftlichen Publikationen gegenüberzustellen.sourceforge. org/pig) und Hive (http://hadoop.org) und Katta (http://katta. skalierbare Implementierungen gängiger Machine-Learning-Algorithmen zur Datenanalyse und -aufbereitung zur Verfügung stellt. die die Arbeit mit Hadoop erleichtern. Die Erstellung von Map-Reduce-Jobs als reine Java-Implementierungen gestaltet sich vor allem für immer wiederkehrende Aufgaben als schwierig und zeitaufwändig.org/) die von Google bekannte skalierbare Implementierung einer Spaltendatenbank BigTable [7]. Hive (von Facebook) mehr auf eine Umsetzung von aus SQL bekannten Konzepten.google. Ist dies nicht möglich. Reine Binärformate hingegen sind oft zu unflexibel. liegt hier eine Alternative vor.org/hive). Es hilft. das auch als Open-Source-Projekt verfügbar ist. Pig (von Yahoo!) legt dabei ursprünglich mehr Wert auf Filterungs. arbeitet dann aber unter seinen optimalen Performancewerten. org) und Hypertable (http://hypertable.html) eine Sprache entwickelt.und Aggregationsketten. die die Arbeit mit Hadoop zunehmend einfacher machen.apache. Der Methodenaufruf zum Speichern einer Datei kehrt erst zurück. Aufbauend auf Hadoop und Zookeeper ermöglichen Solr (http:// lucene.google. die insbesondere zur Definition von Analysepipelines sehr gut geeignet ist. wenn alle Daten erfolgreich repliziert worden sind.de javamagazin 12 | 2010 53 .net/) den Aufbau eines verteilten Suchindex. die das gesamte Rack betreffen. die von den reinen Map-Reduce-Jobs abstrahiert. Bei der Replikation von Daten in einem Hadoop Cluster wird die Bandbreite zwischen den angesprochenen Zielmaschinen gegen die Ausfallsicherheit abgewogen: Die erste Kopie wird möglichst direkt auf dem Rechner abgelegt. Grob lassen sich folgende Aufgabenbereiche unterscheiden. Innerhalb von Google wurde mit Sawzall (http://labs. Unter den Projekten. implementieren Projekte wie HBase (http://hbase. Mit Zookeeper (siehe auch [10]) stellt das Hadoop-Projekt letztlich einen verteilten Locking-Mechanismus bereit. all diese Projekte zu systematisieren. um sich nicht in der riesigen Auswahl zu verlieren.apache. Aktuell entstehen regelmäßig neue Ideen rund um Hadoop. auf dem die Daten erzeugt werden. ist es notwendig. Abb. Neben Bibliotheken. die die weitere Implementierung von Jobs beeinflussen: Das Hadoop-Ökosystem Neben dem eigentlichen Kern aus verteiltem Dateisystem und Map Reduce Engine kommt das Apache-Projekt Hadoop mit einer Vielzahl von Unterprojekten und Schwesternprojekten. Mit Protocol Buffers [9].Verteilte Dateisysteme Enterprise wird im Pipelining-Verfahren von den DataNodes selbst übernommen. Um solche Optimierungen nutzen zu können.JAXenter. Inzwischen unterstützen beide Sprachen mehr und mehr Konstrukte aus der SQL-Welt.com/cloudera/sqoop).

weiß.Enterprise Verteilte Dateisysteme • Daten-Streaming ist auf heutigen Festplatten sehr viel schneller als die Arbeit mit Daten im RandomAccess-Verfahren. Deren Implementierung gestaltet sich jetzt sehr einfach: Die Werte werden aufsummiert und letztlich mit dem zugehörigen Key ausgegeben (Abb.und Auswertungszwecke eingesetzt – sowohl in Form von einmaligen Ad-hoc-Analysen als auch in Form sich wiederholender Batch-Prozesse. kann Apache Hadoop natürlich nicht nur zur verteilten Implementierung von Grep genutzt werden. Neben üblichen Filter-. • Im Cluster sollen so viele Daten verarbeitet werden. enthält eine Seite A eine Referenz auf Seite B. eine Menge von vermutlich identischen Key-Value-Paaren. enthält der Graph eine Kante von A nach B. • Hadoop-Jobs sind vergleichsweise eingeschränkt gegenüber anderen Parallelisierungsframeworks – im Gegenzug lassen sie sich sehr einfach automatisch parallelisieren. die die Map-Funktionen ausführen. nicht direkt auf einem verteilten Cluster zu arbeiten.JAXenter. generiert. Neben dem Fortschritt einzelner Map. lohnt eher ein Blick in Richtung HBase (Kasten: „Das HadoopÖkosystem“). Zanox [12] und Nurago [13]. sprich der Inlink-Graph. lässt sich aus diesen Rohdaten recht leicht ein so genannter Outlink-Graph erstellen. den Reduce-Schritt vorzuziehen und direkt auf dem das Map durchführenden Rechner auszuführen. Viel günstiger wäre doch. Auch die Indexierung von Webseiten in einer Suchmaschine lässt sich mit Map Reduce leicht verteilt implementieren. um im verteilten Betrieb leicht Statistiken beispielsweise über die Menge an fehlerhaften Records einer zu verarbeitenden Eingabedatei zu überwachen. Join. bevor die endgültige Aggregation über alle Key-Value-Paare dann letztlich im Reducer geschieht. 2). recht einfach gehaltene Weboberfläche mit. sondern bereits am Quellrechner in einer Art vorgelagerten 54 javamagazin 12 | 2010 www. Anwendungsgebiete von Hadoop Auch wenn sich dies als Einführungsbeispiel fast zu gut eignet. Meist wird Hadoop jedoch für Analyse.und Reduce-Jobs sowie einem Überblick über fehlgeschlagene Jobs werden darin auch die Werte so genannter Counter dargestellt. dass die Map-Funktion parallel auf verschiedenen Rechnern gestartet wird. Entsprechend sind die APIs von Hadoop selbst auf Batch-Jobs ausgelegt. Die Aggregierung innerhalb des Mappers selbst stellt insofern ein Anti-Pattern dar. Es ist dem Nutzer überlassen. berechnen. Dabei wird garantiert. bestehend aus Exception-Typ und dem Wert „1“. Die Eingabe der Map-Funktion besteht aus den zu verarbeitenden Rohdaten. In unserem Eingangsbeispiel sind das die aggregierten Logdaten aus dem Betrieb der Applikation.und Selections-Algorithmen lassen sich auch komplexere Anwendungen umsetzen: Hat ein Crawler Webseiten gespidert. die die zu analysierenden Rohdaten speichern. die genaue Anzahl der Mapper und Reducer zu bestimmen. Beide Werte sind von der Cluster Configuration (Anzahl der zur Verfügung stehenden Rechner). sprich auf den Rechnern. Auch die Reduce-Phase wird wiederum parallel durchgeführt. Für die Überwachung von Jobs bringt Hadoop eine eigene. Die New York Times hat gezeigt. Diese vom Nutzer definierten Zählvariablen können eingesetzt werden. dass unmöglich alle Daten in den Hauptspeicher des entsprechenden Rechners passen (auch wenn das in unserem konkreten Anwendungsbeispiel eher unwahrscheinlich ist). Eine Beispielimplementierung liegt mit Nutch vor. Wer je verteilte Anwendungen geschrieben hat. Bei der Entwicklung von Map-Reduce-Jobs bietet es sich daher an. als prinzipiell so viele unterschiedliche Keys auftreten könnten. aber auch von der zu erwartenden Datenmenge abhängig. Ist ein schneller Zugriff womöglich im Random-Access-Verfahren notwendig.ad [11]. wenn diese nicht direkt komplett übers Netz verteilt werden müssten. Stattdessen kann Hadoop auch in einem Single-Node-Modus auf einem Entwicklungsrechner gestartet werden. dass jeder Reduce-Funktion alle einem Key zugeordneten Werte als Eingabe zur Verfügung gestellt werden. Im Beispiel soll der Typ der gefundenen Exception als Typ dienen. Den folgenden Sortierungsschritt übernimmt Hadoop selbst in einer so genannten Shuffle-Phase. Die Ausgabe besteht aus einer Reihe von Key-Value-Paaren.de . Hadoop als Framework sorgt dafür. statt die Daten zu den Berechnungsknoten zu transportieren. Map-Reduce-Jobs bestehen aus den aus der funktionalen Programmierung bekannten Funktionen. Beispiele aus dem deutschen Raum sind die Pipelines von nugg. die Berechnungen zu den Daten.und Analysemöglichkeiten Eine erste Optimierung in der oben beschriebenen Implementierung ist offensichtlich: Aktuell wird auf den Rechnern. werden entsprechende Map-Jobs gestartet. dafür aber nach festgelegten Richtlinien. dass es sinnvoll ist. für jedes Auftreten wird der Value auf „1“ gesetzt. In diesem Graphen stellen die Webseiten die Knoten dar. basierend auf einem Webframework wie Rails: Die Implementierung der verteilten Jobs erfolgt sehr viel schneller. dass die Berechnungen datenlokal durchgeführt werden. wie komplex deren Analyse und vor allem Debugging ist. die im Rahmen des regelmäßig in Berlin stattfin- Optimierungs. Reduce-Funktion zusammengefasst werden könnten. Stattdessen bietet Hadoop mit „Combiner“ genannten Funktionen die Möglichkeit. Mit Map Reduce lässt sich aus diesem Graphen recht leicht seine Umkehrung. An deren Ende ist garantiert. Vergleichbar ist dies etwa mit der Entwicklung von Webapplikationen. die im Streaming-Verfahren über große Datenmengen iterieren. dass Map Reduce durchaus auch für die Skalierung von Bildern eingesetzt werden kann: In einem auf eine möglichst zügige Umsetzung angelegten Projekt wurden auf einem EC2-basierten Hadoop Cluster Bilder unterschiedlichster Größe auf ein einheitliches Thumbnail-Format herunterskaliert.

Wer mehr über Apache Hadoop lernen möchte. war Koorganisator des NoSQL Meetups sowie der Konferenz Berlin Buzzwords 2010. Isabel Drost (isabel@apache. unter anderem Lucene und Hadoop.de [17] http://tinyurl.html [5] http://packages. Skalierbarkeit. Isabel engagiert sich aktiv für die Communities verschiedener Apache-Projekte.de javamagazin 12 | 2010 55 . Für alle.com/AllThingsDistributed/sosp/amazondynamo-sosp2007.org) ist Mitglied der Apache Software Foundation.com/papers/gfs. die selbst bereits Erfahrungen mit Hadoop sammeln konnten.apache. an dieser Stelle die Einladung.google.org/search?keywords=hadoop&searchon= names&suite=all&section=all [6] http://www. Sie organisiert das Apache Hadoop Get Together in Berlin.Enterprise denden Apache Hadoop Get Togethers [14] vorgestellt wurden.pdf [9] http://code.google.com/papers/chubby.amazonaws.com/p/protobuf/ [10] http://labs.debian.de/hadoop [15] http://na.html [4] http://hadoop. Sie hat das Apache-Projekt Mahout mitbegründet und ist aktiver Committer im Projekt.com/papers/bigtable.com/8460790 [14] http://isabel-drost.JAXenter.google.google.html [11] http://vimeo.com/10201534 [13] http://vimeo.org/common/docs/current/cluster_setup.com/hadoop/ [7] http://labs.apachecon.html [3] http://labs.com/buzzwords2011 Schlagen Sie ein neues Kapitel Ihrer Karriere auf www.google. entweder beim Get Together oder beim Call for Presentations der Berlin Buzzwords 2011 [17] einen eigenen Beitrag einzureichen.html [8] http://s3.wikipedia.com/8512492 [12] http://vimeo. aber auch von Nutzern mehr über die aktuellen Entwicklungen und Use Cases erfahren. Lucene.org/wiki/Lucene [2] http://labs. kann sowohl zur Apache Con NA [15] als auch bei der im nächsten Sommer in Berlin stattfindenden Berlin Buzzwords 2011 [16] in Vorträgen von Entwicklern.com/papers/mapreduce.cloudera. jobs und karriere Links & Literatur [1] http://en. Hadoop und Mahout. Sie ist regelmäßiger Referent bei namhaften Konferenzen rund um die Themen freie Software.com/c/acna2010/schedule/grid [16] http://berlinbuzzwords.

Ab sofort suchen wir qualifizierte und engagierte Anwendungsentwickler Java EE (m/w) Verpassen Sie nicht den Anschluss. Weitere Informationen zum Stellenangebot finden Sie unter www.Vor3_ris_SoftwAnwEntw105x297 09._F00813490P/F00813491P Lfd. Es erwartet Sie ein hochqualifiziertes und motiviertes Team.pdf Lfd.-Nr. 750 Mitarbeitern der zentrale Lösungsanbieter und Dienstleister der REWE Group im Bereich Informations.-Nr. Ihr Ansprechpartner: REWE-Informations-Systeme GmbH Zentrales Personalwesen Dirk Hoffmann Domstraße 20 50668 Köln Telefon: +49 221 149-1931 56 Vor3_ris_SoftwAnwEntw105x297.ris.de. Wir bieten Karriere-Perspektiven in einem innovativen und dynamischen Arbeitsumfeld und ermöglichen unseren Mitarbeitern eine kontinuierliche und zielgerichtete Personalentwicklung.und Telekommunikations-Systeme.08.2010 10:23 Uhr Seite 1 Jobs und Karriere Der Stellenmarkt für IT-Profis Verstärken Sie unser Team! Die REWE-Informations-Systeme GmbH ist mit ca._F00813492P/F00813493P Interessiert? .

die mit unserer Software ihr Innovationspotential voll ausschöpfen. und GUI-Design mit Swing. Haben wir Ihr Interesse geweckt? Dann freuen wir uns auf Ihre Bewerbung unter job@batalpha. JAVA-ENTWICKLER/IN � Werden Sie Teil eines jungen und hochqualifizierten Teams � Nutzen Sie die Chance. in dem flache Hierarchien und kurze Entscheidungswege gelebt werden.com mit Gehaltswunsch und zeitlicher Verfügbarkeit.com/jobs . Ihr Profil • Studium der Informatik oder vergleichbare Ausbildung • Programmierung unter Linux in Java mit NetBeans IDE • Erfahrungen in der 3D-Modellierung mit Java-OpenGL. Europa und anderen Teilen der Welt. ein Spitzenprodukt maßgeblich mitzugestalten � Entwickeln Sie sich fachlich und persönlich weiter � Erwarten Sie anspruchsvolle Aufgaben und ein attraktives Gehalt Interessiert? Wir freuen uns auf Ihre Bewerbung: mail: jobs-entwickler@hype. das neben abwechslungsreichen Projekten eine berufliche Perspektive mit Zukunft bietet? Wir suchen zur Verstärkung unseres wachsenden Teams eine/n: Software-Entwickler Java (m/w) für die Gestaltung und technische Umsetzung der grafischen Oberfläche unserer touchscreenbedienbaren Rechner.: 0228–2276-0 Hier könnte Ihre Anzeige stehen! Eine Stellenanzeige im Java Magazin bietet: Reichweite Qualifizierte Kontakte Steigerung der Bekanntheit Ihres Unternehmens CSS SQL Tomcat HTML Servlets JAVA Lucene JUnit DHTML JavaScript XML Eclipse YourKit Scrum Hudson A Strong Team for Global Players We program innovation Hype Softwaretechnik ist Hersteller der weltweit meistinstallierten Ideenmanagementsoftware HypeIMT. Zu unseren Kunden zählen marktführende mittelständische Unternehmen und bedeutende Global Player.de www.: ++49(0)69-630089-20 Fax.Der Stellenmarkt für IT-Profis Jobs und Karriere Die batalpha Bobach GmbH ist Anbieter und Hersteller hochwertiger Automatisierungslösungen für die Veranstaltungstechnik auf Theater. Zur Verstärkung unserer Entwicklungsabteilung suchen wir einen Sie suchen ein Arbeitsumfeld. Gerne beraten wir Sie! Ihr Kontakt: Software & Support Media Patrik Baumann Geleitsstraße 14 60599 Frankfurt am Main Tel. Sie erstellen 3D-Modelle der Theaterbühnen und animieren die Bühnenmaschinerie. speziell Touchscreen-Bedienung. Java 3D.de tel. Eine intuitive Bedienung entwickeln Sie anhand von funktionsfähigen Prototypen.: ++49(0)69-630089-89 E-mail: pbaumann@javamagazin.hypeinnovation. Xith3D • Fundierte Kenntnisse in Software-Ergonomie.und Show-Bühnen. AWT • Sie setzen Vorgaben präzise um und begegnen Herausforderungen mit Kreativität und eigenen Ideen. Mit unseren Produkten bewegen wir die Kulissen in Deutschland.

Sign up to vote on this title
UsefulNot useful