Apache Pig. Seminararbeit Software Systems Engineering - WS 2012 / 2013 Sebastian Walther - Studiengang Informatik SSE Master Universität zu Lübeck

Größe: px
Ab Seite anzeigen:

Download "Apache Pig. Seminararbeit Software Systems Engineering - WS 2012 / 2013 Sebastian Walther - Studiengang Informatik SSE Master Universität zu Lübeck"

Transkript

1 1 Apache Pig Seminararbeit Software Systems Engineering - WS 2012 / 2013 Sebastian Walther - Studiengang Informatik SSE Master Universität zu Lübeck Zusammenfassung Diese Seminararbeit soll einen einführenden Überblick der Apache Pig Plattform sowie deren Datenflussanfragesprache Pig Latin vermitteln. Dazu wird im Einführungskapitel auf die grundlegenden Technologien eingegangen welche im Zusammenhang mit Apache Pig stehen. Ebenfalls wird eine Abgrenzung zu der Anfragesprache SQL angegeben. Darauf folgernd werden die Unterschiede zu einer reinen MapReduce Lösung beschrieben. Im Praxisteil wird Pig s Datenmodell sowie die grundlegenden Sprachelemente von Pig Latin erläutert. Darauf folgern die Themen Testen, Performancesteigerung und Benchmarking von Pig Latin Skripten. Anschließend werden die wichtigsten Punkte in der Zusammenfassung aufgeführt. Diese Seminararbeit lehnt sich an das Referenzbuch Programming Pig[1] von Alan Gates an. Abbildung 1: Subprojekte von Hadoop [3] Index Terms Apache Pig, Hadoop, MapReduce, HDFS, Pig Latin I. EINFÜHRUNG Bei Apache Pig handelt es sich um eine in Java implementierte Plattform, mit der es möglich ist, eine große Anzahl von Datensätze zu analysieren und zu verarbeiten. Apache Pig beinhaltet eine eigene Anfragesprache Pig Latin um Datensätze zu lokalisieren, verarbeiten, aufzubereiten und abzulegen. A. Hadoop Apache Hadoop ist ein Framework welches die Möglichkeit bietet mehrere Tausend Rechner bezüglich Speicher- und Rechenkapazität zu einer logischen Einheit zusammenzufassen. Dabei ist das Framework auf Hochverfügbarkeit ausgelegt, indem es Fehler bereits auf der Anwendungsschicht erkennt und behebt [2]. Hadoop lässt sich in mehrere zusammenhängende Subprojekte, wie in Abb.1 darstellen, unterteilen. Zwei dieser Subprojekte werden von Pig verwendet. Zum einen nutzt Pig das verteilte Dateisystem HDFS für die Datenverwaltung und zum anderen wird das Verarbeitungssystem MapReduce eingesetzt um Anfragen auf Daten verteilt durchzuführen. Im Folgenden wird auf diese zwei Subprojekte eingegangen. 1) MapReduce: Das MapReduce Verfahren dient zur verteilten Verarbeitung von Datensätzen auf einem Cluster von Rechnern. Das Verfahren arbeitet in den zwei grundlegenden Phasen Map und Reduce sowie in einer optionalen Phase Combine. Das in Abb.2 dargestellt MapReduce-Beispiel aus [1] soll eine Häufigkeitsanalyse von Wörten eines Textes durchführen. Die drei Phasen werden anhand des Beispiels im Folgenden kurz erläutert. Abbildung 2: MapReduce Beispiel [1] Map-Phase: Innerhalb der Map-Phase wird eine zuvor festgelegte Funktion jeweils auf eine disjunkte Teilmenge der zu verarbeitenden Daten angewandt. Diese Teilmengen werden jeweils von einem einzelnen Rechner des Clusters bearbeitet, sodass eine verteilte und parallele Ausführung der Funktion ermöglicht wird. Im angegebenen Beispiel legt die Map-Funktion für jedes Wort ein Tupel der Form (Wort, Anzahl) an. Combine-Phase: Nach der Map-Phase kann optional die Combine-Phase erfolgen. Dabei werden gleiche Daten einer Ergebnisliste zusammengefügt um die Netzwerklast signifikant zu reduzieren. Diese Phase ist nicht in allen Anwendungsszenarien sinnvoll, kann aber z.b. bei der Häufigkeitsanalyse aus dem obigen Beispiel seine Berechtigung haben. Hierbei werden Tupel zusammengefasst die den gleichen Wert für Wort haben. Die Anzahl wird dann addiert. Aus (Mary,1) und (Mary,1) wird dann z.b. (Mary,2).

