MapReduce-Anfragen mit der High-Level-Sprache Pig effizienter erstellen

Apache Pig – Datenanalyse für Hadoop

| Autor / Redakteur: Thomas Joos / Nico Litzel

Apache Pig arbeitet auch mit der PowerShell, C# und dem .NET SDK zusammen und hilft dabei, MapReduce-Abfragen zu vereinfachen.
Apache Pig arbeitet auch mit der PowerShell, C# und dem .NET SDK zusammen und hilft dabei, MapReduce-Abfragen zu vereinfachen. (Bild: T. Joos)

Apache Pig ist ein Zusatz für Hadoop, mit dem Entwickler umfassende Analysen erstellen können, die trotz ihrer Komplexität relativ leicht nachvollziehbar sind. Mit der High-Level Sprache Pig Latin lassen sich außerdem Aktionen optimieren oder Abfragen erweitern. Das Erstellen von MapReduce-Aufgaben wird deutlich erleichtert

Apache Pig hilft dabei, einfach ausgedrückt, MapReduce-Abfragen einfacher als mit Java zu erstellen. Basis von Apache Pig ist die Skript-Sprache „Pig Latin“. Mit dieser können Entwickler MapReduce-Abfragen über eine zusätzliche Abstraktionsschicht effizienter, umfassender und dabei gleichzeitig leichter erstellen. Der Compiler kann dazu die Daten eines MapReduce-Jobs nachverfolgen und die einzelnen Jobs optimieren. Die Sprache wurde ursprünglich im Jahre 2006 von Yahoo entwickelt, um die Abfragen von großen Datenmengen zu vereinfachen.

Apache Pig versus MapReduce-Java

An der Ausführung der Jobs ändert sich dabei nichts, allerdings beschleunigt sich die Erstellung und Verwaltung. Da Pig Latin effizienter und einfacher zu verwenden ist als Java, sollten sich alle Unternehmen das Produkt ansehen, die in Hadoop Daten über MapReduce-Abfragen auslesen. Genau genommen muss ein Entwickler nicht einmal Java beherrschen, um mit Pig Latin einen effizienten MapReduce-Job zu erstellen und eine Datenanalyse zu starten. Natürlich sind die MapReduce-Jobs weiterhin voll kompatibel mit Java und lassen sich auch mit Java ergänzen.

Der Ablauf einer Pig-Latin-Anweisung ist folgender: Die Daten werden aus dem Datensystem ausgelesen, danach werden die Daten transformiert und schließlich ausgegeben oder gespeichert. Dabei haben Entwickler auch die Möglichkeit, Dateien direkt aus dem Dateisystem oder aus CSV-Dateien einzulesen und zu verarbeiten. Das Auslesen der Daten erfolgt über LOAD-Anweisungen, die den Dateipfad der Daten enthalten, welche später mit Hadoop analysiert werden sollen. Jede Pig-Abfrage beginnt daher zunächst mit dem Laden der Daten. Wie Abfragen erstellt werden, zeigen die Entwickler ausführlich im Pig Latin Reference Manual 1 und im Pig Latin Reference Manual 2. Außerdem wird auch ein leicht zu erlernendes Pig Tutorial zur Verfügung gestellt.

Pig Latin orientiert sich auch an anderen Programmiersprachen und beherrscht daher auch Schlüsselworte, die vielen Entwicklern schon bekannt sind. Daher lässt sich Pig relativ schnell erlernen. Beispiel dafür sind JOIN und FOREACH, beide Schlüsselwörter sind bereits aus SQL (JOIN) oder Java (FOREACH) bekannt.

Apache Big einbinden

Apache Pig lässt sich in bestehende Hadoop-Infrastrukturen jederzeit einbinden. Entwickler können die Erweiterung aber auch problemlos in Cloud-Lösungen integrieren, wie Microsoft Azure HDInsight oder Amazon Elastic MapReduce. Auch die Anbindung an die Google Cloud Platform ist möglich.

Vor allem bei der Verarbeitung sehr großer Datenmengen hilft Pig dabei, die Abfragen zu beschleunigen und zu verbessern. Pig baut arbeitet dazu auch mit anderen Optimierungswerkzeugen für Hadoop zusammen, wie YARN. Bei YARN handelt es sich um einen wichtigen Bestandteil von Hadoop 2.3. YARN stellt sozusagen den neuen Ressourcen-Manager dar. Viele Big Data-Profis bezeichnen YARN auch als MapReduce 2. Pig Latin steuert dazu die Pig-Erweiterung im Cluster. Diese arbeitet mit Yarn zusammen, das mit dem Hadoop-Cluster kommuniziert und diesen steuert. Der Cluster selbst greift wiederum auf seinen Datenspeicher zu. Entwickler können mit Pig also auch auf Daten im Microsoft-Azure-Speicher zugreifen. Dieser Aufbau lässt sich lokal erstellen, aber auch in den bereits erwähnten Cloud-Lösungen Microsoft HDInsight und Amazon Elastic MapReduce.

Apache Pig mit der PowerShell und .NET nutzen

Haben Unternehmen Apache Pig in Ihren Microsoft HDInsight-Cluster eingebunden, können Entwickler Abfragen auch mit der PowerShell übermitteln. Für Programmierer ist interessant, dass die Übermittlung natürlich auch mit dem .NET SDK möglich ist. Das heißt, so gut wie alle C#-Programme können Pig nutzen. Microsoft stellt dazu in der Azure-Dokumentation eine umfassende Anleitung zur Verfügung, die dabei hilft, MapReduce-Abfragen mit Pig zu erstellen und über PowerShell oder .NET in den HDInsight-Cluster zu übermitteln.

Apache Pig versus Hive

Generell hat Apache Pig einige Ähnlichkeiten zu Apache Hive. Wollen Unternehmen das MapReduce-Framework mit einer leistungsstarken Abfragesprache ausstatten, hilft die Hadoop-Erweiterung Apache Hive. Mit dieser Erweiterung können Entwickler Hadoop-Umgebungen abfragen, ähnlich wie SQL-Abfragen. Entwickler können mit Hive direkt die Daten abfragen, die in HDFS gespeichert sind. Hive orientiert sich also stark an SQL und kann viele Aufgaben in einer Zeile unterbringen.

Pig dagegen nutzt immer mehrere Zeilen Programmcode, um die jeweiligen Ergebnisse besser optimieren zu können. Das erhöht die Übersicht, da mit Hive Abfragen auch sehr schnell kompliziert werden können. Durch den zeilenorientierten Aufbau ist Pig oft deutlich übersichtlicher, da alle Zeilen nacheinander eingelesen werden. Pig und Hive sollen sich allerdings nicht gegenseitig ersetzen, sondern ergänzen.

Fazit

Apache Pig ist ein wertvolles Instrument, wenn es um das Analysieren von Daten aus Hadoop geht. Da die Open-Source-Lösung mit so gut wie jeder Hadoop-Distribution und -Cloud-Lösung zusammenarbeitet, sollten sich Entwickler die Lösung ansehen. Auch wer mit Apache Hive Abfragen durchführt, kommt mit Apache Pig oft schneller zu Ergebnissen, vor allem dann, wenn die Abfragen kompliziert sind. Apache Pig ersetzt keine anderen Produkte, sondern ergänzt die Möglichkeiten einer Hadoop-Infrastruktur um weitere Optionen, die einen echten Mehrwert bringen. Wer Abfragen aus Hadoop erstellt, sollte generell Hive und Pig parallel nutzen.

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 43223950 / Infrastruktur)