Apache Hive ist ein Framework, das auf Hadoop aufbaut, um Ad-hoc-Abfragen zu Daten in Hadoop durchzuführen. Hive unterstützt HiveQL, das SQL ähnelt, jedoch nicht die vollständigen Konstrukte von SQL unterstützt.
Hive wandelt die HiveQL-Abfrage in ein Java MapReduce-Programm um und sendet sie dann an den Hadoop-Cluster. Das gleiche Ergebnis kann mit HiveQL und Java MapReduce erzielt werden, aber mit Java MapReduce muss im Vergleich zu HiveQL viel Code geschrieben / debuggt werden. HiveQL erhöht also die Entwicklerproduktivität.
Zusammenfassend lässt sich sagen, dass Hive über die HiveQL-Sprache eine Abstraktion auf höherer Ebene über die Java MapReduce-Programmierung bietet. Wie bei jeder anderen Abstraktion auf hoher Ebene ist die Verwendung von HiveQL im Vergleich zu Java MapReduce mit einem gewissen Leistungsaufwand verbunden, aber die Hive-Community bemüht sich, diese Lücke für die meisten häufig verwendeten Szenarien zu schließen.
Entsprechend bietet Pig eine Abstraktion auf höherer Ebene über MapReduce. Pig unterstützt PigLatin-Konstrukte, die in das Java MapReduce-Programm konvertiert und dann an den Hadoop-Cluster übergeben werden.
Während HiveQL eine deklarative Sprache wie SQL ist, ist PigLatin eine Datenflusssprache. Die Ausgabe eines PigLatin-Konstrukts kann als Eingabe an ein anderes PigLatin-Konstrukt usw. gesendet werden.
Vor einiger Zeit veröffentlichte Cloudera Statistiken zum Workload-Charakter in einem typischen Hadoop-Cluster, und es ist leicht zu beobachten, dass Pig- und Hive-Jobs einen guten Teil der Jobs in einem Hadoop-Cluster ausmachen. Aufgrund der höheren Entwicklerproduktivität entscheiden sich viele Unternehmen für übergeordnete Abstracts wie Pig und Hive. Wir können also wetten, dass es im Vergleich zur MapReduce-Entwicklung eine Menge offener Stellen bei Hive und Pig geben wird.
Obwohl das Buch Programming Pig im Oktober 2011 veröffentlicht wurde, wurde das Buch Programming Hive erst kürzlich im Oktober 2012 veröffentlicht. Für diejenigen, die Erfahrung mit RDBMS haben, ist der Einstieg in Hive eine bessere Option als der Einstieg in Pig. Beachten Sie auch, dass es nicht sehr schwierig ist, mit PigLatin zu beginnen.
Für den zugrunde liegenden Hadoop-Cluster ist es transparent, ob ein Java-MapReduce-Job oder ein MapReduce-Job über Hive and Pig übergeben wird. Aufgrund der Stapelorientierung von MapReduce-Jobs sind die über Hive und Pig übermittelten Jobs ebenfalls stapelorientiert.
Für Echtzeit-Antwortanforderungen erfüllen Hive und Pig die Anforderungen nicht, da MapReduce-Jobs zuvor chargenorientiert ausgeführt wurden. Cloudera entwickelte Impala, das auf Dremel (einer Veröffentlichung von Google) für interaktive Ad-hoc-Abfragen über Hadoop basiert. Impala unterstützt SQL-ähnliche Abfragen und ist mit HiveQL kompatibel. Daher sollten alle Anwendungen, die auf Hive aufbauen, mit Impala mit minimalen Änderungen funktionieren. Der Hauptunterschied zwischen Hive und Impala besteht darin, dass HiveQL zwar in Java MapReduce-Jobs konvertiert wird, Impala die SQL-Abfrage jedoch nicht in Java MapReduce-Jobs umwandelt.
Sollten Sie für eine bestimmte Anforderung mit Pig oder Hive gehen? Das ist ein Thema für einen anderen Blog.
Neuauflage mit freundlicher Genehmigung von Praveen Sripati. Der Originalartikel ist hier zu finden: http://www.thecloudavenue.com/2012/12/introduction-to-apache-hive-and-pig.html