2 2 Reduce-Phase: In dieser letzten Phase wird auf den Ergebnislisten der vorherigen Phase, jeweils die Reduce- Funktion aufgerufen. Diese reduziert das Datenaufkommen, indem die Funktion beispielsweise nicht benötigte Daten herausfiltert oder Daten aus mehreren Ergebnislisten zusammenfasst. Auf das obige Beispiel bezogen wird innerhalb einer Reduce-Funktion jeweils auf Ergebnislisten mehrerer Map-Instanzen zugegriffen. Der Unterscheid zu der Combine-Phase ist, das die Combine-Funktion jeweils auf die Ergebnisliste einer Map-Instanz zugreift. Die Combine- und Reduce-Phase müssen dabei nicht die gleiche Funktionalität bieten. 2) HDFS: HDFS ist ein verteiltes Dateisystem, welches Dateien auf einen Cluster von Rechnen repliziert speichert und verwaltet. Dabei wird mit einem strombasierten Zugriffsverfahren gearbeitet. Ein HDFS besteht aus mehreren Workern (DataNodes), auf den die Daten abgelegt werden, sowie aus einem Koordinator (NameNode) welcher für die Haltung der Metadaten des Dateisystems zuständig ist. Die Metadaten bestehen dabei größtenteils aus Datei- und Verzeichnisinformationen. Durch die replizierte Speicherung bietet HDFS eine gewisse Sicherheit gegenüber ausfallenden DataNodes. Der NameNode hingegen ist der Single-Point-of-Failure des Dateisystems, wodurch die Verfügbarkeit beeinträchtigt werden kann. Es besteht zwar die Möglichkeit einen Backup-NameNode einzurichten jedoch muss dieser beim Ausfall manuell eingebunden werden [3]. B. Pig Latin Mithilfe der Datenflusssprache Pig Latin lässt sich eine Beschreibung angeben, wie Datensätze aus ein oder mehreren verschiedener Quellen gelesen werden, wie diese bearbeitet und dann wieder in ein oder mehrere Zielsysteme abgelegt werden. Quell- und Zielsystem können z.b. Hadoop Cluster oder lokale Dateien sein. Mit Pig Latin lassen sich ebenfalls standardisierte Operationen auf Daten wie zum Beispiel Joins, Sortierungen, Filteroperationen etc. ausführen. Bei der Entwicklung von Pig Latin wurde der Fokus auf folgende Eigenschaften gelegt [4]: Einfache Programmierung Erweiterbarkeit Anfrageoptimierungsmöglichkeiten Durch diese Eigenschaften ist es möglich eine komplexe sowie effiziente Verarbeitung auf großen Datensätzen mit wenig Aufwand zu realisieren.. 1) Abgrenzung von SQL: Bei SQL handelt es sich um eine Anfragesprache, mit der sich Datenbankanfragen formulieren lassen. Wird mit dem Anfrageergebnis weiter gearbeitet wird die Anfrage schnell unübersichtlich, da temporäre Tabellen erstellt werden müssen. Pig Latin hingegen ist eine datenflussbasierte Sprache in der Datenströme gelesen, verarbeitet und ausgegeben werden ohne das eine Verwendung von Subqueries nötig ist. Dabei gilt zu bedenken, dass beide Sprachen für verschiedene Umgebungen entwickelt wurden. SQL zeigt seine Stärken, wenn es um Anfragen an konsistente relationale Datenbankmanagementsysteme geht. Die Daten müssen dabei einem Schema zugrunde liegen. Pig Latin hingegen ist dafür ausgelegt auf einem Hadoop Cluster zu arbeiten, wo ein Schema unbekannt oder inkonsistent sein kann [1]. C. Unterschiede zu MapReduce Apache Pig erweitert das MapReduce Verfahren dementsprechend, dass eine einfachere, individuelle Umgebung bereitstellt wird. Dies bedeutet, dass bestimmte Funktionalitäten mit Apache Pig deutlich schneller zu implementieren sind als die Implementierung derselben Funktionalität mittels MapReduce und Java. Pig stellt diesbezüglich einige komplexe Implementierungen für Standartoperationen bereit. Dazukommend kann es durchaus vorkommen, dass die Daten im MapReduce-Verfahren nicht gleichverteilt an den einzelnen Ressourcen im Hadoop Cluster vorliegen. Dies kann dazu führen, dass einige Ressourcen deutlich mehr belastet werden als andere. Dies bedeutet wiederrum, dass die Laufzeit sich entsprechend erhöht. Apache Pig kann in einigen Fällen eine Gleichverteilung durch die Operatoren Join und Order-by vornehmen. Ein Weiterer Unterschied besteht darin, das MapReduce kein Dateitypensystem hat. Dadurch erhält der Benutzer zwar mehr Freiheiten, dennoch wird ihm die Möglichkeit verwehrt, das Codeanalysierungen automatisch erfolgen können. Pig ist in der Lage den Code sowie den Datenfluss zu analysieren und so den Benutzer früh auf Fehler hinzuweisen. Liegen jedoch extrem hohe Performanceanforderungen vor sollte auf eine reine MapReduce Lösung zurückgegriffen werden[1]. D. Anwendungsumgebungen Apache Pig lässt sich in verschiedenen Anwendungsumgebungen ausführen [1]. Die einzelnen Umgebungen werden im Folgenden kurz erläutert. 1) Lokaler Modus: Im lokalen Modus kann Apache Pig auf einen einzelnen Rechner ausgeführt werden. Dazu werden Daten aus einer oder mehreren bestehenden Dateien gelesen, verarbeitet und in eine oder mehrere lokale Dateien geschrieben. Der lokale Modus eignet sich in erster Linie dazu, ein implementiertes Pig Latin Skript zu debuggen oder einen Prototypen auf kleinen Datenmengen zu testen, bevor dieses im Hadopp Cluster auf großen Datenmengen angewandt wird. 2) Pig im Hadoop Cluster: Die gängigste Ausführungsvariante für Pig Latin Skripte ist das Hadoop Cluster. Hierzu werden die auszuführenden Skripte von einem Rechner aus in das vorhandene Hadoop Cluster importiert. Dieser Rechner muss Zugriff auf das Cluster haben. Ebenfalls muss der Name des Hadoop Koordinators (NameNode) und der MapReduce-Koordinator (JobTracker) bekannt gemacht werden. 3) Pig in der Cloud: Eine weitere Möglichkeit Pig zu nutzen ist die Ausführung in der Cloud. Hierzu kann zum Beispiel Amazons Web-Service Amazon Elastic MapReduce (EMR) verwendet werden. EMR stellt ein Hadoop Cluster mit einer gewünschten Kapazität bereit um datenintensive Berechnungen parallel durchzuführen. Die häufigsten Einsatzgebiete sind unter anderen Webindizierung, Data-Mining, Protokolldatenanalyse, maschinelles Lernen sowie wissenschaftliche Simulationen [5].

3 3 II. APACHE PIG IN DER PRAXIS Im Nachfolgenden Teil wird näher auf Apache Pig eingegangen. Dazu wird als erstes das zugrundeliegende Datenmodell von Apache Pig vorgestellt. Im Anschluss werden Beispielhaft einige Sprachelemente von Pig Latin vorgestellt. Diesbezüglich wird darauf eingegangen wie Daten eingelesen verarbeitet und ausgeschrieben werden. Das darauf folgende Thema beschäftigt sich mit der Verifikation von Pig Latin Skripten und zeigt die grundlegenden Testmöglichkeiten. Ein weiterer Punkt dieses Kapitels deutet an, worauf bei der Entwicklung in puncto Performance geachtet werden sollte. Zum Abschluss werden Benchmarks zu Pig betrachtet. A. Pig s Datenmodel In Apache Pig existieren verschiedene Datentypen, welche sich in zwei Typen Kategorisieren lassen. Einfache Datentypen (Scalar Types) Komplexe Datentypen (Complex Types) 1) Einfache Datentypen: Einfache Datentypen in Pig sind Typen, die auch in den meisten Programmiersprachen vorkommen. Folgende sechs einfache Datentypen stehen zur Verfügung [6]. int: Vorzeichenbehaftete 32-Bit Integerzahl long: Vorzeichenbehaftete 64-Bit Integerzahl float: 32-Bit Fließkommazahl double: 64-Bit Fließkommazahl chararray: char Array (String) im Unicode UTF-8 Format Bytearray: Ein Array mit Bytes 2) Komplexe Datentypen: Komplexe Datentypen stellen in Apache Pig Container dar. Diese können wiederrum komplexe oder einfache Datentypen enthalten. Folgende drei Containertypen stehen zur Verfügung [6]. Map: Eine Map stellt in Pig eine Menge von Key Value paaren als Bytearray dar, wobei der Schlüssel die Position angibt. Der Wert kann jeweils ein beliebiger Pig Datentyp sein. Tuple: Ein Tupel ist eine geordnete Menge mit einer festen Anzahl von Werten. Übertragen auf Datenbanken könnte ein Tupel eine Zeile in einer Tabelle darstellen. Die einzelnen Positionen der geordneten Menge lassen sich namentlich referenzieren, sodass eine einfache Handhabung möglich ist. Ebenfalls ist es möglich ein Tupelschema zu definieren Bag: Dieser Datentyp ist eine ungeordnete Menge von Tupeln. Bags lassen sich wie Tupel ebenfalls in einen Schema definieren, sodass alle Tupel innerhalb des Bags genauer beschrieben werden können. B. User Defined Funktions (UDFs) Apache Pig ermöglicht es innerhalb des Pig Latin Skript benutzerdefinierte Funktionen (UDFs) zu nutzen. Pig stellt eine Reihe von eingebauten Funktionen für die Nutzung mathematischer und datentypbasierter Operationen bereit [7]. Des Weiteren können eigene UDFs in Java implementiert und in Latin Pig genutzt werden [8]. C. Die Sprachelemente von Pig Latin In den folgenden Abschnitten werden die grundlegenden Sprachelemente von Pig Latin vorgestellt um die grundlegende Struktur zu verdeutlichen. Eine Auflistung aller vorhandenen Sprachelemente ist der Apache Pig Dokumentation [9] zu entnehmen. Zu bedenken sei, dass Variablennamen und UDF-Funktionen Case-sensitive sind. Schlüsselwörter hingegen sind nicht Case-sensitiv. Zur Verdeutlichung werden Schlüsselwörter in den nachfolgenden Beispielen groß geschrieben. 1) Kommentare: Kommentare können in Pig Latin gangzeilig oder über mehrere Zeilen angelegt werden. Zwei Operatoren stehen diesbezüglich bereit. Einzeiliger Kommentar (- - Kommentar) im SQL-Stil. Mehrzeiliger Kommentar (/ * Kommentar * /) im Java- Stil. 2) Daten lesen / schreiben: Für das Lesen von Daten aus einer Datei und für das Schreiben von Daten in eine Datei kommen bei Apache Pig verschiedene load und store Funktionen zum Einsatz, welche jeweils für einen bestimmten Bereich geeignet sind. So lässt sich zum Beispiel die Load/Store-Funktion PigStoragenutzen um mit Daten aus einem Hadoop-Cluster zu arbeiten. Ein weiteres Beispiel ist die Funktion HBaseStorage[10], welche Daten aus einer Apache HBase [11] lädt. An dieser Stelle sei noch gesagt, das eine individuelle Nutzung durch die Implementierung eigener Load- und Storefunktionen möglich ist [12]. Um aus einer Datei Daten zu importieren wird der Befehl load benötigt. a = LOAD /data/datainputfile ; Das Beispiel lädt den Inhalt der Datei datainputfileäus dem Ordner dataëin und hinterlegt die Daten in die Variable ä. Dabei müssen die Daten in diesen Fall Tab-separiert vorliegen. Andere Separatoren können durch explizites Angeben der Standard-Loadfunktion PigStorage() innerhalb der Übergabeparameter spezifiziert werden. Das folgende Beispiel liest Daten ein, die durch ein Komma getrennt sind. a = LOAD /data/datainputfile USING PigStorage(, ) ; Ebenfalls lassen sich Schemata mittels des AS angeben. Diese vereinfachen den späteren Umgang mit den Daten indem sie eine Referenz auf die jeweiligen Felder des Datensatzes bereitstellen. users = LOAD /data/userlist AS (loginname, , birthday); Für das Exportieren von Daten in eine Datei wird der Befehl ßtorebenötigt. STORE users INTO /data/dataoutputfile USING PigStorage(, ); Die Angabe der Store-Funktion ist hier ebenfalls optional und kann äquivalent durch eine beliebige andere Store- Funktion ersetzt werden.

4 4 3) Relationale Operationen: Zwischen dem Lesen und Schreiben von Daten kommen relationale Operationen zum Einsatz. Diese bietet verschiedenste Möglichkeiten Daten umzuformen oder zu vereinigen. Im Folgenden werden beispielhaft einige essentielle Operation vorgestellt. Für weitere Informationen diesbezüglich und eine Auflistung aller vorhandenen Operationen sei auf den entsprechenden Teil der Dokumentation [13] verwiesen. FOREACH: Der foreach-befehl ermöglicht es alle Datensätze, die in einer Variable hinterlegt sind, zu durchlaufen um gewisse datenbasierte Operationen oder UDFs auf einem Cluster von Daten gleicher Struktur anzuwenden. Das nachfolgende Beispiel wählt aus den Datensätzen der Variable users jeweils die ersten beiden Felder aus und legt das Ergebnis in result ab. users = LOAD /data/userlist AS (loginname, , birthday); result = FOREACH users GENERATE loginname, ; FILTER: Der Filteroperator ist in de Lage ein bestimmtes Datum aus einem Satz von Datensäten nach bestimmten Regeln zu Filtern. Diese Regeln können vom Benutzer angegeben werden und können aus Vergleichen oder regulären Ausdrücken bestehen. users = LOAD /data/userlist AS (loginname, ); startswithm = FILTER users BY loginname matches M.* ; Das angegebene Beispiel wählt aus den Datensätzen in users alle heraus, bei denen der Loginname mit M beginnt und legt diese in der Variable startswithm ab. GROUP: Der Group-Operation gruppiert Datensätze nach einen definierten Datum. Die Gruppierten Daten werden dann jeweils in einem Container vom Typ Bag abgelegt. Group unterscheidet sich vom SQL Befehl GROUP-BY dahingehend das bei Pig keine Aggregationsfunktion in Verbindung zu GROUP stehen muss. Das heißt, dass die Daten nicht reduziert werden müssen. Das nachfolgende Beispiel gruppiert die Kundenliste aus der Variable customers nach dem Wert zipcode und legt diese in result ab. Das Ergebnis ist eine Bag. Diese Bag enthält wiederum Bags welche jeweils Daten mit dem gleichen Wert für zipcode haben. customers = LOAD /data/customerlist AS (name, zipcode,...); result = GROUP customers BY zipcode; D. Testen Apache Pig bietet seit der Version 0.8 das Framework PigUnit [14] zum Testen von Pig Latin Skripten an. Das Framework integriert Testmöglichkeiten für Pig Latin-Skripte in JUnit. Neben dem regulären Testen kann mittels PigUnit auch sichergestellt werden, das nach Änderungen an UDFs oder Versionsänderungen von Hadoop bzw. Pig die gewünschte Funktionalität nach wie vor gegeben ist. Für die nachfolgenden Beispiele aus [1] wird folgendes Pig Latin-Skript [1] angenommen, welches einen Durchschnittswert berechnet und in der Variable ävgdivïnnerhalb des Skripts ablegt. --pigunit.pig divs = LOAD NYSE_dividends AS (exchange, symbol, date, dividends); grpd = GROUP divs ALL avgdiv = FOREACH grpd GENERATE AVG(divs.dividends); STORE avgdiv INTO average_dividend ; Das folgende Beispiel zeigt einen Test für das Skript aus der Datei pigunit.pig. Im ersten Schritt des Tests wird eine Variable vom Typ PigTest[15] angelegt, wobei im Konstruktor die Skriptdatei übergeben wird. Als nächstes wird das gewünschte Ergebnis unter Angabe des richtigen Datentyps angegeben. Die Funktion assertoutput() der Klasse PigTestprüft im Anschluss ob das gewünschte Ergebnis mit dem berechneten Ergebnis übereinstimmt. Der String ävgdivreferenziert dabei auf die gleichnamige Variable im Skript. public class PigUnitExample { private PigTest test; private static Cluster cluster; public void testdatainfile() throws ParseException, IOException { } test = new PigTest("../pigunit.pig") ; String[] output = { " ( )" }; test.assertoutput("avgdiv", output); Dadurch, dass Variablenwerte getestet werden, bietet die Klasse PigTest die Möglichkeit Zwischenergebnisse im Skript zu validieren um nach Fehlerquellen zu suchen. Statt externe Daten zu verwenden können die Testdaten auch innerhalb des Tests angegeben werden. Dies ist sinnvoll wenn die realen Daten zum Testzeitpunkt nicht vorliegen oder zu groß sind. Die Angabe der Testdaten erfolgt dann innerhalb der Testmethode. String[] input = { "NYSE\tCPO\t \t0.14", "NYSE\tCPO\t \t0.14", "NYSE\tCCS\t \t0.414", "NYSE\tCCS\t \t0.414", "NYSE\tCIF\t \t0.029", }; Damit die angegebenen Testdaten verwendet werden können, müssen diese in der Methode assertoutput() angegeben werden. test.assertoutput("divs", input, "avgdiv", output); Durch Angabe der ersten beiden Parameter wird die Funktion load für die Skriptvariable divs überschrieben, sodass der Inhalt des String-Arrays input als Eingabestrom verwendet wird. Auf die gleiche Weise lässt ich das zu verwendende Pig Latin-Skript innerhalb des Tests angeben. Dazu wird wiederrum ein Stringarray mit den Inhalten des Skripts erstellt. String[] script = { "divs = LOAD../../..data/NYSE_dividends AS (exchange, symbol,...,);", "grpd = GROUP divs ALL;", "avgdiv = FOREACH grpd GENERATE AVG(divs. dividends);", "STORE avgdiv INTO average_dividends ;". };

5 5 Durch Angabe des Stringarrays als Übergabeparameter für das Objekt vom Typ PigTest lässt sich das erstellte Skript verwenden. test = new PigTest(script); E. Performance Wie auch in anderen Sprachen ist die Performance des erstellten Codes von einigen Faktoren abhängig, welche es zu beachten gilt. So auch bei Pig. Für die Implementierung eines performanten Pig Latin-Skripts stellt Apache einige Regeln zur Verfügung [16]. Um einen Eindruck diesbezüglich zu vermitteln werden im Folgenden einige dieser Regeln erläutert. 1) Der richtige Datentyp: Pig schreibt keine explizite Datentypdefinition vor. Dennoch ist es aus Performancegründen an einigen Stellen sinnvoll den passenden Datentyp explizit mit anzugeben. Liegen Daten zum Beispiel typisiert in einen Bytearray vor werden diese für numerische Operationen automatisch als Doublewerte behandelt. Bei folgender beispielhafter UDF werden jedoch Werte des Typs Integer summiert. long SUM({(int)} input) In diesem Beispiel entstehen, ohne explizite Datentypeingabe, Performancekosten die leicht hätten eingespart werden können. 2) Auswahl der join-operation: Wie auch in anderen Bereichen der Anfrageoptimierung kann sich die Auswahl des passenden Join-Operation signifikant auf die Performance auswirken. Abb.3 gibt einen ersten Leitfaden für die Auswahl von Join-Operationen an die Hand. Dabei ist Faktoren wie Speicherplatz und Sortierungsgegebenheiten von Bedeutung. Zeitpunkt Geschwindigkeitsfaktor Testmethode ,97 PigMix ,83 PigMix ,68 PigMix ,53 PigMix ,04 PigMix ,09 PigMix ,15 PigMix ,16 PigMix2 Tabelle I: Entwicklung von Pig hinsichtlich der Laufzeiten werden um irrelevante Teildaten zeitnah aus den Datenströmen entfernen zu lassen. F. Benchmarks zu Apache Pig PigMix und PigMix2 sind jeweils eine Menge von Queries, welche eingesetzt werden um auf den neusten Releaseversionen Benchmarks durchzuführen. PigMix2 beinhaltet neben zusätzlichen Queries alle Queries von PigMix. Das Ziel von dabei ist es die Skalierbarkeit sowie die benötigte Zeit für die Ausführung verschiedener Queries zwischen Apache Pig und einer reinen MapReduce Implementierung in Java zu vergleichen. Die auf Hadoop basierte Testumgebung umfasste dabei 26 Worker und ein NameNode auf dem ebenfalls der JobTracker läuft. Als grundlegendes Ergebnis zeigte sich, dass eine reine Java Implementierung nach wie vor in den meisten Fällen die schneller Variante ist. Dazu sei zu bedenken, dass der Entwicklungsaufwand hier jedoch wesentlich höher ausfällt. Die zeitliche Tendenz für die einzelnen Releases zeigt, dass sich die Laufzeiten von Pig gegenüber der reinen Java-Implementierung deutlich verbessert haben, sodass sich die Laufzeiten an die reinen Java-Implementierungslaufzeiten angenähert haben. Tabelle I zeigt den mittleren Vergleich über die einzelnen Releases von Pig im Vergleich zu einer reinen Java- Implementierung. Der Faktor gibt dabei den Durschnitt aller Quotienten des Verhältnisses Java / Pig an. Tabelle II zeigt die Laufzeiten verschiedener Operationen und das Verhältnis zwischen Pig und einer Java-Implementierung. Für weitere Informationen bezüglich PigMix sei auf die offizielle Website von PigMix verwiesen [17]. Abbildung 3: Auswahl des optimalen Join-Operators [1] 3) Filter und Projektion: Pig nutzt intern einen logischen Optimierer der dafür zuständig ist Filter und Projektionen im Skript möglichst früh auszuführen. Dennoch sollte diese beiden Operatoren so früh und oft wie möglich eingesetzt III. ZUSAMMENFASSUNG Mit dem Subsystem Apache Pig aus dem Hadoop Framework lassen sich viele Daten schnell, einfach und zuverlässig abfragen. Pig nutzt zwei weiter Subsysteme des Hadoop Framework. Zum Einen das verteilte Dateisystem HDFS und zum Anderen Hadoops MapReduce-Verfahren mit dem Anfragen verteilt ausgeführt werden können. Die Daten müssen dabei nicht in einem geordneten Schema, wie in relationalen Datenbanken, vorliegen. Mit Hilfe der Anfragesprache Pig Latin lässt sich mit vergleichsmäßig wenig Aufwand eine komplexe Datenbankanfrage modellieren. Dazu werden immer die drei Schritte einlesen, verarbeiten und ausgeben berücksichtigt. Innerhalb des Schrittes Daten verarbeiten lassen sich benutzerdefinierte

6 6 Querie Java Pig Verhältnis Java/Pig L1 explode L2 fr join L3 join L4 distinct agg L5 anti-join L6 large group by key L7 nested split L8 group all L9 order by 1 field L10 order by multi. fields L11 distinct + union L12 multi-store L13 outer join L14 merge join L15 multi. diff. aggregates L16 accumulative mode L17 wide key group [10] [Online]. Available: backend/hadoop/hbase/hbasestorage.html [11] [Online]. Available: [12] [Online]. Available: 2FStore+Functions [13] [Online]. Available: Relational+Operators [14] [Online]. Available: [15] [Online]. Available: ]http://javasourcecode.org/html/open-source/pig/ pig-0.8.1/org/apache/pig/pigunit/pigtest.html [16] [Online]. Available: optimization-rules [17] [Online]. Available: https://cwiki.apache.org/confluence/display/pig/ PigMix Tabelle II: Ausführungszeiten von PigMix2 Funktionen (UDFs) aufrufen. Eine Reihe mathematischer und datentypoperativer UDFs stehen hierbei zur Verfügung. Ebenso lassen sich eigene UDFs in Java definieren und im Pig Latin verwenden. Durch das Datenmodell von Pig ist es möglich eine Codeanalyse automatisch vornehmen zu lassen. Dies bedeutet, dass z.b. geprüft wird ob die verwendeten Datentypen an den jeweiligen Positionen sinnvoll sind. Jedoch ist es dem Anwender überlassen, ob dieser Angaben zu den Datentypen innerhalb des Skripts macht. Neben der automatischen Codeanalyse bietet es sich an zusätzlich PigUnit zu verwenden. PigUnit bietet die Möglichkeit Pig Latin-Skripte zu testen. Dabei setzt PigUnit auf JUnit auf, wodurch eine komfortable Testumgebung zur Verfügung steht. Damit die Performance von Pig erhalten bleibt, sind einige Dinge bei der Implementierung der Skripte zu beachten. Die meisten davon beziehen sich auf Datenoperationen und lassen sich ebenfalls im Anfrageoptimierungsbereich wiederfinden. Apache Pig bietet dem Benutzer eine einfach zu verstehende Datenflusssprache Pig Latin. Zwar können die Anfragen auch ohne Apache Pig modeliert weden, jedoch beansprucht dies in einigen Fällen deutlich mehr Aufwand. PigMix Benchmarks haben gezeigt, das die Ausführungsgeschwindigkeit, seit dem ersten Release von Pig, deutlich gestiegen ist. Jedoch ist die durchschnittliche Ausführungsgeschwindigkeit von Pig Skripten gegenüber einer reinen Java Implementierung immer noch leicht höher. LITERATUR [1] A. Gates, Programming Pig, first edition ed. OREILLY, [2] [Online]. Available: [3] T. White, Hadoop: The Definitive Guide, F. Edition, Ed. OREILLY, [4] [Online]. Available: [5] [Online]. Available: [6] [Online]. Available: ref2.html# Data+Types+and+More [7] A. Gates, Programming Pig, first edition ed. OREILLY, 2011, p. Appendix A. [Online]. Available: ]http://pig.apache.org/docs/r0.9.1/udf. html [8] [Online]. Available: [9] [Online]. Available:

APACHE PIG SEMINARARBEIT SSE - WS12/13 SEBASTIAN WALTHER

APACHE PIG SEMINARARBEIT SSE - WS12/13 SEBASTIAN WALTHER APACHE PIG SEMINARARBEIT SSE - WS12/13 SEBASTIAN WALTHER INHALT Das Hadoop Framework Hadoop s Distributed File System (HDFS) MapReduce Apache Pig Was ist Apache Pig & Pig Latin Anwendungsumgebungen Unterschied

Mehr

Hadoop. Simon Prewo. Simon Prewo

Hadoop. Simon Prewo. Simon Prewo Hadoop Simon Prewo Simon Prewo 1 Warum Hadoop? SQL: DB2, Oracle Hadoop? Innerhalb der letzten zwei Jahre hat sich die Datenmenge ca. verzehnfacht Die Klassiker wie DB2, Oracle usw. sind anders konzeptioniert

Mehr

Einführung in Hadoop & MapReduce. Dr. Kathrin Spreyer Big Data Engineer

Einführung in Hadoop & MapReduce. Dr. Kathrin Spreyer Big Data Engineer Einführung in Hadoop & MapReduce Dr. Kathrin Spreyer Big Data Engineer München, 19.06.2013 Agenda Einleitung 1. HDFS 2. MapReduce 3. APIs 4. Hive & Pig 5. Mahout Tools aus Hadoop-Ökosystem 6. HBase 2 Worum

Mehr

MapReduce in der Praxis

MapReduce in der Praxis MapReduce in der Praxis Rolf Daniel Seminar Multicore Programmierung 09.12.2010 1 / 53 Agenda Einleitung 1 Einleitung 2 3 Disco Hadoop BOOM 4 2 / 53 1 Einleitung 2 3 Disco Hadoop BOOM 4 3 / 53 Motivation

Mehr

Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen

Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen Hadoop aus IT-Operations Sicht Teil 1 Hadoop-Grundlagen Brownbag am Freitag, den 26.07.2013 Daniel Bäurer inovex GmbH Systems Engineer Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und

Mehr

SEMT. Prof. G. Bengel. Searching as a Service (Programming Model: MapReduce)

SEMT. Prof. G. Bengel. Searching as a Service (Programming Model: MapReduce) Hochschule Mannheim Fakultät für Informatik SEMT Prof. G. Bengel Sommersemester 2009 Semester 8I Searching as a Service (Programming Model: MapReduce) Michel Schmitt (520361) 1.06.2009 Inhalt 1. Einführung...

Mehr

Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim

Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim Tobias Neef Cloud-Computing Seminar Hochschule Mannheim WS0910 1/23 Datenbearbeitung in der Cloud anhand von Apache Hadoop Hochschule Mannheim Tobias Neef Fakultät für Informatik Hochschule Mannheim tobnee@gmail.com

Mehr

Neue Ansätze der Softwarequalitätssicherung

Neue Ansätze der Softwarequalitätssicherung Neue Ansätze der Softwarequalitätssicherung Googles MapReduce-Framework für verteilte Berechnungen am Beispiel von Apache Hadoop Universität Paderborn Fakultät für Elektrotechnik, Informatik und Mathematik

Mehr

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe

Hadoop Demo HDFS, Pig & Hive in Action. Oracle DWH Konferenz 2014 Carsten Herbe Hadoop Demo HDFS, Pig & Hive in Action Oracle DWH Konferenz 2014 Carsten Herbe Wir wollen eine semi-strukturierte Textdatei in Hadoop verarbeiten und so aufbereiten, dass man die Daten relational speichern

Mehr

Hadoop. High Performance Batches in der Cloud. Hadoop. Folie 1 25. Januar 2011

Hadoop. High Performance Batches in der Cloud. Hadoop. Folie 1 25. Januar 2011 High Performance Batches in der Cloud Folie 1 Alles geht in die Cloud Image: Chris Sharp / FreeDigitalPhotos.net Cloud und Batches passen zusammen Batches Cloud Pay-per-Use Nur zeitweise genutzt Hohe Rechenkapazitäten

Mehr

Spark, Impala und Hadoop in der Kreditrisikoberechnung

Spark, Impala und Hadoop in der Kreditrisikoberechnung Spark, Impala und Hadoop in der Kreditrisikoberechnung Big Data In-Memory-Technologien für mittelgroße Datenmengen TDWI München, 22. Juni 2015 Joschka Kupilas, Data Scientist, Adastra GmbH 2 Inhalt Vorwort

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

GPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop

GPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop am Beispiel von OpenCL und Masterseminar Hochschule für Technik, Wirtschaft und Kultur Leipzig Leipzig, 02.11.2011 Gliederung 1 Grundlagen 2 3 Gliederung 1 Grundlagen 2 3 Was ist? Clustersystem zur verteilten

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Perzentile mit Hadoop ermitteln

Perzentile mit Hadoop ermitteln Perzentile mit Hadoop ermitteln Ausgangspunkt Ziel dieses Projektes war, einen Hadoop Job zu entwickeln, der mit Hilfe gegebener Parameter Simulationen durchführt und aus den Ergebnissen die Perzentile

Mehr

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i

Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Lerox DB/2 Datenbankreferenz in QlikView für IBM System AS/400, iseries i5, System i Inhaltsverzeichnis Überblick... 3 Die QlikView Applikation im Kontext... 4 Technische Rahmenbedinungen... 5 Funktionelle

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Einführung in Hadoop

Einführung in Hadoop Einführung in Hadoop Inhalt / Lern-Ziele Übersicht: Basis-Architektur von Hadoop Einführung in HDFS Einführung in MapReduce Ausblick: Hadoop Ökosystem Optimierungen Versionen 10.02.2012 Prof. Dr. Christian

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Cloud-Computing. 1. Definition 2. Was bietet Cloud-Computing. 3. Technische Lösungen. 4. Kritik an der Cloud. 2.1 Industrie 2.

Cloud-Computing. 1. Definition 2. Was bietet Cloud-Computing. 3. Technische Lösungen. 4. Kritik an der Cloud. 2.1 Industrie 2. Cloud Computing Frank Hallas und Alexander Butiu Universität Erlangen Nürnberg, Lehrstuhl für Hardware/Software CoDesign Multicorearchitectures and Programming Seminar, Sommersemester 2013 1. Definition

Mehr

Überblick. Einführung Graphentheorie

Überblick. Einführung Graphentheorie Überblick Einführung Graphentheorie Graph-Algorithmen mit Map Kurzeinführung Graphentheorie Algorithmus zum Finden von Cliquen Graphen bestehen aus Knoten (englisch: Node, Vertex, Mehrzahl Vertices) Kanten

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Complex Hosting. Whitepaper. Autor.: Monika Olschewski. Version: 1.0 Erstellt am: 14.07.2010. ADACOR Hosting GmbH

Complex Hosting. Whitepaper. Autor.: Monika Olschewski. Version: 1.0 Erstellt am: 14.07.2010. ADACOR Hosting GmbH Complex Hosting Autor.: Monika Olschewski Whitepaper Version: 1.0 Erstellt am: 14.07.2010 ADACOR Hosting GmbH Kaiserleistrasse 51 63067 Offenbach am Main info@adacor.com www.adacor.com Complex Hosting

Mehr

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221

Oracle 10g und SQL Server 2005 ein Vergleich. Thomas Wächtler 39221 Oracle 10g und SQL Server 2005 ein Vergleich Thomas Wächtler 39221 Inhalt 1. Einführung 2. Architektur SQL Server 2005 1. SQLOS 2. Relational Engine 3. Protocol Layer 3. Services 1. Replication 2. Reporting

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Relationale Datenbanken in der Praxis

Relationale Datenbanken in der Praxis Seite 1 Relationale Datenbanken in der Praxis Inhaltsverzeichnis 1 Datenbank-Design...2 1.1 Entwurf...2 1.2 Beschreibung der Realität...2 1.3 Enitiy-Relationship-Modell (ERM)...3 1.4 Schlüssel...4 1.5

Mehr

Business Intelligence Praktikum 1

Business Intelligence Praktikum 1 Hochschule Darmstadt Business Intelligence SS 2014 Fachbereich Informatik Praktikumsversuch 1 Prof. Dr. C. Wentzel Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 07.05.2014 Business Intelligence Praktikum

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Advanced Analytics mit EXAPowerlytics. Technisches Whitepaper

Advanced Analytics mit EXAPowerlytics. Technisches Whitepaper Advanced Analytics mit EXAPowerlytics Technisches Whitepaper Inhalt 1. Zusammenfassung... 3 2. Einführung... 4 3. Fachliche Einführung... 5 4. Beispiel: Zeichen zählen... 7 5. Fazit... 9 6. Anhang... 10-2

Mehr

Numerische Datentypen. Simon Weidmann

Numerische Datentypen. Simon Weidmann Numerische Datentypen Simon Weidmann 08.05.2014 1 Ganzzahlige Typen 1.1 Generelles Bei Datentypen muss man immer zwei elementare Eigenschaften unterscheiden: Zuerst gibt es den Wertebereich, zweitens die

Mehr

Managed Cloud Services

Managed Cloud Services Managed Cloud Services Autor.: Monika Olschewski Whitepaper Version: 1.0 Erstellt am: 14.07.2010 ADACOR Hosting GmbH Kaiserleistrasse 51 63067 Offenbach am Main info@adacor.com www.adacor.com Cloud Services

Mehr

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer)

Programmieren I. Prinzipieller Ablauf. Eigenschaften von JAVA. Source-Code Javac Bytecode. Java Virtual Machine (Java, Browser, Appletviewer) Programmieren I Grundlagen von JAVA Dr. Klaus Höppner Hello World in JAVA Hochschule Darmstadt WS 2007/2008 Elementare Datentypen 1 / 17 2 / 17 Eigenschaften von JAVA Prinzipieller Ablauf Plattform-und

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

DSLinux Skriptbasierte Inventarisierung für Linux

DSLinux Skriptbasierte Inventarisierung für Linux DSLinux Skriptbasierte Inventarisierung für Linux www.docusnap.com TITEL DSLinux AUTOR Docusnap Consulting DATUM 21.04.2015 Die Weitergabe, sowie Vervielfältigung dieser Unterlage, auch von Teilen, Verwertung

Mehr

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004 Zugriff auf Firebird-Datenbanken mit PHP Daniel de West DB-Campus-Treffen 15. Januar 2004 Inhalt PHP und Firebird Die wichtigsten Befehle Verbindungsaufbau Übermitteln von Abfragen Beenden von Verbindungen

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2

Seminar Cloud Data Management WS09/10. Tabelle1 Tabelle2 Seminar Cloud Data Management WS09/10 Tabelle1 Tabelle2 1 Einführung DBMS in der Cloud Vergleich verschiedener DBMS Beispiele Microsoft Azure Amazon RDS Amazon EC2 Relational Databases AMIs Was gibt es

Mehr

BigTable. 11.12.2012 Else

BigTable. 11.12.2012 Else BigTable 11.12.2012 Else Einführung Distributed Storage System im Einsatz bei Google (2006) speichert strukturierte Daten petabyte-scale, > 1000 Nodes nicht relational, NoSQL setzt auf GFS auf 11.12.2012

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

MapReduce mit Hadoop 08.11.12 1

MapReduce mit Hadoop 08.11.12 1 MapReduce mit Hadoop 08.11.12 1 Lernziele / Inhalt Wiederholung MapReduce Map in Hadoop Reduce in Hadoop Datenfluss Erste Schritte Alte vs. neue API Combiner Functions mehr als Java 08.11.12 2 Wiederholung

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Data Mining in der Cloud

Data Mining in der Cloud Data Mining in der Cloud von Jan-Christoph Meier Hamburg, 21.06.2012 1 Ablauf Einführung Verwandte Arbeiten Fazit / Ausblick Literatur 2 Ablauf Einführung Verwandte Arbeiten Fazit / Ausblick Literatur

Mehr

entweder: zeilenweise fgets() oder: zeichenweise fgetc()

entweder: zeilenweise fgets() oder: zeichenweise fgetc() PHP stellt viele Funktionen zur Verfügung, um mit Dateien effektiv zu arbeiten. Die grundsätzliche Vorgehensweise beim Auslesen einer Datei sieht wie folgt aus: 1. Öffnen der Datei fopen() 2. schrittweises

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Hadoop & SQL Oracle BI & DWH Konferenz 2013 19./20. März 2013, Kassel. Carsten Herbe metafinanz Informationssysteme GmbH

Hadoop & SQL Oracle BI & DWH Konferenz 2013 19./20. März 2013, Kassel. Carsten Herbe metafinanz Informationssysteme GmbH Hadoop & SQL Oracle BI & DWH Konferenz 2013 19./20. März 2013, Kassel Carsten Herbe metafinanz Informationssysteme GmbH In unserer Business Line Business Intelligence & Risk gibt es fünf Bereiche: Risk,

Mehr

Oracle Big Data Technologien Ein Überblick

Oracle Big Data Technologien Ein Überblick Oracle Big Data Technologien Ein Überblick Ralf Lange Global ISV & OEM Sales NoSQL: Eine kurze Geschichte Internet-Boom: Erste Ansätze selbstgebauter "Datenbanken" Google stellt "MapReduce"

Mehr

Objekt-Orientierte Programmierung

Objekt-Orientierte Programmierung Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

Integration Services - Dienstarchitektur

Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Integration Services - Dienstarchitektur Dieser Artikel solle dabei unterstützen, Integration Services in Microsoft SQL Server be sser zu verstehen und damit die

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

AJAX SSL- Wizard Referenz

AJAX SSL- Wizard Referenz AJAX SSL- Wizard Referenz Version 1.0.2+ - 04.04.2011 Präambel Die vorliegende Dokumentation beschreibt den AJAX basierten SSL- Wizard der CertCenter AG. Der SSL- Wizard kann mit wenigen Handgriffen nahtlos

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG

Unit-Test Theorie und Praxis. Stephan Seefeld, INGTES AG Unit-Test Theorie und Praxis Stephan Seefeld, INGTES AG Inhalt Was sind Unit-Test? NUnit für.net Demo Seite 2 Quellen Für diesen Vortrag verwendete Quellen: dotnet User Group Berlin Brandenburg http://www.dotnet-berlinbrandenburg.de/

Mehr

Business Intelligence Praktikum 1

Business Intelligence Praktikum 1 Hochschule Darmstadt Business Intelligence WS 2013-14 Fachbereich Informatik Praktikumsversuch 1 Prof. Dr. C. Wentzel Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.10.2013 Business Intelligence Praktikum

Mehr

DduP - Towards a Deduplication Framework utilising Apache Spark

DduP - Towards a Deduplication Framework utilising Apache Spark - Towards a Deduplication Framework utilising Apache Spark utilising Apache Spark Universität Hamburg, Fachbereich Informatik Gliederung 1 Duplikaterkennung 2 Apache Spark 3 - Interactive Big Data Deduplication

Mehr

Softwaretool Data Delivery Designer

Softwaretool Data Delivery Designer Softwaretool Data Delivery Designer 1. Einführung 1.1 Ausgangslage In Unternehmen existieren verschiedene und häufig sehr heterogene Informationssysteme die durch unterschiedliche Softwarelösungen verwaltet

Mehr

Dokumentation QuickHMI-Schnittstelle. Datenbanken

Dokumentation QuickHMI-Schnittstelle. Datenbanken Dokumentation QuickHMI-Schnittstelle für SQLServer Datenbanken Version 1.0 D-28359 Bremen info@indi-systems.de Tel + 49 421-989703-30 Fax + 49 421-989703-39 Inhaltsverzeichnis Was ist die QuickHMI-Schnittstelle

Mehr

Java-Vorkurs 2015. Wintersemester 15/16

Java-Vorkurs 2015. Wintersemester 15/16 Java-Vorkurs 2015 Wintersemester 15/16 Herzlich Willkommen! package de.unistuttgart.47.01.javavorkurs; public class WelcomeErstis { public static void main(string[] args){ System.out.println( Herzlich

Mehr

Wide Column Stores. Felix Bruckner Mannheim, 15.06.2012

Wide Column Stores. Felix Bruckner Mannheim, 15.06.2012 Wide Column Stores Felix Bruckner Mannheim, 15.06.2012 Agenda Einführung Motivation Grundlagen NoSQL Grundlagen Wide Column Stores Anwendungsfälle Datenmodell Technik Wide Column Stores & Cloud Computing

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Universität Karlsruhe (TH)

Universität Karlsruhe (TH) Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Software Engineering für moderne, parallele Plattformen 10. MapReduce Dr. Victor Pankratius Agenda Motivation Der MapReduce-Ansatz Map- und

Mehr

15 Bilder und Dateien im SQL Server

15 Bilder und Dateien im SQL Server Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 15 Bilder und Dateien im SQL Server Eines der großen Probleme von Access-Datenbanken ist der vergleichsweise geringe Speicher platz. Sicher,

Mehr

Big Data in Azure. Ein Beispiel mit HD Insight. Ralf Stemmer

Big Data in Azure. Ein Beispiel mit HD Insight. Ralf Stemmer Big in Azure Ein Beispiel mit HD Insight Ralf Stemmer Agenda owas ist Big? Was ist HD Insight? owelche Probleme kann man damit lösen? odemo Was ist Big? Was ist HD Insight? Datenexplosion - Rasanter Zuwachs

Mehr

Institut für Verteilte Systeme

Institut für Verteilte Systeme Institut für Verteilte Systeme Prof. Dr. Franz Hauck Seminar: Multimedia- und Internetsysteme, Wintersemester 2010/11 Betreuer: Jörg Domaschka Bericht zur Seminarssitzung am 2011-01-31 Bearbeitet von :

Mehr

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013

Programmiervorkurs. Organisation: Steffen Gebert, Alexander Wolff. Tutoren: Jürgen Zöller, Jonathan Stoll. Wintersemester 2012/2013 Programmiervorkurs Wintersemester 2012/2013 Organisation: Steffen Gebert, Alexander Wolff Tutoren: Jürgen Zöller, Jonathan Stoll Kontakt (für Organisatorisches, Fehler auf Folien...): Steffen Gebert steffen.gebert@informatik.uni-wuerzburg.de

Mehr

Multimedia im Netz Wintersemester 2011/12

Multimedia im Netz Wintersemester 2011/12 Multimedia im Netz Wintersemester 2011/12 Übung 01 Betreuer: Verantwortlicher Professor: Sebastian Löhmann Prof. Dr. Heinrich Hussmann Organisatorisches 26.10.2011 MMN Übung 01 2 Inhalte der Übungen Vertiefung

Mehr

Hadoop in a Nutshell Einführung HDFS und MapReduce. Oracle/metafinanz Roadshow Februar 2014

Hadoop in a Nutshell Einführung HDFS und MapReduce. Oracle/metafinanz Roadshow Februar 2014 Hadoop in a Nutshell Einführung HDFS und MapReduce Oracle/metafinanz Roadshow Februar 2014 Head of Data Warehousing DWH Principal Consultant DWH Senior Consultant Wir fokussieren mit unseren Services die

Mehr

Klassenattribute und -methoden, Vererbung

Klassenattribute und -methoden, Vererbung Klassenattribute und -methoden, Vererbung Michael Dienert 27. März 2002 1 Prüfungsaufgabe Anwendungsentwicklung Winter 2001 Die folgende Aufgabe stammt aus der Abschlussprüfung für Fachinformatiker Anwendungsentwicklung

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords 4.0 Proinformatik III Objektorientierte Programmierung Michael Kölling University of Kent Canterbury, UK Selbstbestimmtes Lernen Vorlesung Tutorium Übungen Buch Web-Seite Üben, üben, üben! Format Vorlesung:

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: 03.11.2014. Übung WS 2014/2015. Benedikt Schumm M.Sc.

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: 03.11.2014. Übung WS 2014/2015. Benedikt Schumm M.Sc. Übung WS 2014/2015 E-Commerce: IT-Werkzeuge Web-Programmierung Kapitel 4: Stand: 03.11.2014 Benedikt Schumm M.Sc. Lehrstuhl für ABWL und Wirtschaftsinformatik Katholische Universität Eichstätt-Ingolstadt

Mehr

Teamprojekt & Projekt

Teamprojekt & Projekt 18. Oktober 2010 Teamprojekt & Projekt Veranstalter: Betreuer: Prof. Dr. Georg Lausen Thomas Hordnung, Alexander Schätzle, Martin Przjyaciel-Zablocki dbis Studienordnung Master: 16 ECTS 480 Semesterstunden

Mehr

Dateisysteme und Datenverwaltung in der Cloud

Dateisysteme und Datenverwaltung in der Cloud Dateisysteme und Datenverwaltung in der Cloud Sebastian Fischer Master-Seminar Cloud Computing - WS 2013/14 Institut für Telematik, Universität zu Lübeck Dateisysteme und Datenverwaltung in der Cloud 1

Mehr

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik www.munz-udo.de Aufgaben: Ein Ausgabe Ein Rechner verwaltet nicht nur Daten, die während der Laufzeit des Programms erzeugt werden. Die meisten Programme greifen auf ältere Datenbestände zurück oder erzeugen für einen

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

MapReduce-Konzept. Thomas Findling, Thomas König

MapReduce-Konzept. Thomas Findling, Thomas König MapReduce - Konzept 1 Inhalt 1. Motivation 2. Einführung MapReduce Google Rechenzentren Vergleich MapReduce und Relationale DBS 3. Hadoop Funktionsweise Input / Output Fehlerbehandlung 4. Praxis-Beispiel

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Apache Lucene. Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org

Apache Lucene. Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org Apache Lucene Mach s wie Google! Bernd Fondermann freier Software Architekt bernd.fondermann@brainlounge.de berndf@apache.org 1 Apache Apache Software Foundation Software free of charge Apache Software

Mehr

Teamprojekt & Projekt

Teamprojekt & Projekt 8. November 2010 Teamprojekt & Projekt Veranstalter: Betreuer: Prof. Dr. Georg Lausen Alexander Schätzle, Martin Przjyaciel-Zablocki, Thomas Hornung dbis Zeit und Ort: Montag 14-17 Uhr (c.t.) Raum: SR

Mehr

CVS-Einführung. Sebastian Mancke, mancke@mancke-software.de

CVS-Einführung. Sebastian Mancke, mancke@mancke-software.de CVS-Einführung Sebastian Mancke, mancke@mancke-software.de Grundlagen Motivation und Anforderung Sobald ein Softwaresystem anwächst, ergeben sich Probleme im Umgang mit dem Quell Code. CVS (Concurrent

Mehr

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7

CARL HANSER VERLAG. Christopher Allen. Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 CARL HANSER VERLAG Christopher Allen Oracle PL/SQL für Einsteiger Der Einsatz von SQL und PL/SQL in der Oracle-Datenbank 3-446-21801-7 www.hanser.de Inhaltsverzeichnis Danksagung...XI Einleitung...XIII

Mehr

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen

SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen WEITER BLICKEN. MEHR ERKENNEN. BESSER ENTSCHEIDEN. Optimierung von Abfragen in MS SQL Server DWH-Umgebungen SOLISYON GMBH CHRISTIAN WOLF, BENJAMIN WEISSMAN VERSION 1.0 OPTIMIERUNG VON ABFRAGEN IN MS SQL

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Storage-Trends am LRZ. Dr. Christoph Biardzki

Storage-Trends am LRZ. Dr. Christoph Biardzki Storage-Trends am LRZ Dr. Christoph Biardzki 1 Über das Leibniz-Rechenzentrum (LRZ) Seit 50 Jahren Rechenzentrum der Bayerischen Akademie der Wissenschaften IT-Dienstleister für Münchner Universitäten

Mehr

Sprachen, die nach MapReduce kompiliert werden Hauptseminar: Multicore-Programmierung. Franz Pius Hübl 10. November 2011

Sprachen, die nach MapReduce kompiliert werden Hauptseminar: Multicore-Programmierung. Franz Pius Hübl 10. November 2011 Sprachen, die nach MapReduce kompiliert werden Hauptseminar: Multicore-Programmierung Franz Pius Hübl 10. November 2011 Zusammenfassung Ziel dieser Arbeit ist es, einen Einblick in die Arbeitsweise verschiedener

Mehr

EXASOL Anwendertreffen 2012

EXASOL Anwendertreffen 2012 EXASOL Anwendertreffen 2012 EXAPowerlytics Feature-Architektur EXAPowerlytics In-Database Analytics Map / Reduce Algorithmen Skalare Fkt. Aggregats Fkt. Analytische Fkt. Hadoop Anbindung R LUA Python 2

Mehr

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java:

Speicherstrukturen. Aufgabe 1-1: Fragen zu FAT (File Allocation Table) Aufgabe 1-2: Datensätze variabler Länge. Kind.java: Institut für Datenbanken und Informationssysteme Prof. Dr. M. Reichert, M. Predeschly, J. Kolb Lösung für Übungsblatt 1 Aufgabe 1-1: Fragen zu FAT (File Allocation Table) 1. Im Bootsektor der Festplatte

Mehr

Seminar Map/Reduce Algorithms on Hadoop. Topics. Alex, Christoph

Seminar Map/Reduce Algorithms on Hadoop. Topics. Alex, Christoph Seminar Map/Reduce Algorithms on Hadoop Topics Alex, Christoph Organisatorisches Prioritisierte Liste mit allen vorgestellten Themen bis heute 23:59 an Alexander.Albrecht@hpi.uni-potsdam.de Vergabe der

Mehr