HBase
 sql >> Datenbank >  >> NoSQL >> HBase

Cloudera Impala:Echtzeitabfragen in Apache Hadoop, in echt

Nach einer langen Zeit intensiver technischer Bemühungen und Benutzerfeedbacks freuen wir uns sehr und sind stolz, das Cloudera Impala-Projekt ankündigen zu können. Diese Technologie ist für Hadoop-Benutzer revolutionär, und wir nehmen diese Behauptung nicht auf die leichte Schulter.

Als Google 2010 sein Dremel-Papier veröffentlichte, waren wir wie der Rest der Community von der technischen Vision inspiriert, Apache Hadoop mit Ad-hoc-Abfragefunktionen in Echtzeit auszustatten, die die traditionelle MapReduce-Batch-Verarbeitung ergänzen. Heute kündigen wir eine voll funktionsfähige Open-Source-Codebasis an, die diese Vision – und unserer Meinung nach noch ein bisschen mehr – erfüllt und die wir Cloudera Impala nennen. Eine Impala-Binärdatei ist jetzt in öffentlicher Beta-Form verfügbar, aber wenn Sie Impala lieber über eine vorgefertigte VM testen möchten, haben wir auch eine davon für Sie. Sie können den Quellcode und die Testumgebung jetzt auch auf Github einsehen.

Impala legt die Messlatte für die Abfrageleistung höher und behält gleichzeitig eine vertraute Benutzererfahrung bei. Mit Impala können Sie Daten, ob in HDFS oder Apache HBase gespeichert, einschließlich SELECT-, JOIN- und Aggregatfunktionen, in Echtzeit abfragen. Darüber hinaus verwendet es die gleichen Metadaten, SQL-Syntax (Hive SQL), ODBC-Treiber und Benutzeroberfläche (Hue Beeswax) wie Apache Hive und bietet eine vertraute und einheitliche Plattform für Batch-orientierte oder Echtzeit-Abfragen. (Aus diesem Grund können Hive-Benutzer Impala mit geringem Einrichtungsaufwand verwenden.) Der erste Beta-Drop enthält Unterstützung für Textdateien und SequenceFiles; SequenceFiles können als Snappy, GZIP und BZIP komprimiert werden (wobei Snappy für maximale Leistung empfohlen wird). Unterstützung für zusätzliche Formate wie Avro, RCFile, LZO-Textdateien und das Parquet-Spaltenformat ist für die Produktionseinstellung geplant.

Um Latenz zu vermeiden, umgeht Impala MapReduce, um direkt auf die Daten über eine spezialisierte verteilte Abfrage-Engine zuzugreifen, die denen in kommerziellen parallelen RDBMS sehr ähnlich ist. Das Ergebnis ist eine um Größenordnungen schnellere Leistung als Hive, abhängig von der Art der Abfrage und Konfiguration. (Weitere Einzelheiten finden Sie unten in den häufig gestellten Fragen.) Beachten Sie, dass diese Leistungsverbesserung von mehreren großen Unternehmen bestätigt wurde, die Impala nun seit mehreren Monaten unter realen Workloads testen.

Eine allgemeine Architekturansicht finden Sie unten:

Dieser Ansatz hat viele Vorteile gegenüber alternativen Ansätzen zum Abfragen von Hadoop-Daten, einschließlich::

  • Dank lokaler Verarbeitung auf Datenknoten werden Netzwerkengpässe vermieden.
  • Ein einziger, offener und einheitlicher Metadatenspeicher kann verwendet werden.
  • Aufwändige Datenformatkonvertierung entfällt und somit kein Overhead.
  • Alle Daten können sofort abgefragt werden, ohne Verzögerungen für ETL.
  • Die gesamte Hardware wird sowohl für Impala-Abfragen als auch für MapReduce verwendet.
  • Zum Skalieren wird nur ein einziger Maschinenpool benötigt.

Wir empfehlen Ihnen, die Dokumentation für weitere technische Details zu lesen.

Abschließend möchten wir einige Fragen beantworten, von denen wir erwarten, dass sie beliebt sein werden:

Ist Impala Open Source?
Ja, Impala ist zu 100 % Open Source (Apache-Lizenz). Sie können den Code noch heute auf Github selbst überprüfen.

Wie unterscheidet sich Impala von Dremel?
Der erste und wichtigste Unterschied besteht darin, dass Impala Open Source und für jedermann verfügbar ist, während Dremel Eigentum von Google ist.

Technisch gesehen erzielt Dremel interaktive Reaktionszeiten über sehr große Datenmengen durch die Verwendung von zwei Techniken:

  • Ein neuartiges spaltenweises Speicherformat für verschachtelte relationale Daten/Daten mit verschachtelten Strukturen
  • Verteilte skalierbare Aggregationsalgorithmen, mit denen die Ergebnisse einer Abfrage auf Tausenden von Maschinen parallel berechnet werden können.

Letzteres ist von Techniken entlehnt, die für parallele DBMS entwickelt wurden, die auch die Entwicklung von Impala inspirierten. Im Gegensatz zu Dremel, wie im Papier von 2010 beschrieben, das nur Einzeltabellenabfragen handhaben konnte, unterstützt Impala bereits den vollständigen Satz von Join-Operatoren, die einer der Faktoren sind, die SQL so beliebt machen.

Um die von Dremel demonstrierten Leistungsvorteile voll auszuschöpfen, wird Hadoop in Kürze ein effizientes binäres Spaltenspeicherformat namens Parquet haben. Aber im Gegensatz zu Dremel unterstützt Impala eine Reihe gängiger Dateiformate. Auf diese Weise können Benutzer Impala auf ihren vorhandenen Daten ausführen, ohne sie „laden“ oder transformieren zu müssen. Außerdem können Benutzer entscheiden, ob sie die Flexibilität oder nur die reine Leistung optimieren möchten.

Zusammenfassend lässt sich sagen, dass Impala plus Parquet die im Dremel-Artikel beschriebene Abfrageleistung erreichen, aber die dort beschriebenen SQL-Funktionen übertreffen.

Wie viel schneller sind Impala-Abfragen wirklich als Hive-Abfragen?
Das genaue Ausmaß der Leistungsverbesserung hängt stark von einer Reihe von Faktoren ab:

  • Hardwarekonfiguration:Impala ist im Allgemeinen in der Lage, Hardwareressourcen voll auszunutzen und erzeugt insbesondere weniger CPU-Last als Hive, was sich oft in einer höheren beobachteten aggregierten E/A-Bandbreite als bei Hive niederschlägt. Impala kann natürlich nicht schneller fahren, als es die Hardware zulässt, sodass Hardware-Engpässe die beobachtete Beschleunigung begrenzen. Bei reinen E/A-gebundenen Abfragen sehen wir normalerweise Leistungssteigerungen im Bereich von 3-4x.
  • Komplexität der Abfrage:Abfragen, die mehrere MapReduce-Phasen in Hive erfordern oder Joins auf der Seite des Reduzierens erfordern, werden schneller beschleunigt als beispielsweise einfache Aggregationsabfragen mit einer einzelnen Tabelle. Bei Abfragen mit mindestens einem Join haben wir scheinbare Leistungssteigerungen von 7-45X.
  • Verfügbarkeit des Hauptspeichers als Cache für Tabellendaten:Wenn die Daten, auf die über die Abfrage zugegriffen wird, aus dem Cache kommen, ist die Beschleunigung dank der überlegenen Effizienz von Impala dramatischer. In diesen Szenarien haben wir selbst bei einfachen Aggregationsabfragen eine 20- bis 90-fache Beschleunigung gegenüber Hive festgestellt.

Ist Impala ein Ersatz für MapReduce oder Hive – oder für diese Angelegenheit für die herkömmliche Data Warehouse-Infrastruktur?
Nein. Es wird weiterhin viele praktikable Anwendungsfälle für MapReduce und Hive (z. B. für lang andauernde Datentransformations-Workloads) sowie traditionelle Data-Warehouse-Frameworks (z. B. für komplexe Analysen begrenzter, strukturierter Datensätze) geben. Impala ist eine Ergänzung zu diesen Ansätzen und unterstützt Anwendungsfälle, in denen Benutzer mit sehr großen Datensätzen über alle Datensilos hinweg interagieren müssen, um schnell fokussierte Ergebnissätze zu erhalten.

Hat die Impala Beta-Version technische Einschränkungen?
Wie bereits erwähnt, umfassen die unterstützten Dateiformate im ersten Beta-Drop Textdateien und SequenceFiles, wobei viele andere Formate in der kommenden Produktionsversion unterstützt werden. Darüber hinaus werden derzeit alle Verknüpfungen in einem Speicherplatz durchgeführt, der nicht größer ist als der des kleinsten Knotens im Cluster; In der Produktion werden Joins im Gesamtspeicher durchgeführt. Schließlich sind derzeit keine UDFs möglich.

Was sind die technischen Anforderungen für die Beta-Version von Impala?
Auf RHEL/CentOS 6.2 muss CDH4.1 installiert sein. Wir empfehlen dringend die Verwendung von Cloudera Manager (Free oder Enterprise Edition), um Impala bereitzustellen und zu verwalten, da es sich automatisch um die verteilte Bereitstellung und die Überwachungsdetails kümmert.

Wie lauten die Support-Richtlinien für die Beta-Version von Impala?
Wenn Sie ein bestehender Cloudera-Kunde mit einem Fehler sind, können Sie ein Kundensupport-Ticket erstellen und wir werden versuchen, es nach besten Kräften zu lösen. Wenn Sie kein bestehender Cloudera-Kunde sind, können Sie unsere öffentliche JIRA-Instanz oder die impala-user-Mailingliste verwenden, die von Cloudera-Mitarbeitern überwacht wird.

Wann wird Impala allgemein für den Produktionseinsatz verfügbar sein?
Ein Produktionsrückgang ist für das erste Quartal 2013 geplant. Kunden können zu diesem Zeitpunkt kommerziellen Support in Form eines Cloudera Enterprise RTQ-Abonnements erhalten.

Wir hoffen, dass Sie die Gelegenheit nutzen, den Impala-Quellcode zu überprüfen, die Betaversion zu erkunden, die VM herunterzuladen und zu installieren oder eine beliebige Kombination der oben genannten Möglichkeiten zu nutzen. Ihr Feedback wird in jedem Fall geschätzt; Wir brauchen Ihre Hilfe, um Impala noch besser zu machen.

Wir werden Ihnen weitere Updates über Impala bringen, sobald wir uns der Produktionsverfügbarkeit nähern. (Aktualisierung:Lesen Sie mehr über Impala 1.0.)

Impala-Ressourcen:
– Impala-Quellcode
– Impala-Downloads (Betaversion und VM)
– Impala-Dokumentation
– Öffentliches JIRA
– Impala-Mailingliste
– Kostenlos Impala Schulung (Screencast)

(Hinzugefügt am 30.10.2012) Artikel von Drittanbietern über Impala:
– GigaOm: Echtzeitabfrage für Hadoop demokratisiert Zugriff auf Big-Data-Analysen (22. Okt. 2012)
– Wired: Man sprengt Google aus, baut Top-Secret-Abfragemaschine wieder auf (24. Okt. 2012)
– InformationWeek: Cloudera debütiert Hadoop-Abfrage in Echtzeit (24. Okt. 2012)
– GigaOm:Cloudera macht SQL zu einem erstklassigen Bürger auf Hadoop (24. Okt. 2012)
– ZDNet:Impala von Cloudera bringt Hadoop in SQL und BI (25. Okt. 2012)
– Wired:Marcel Kornacker Profile (29. Okt. 2012)
– Dr. Dobbs: Cloudera Impala – Processing Petabytes at The Speed ​​Of Gedanke (29. Okt. 2012)

Marcel Kornacker ist der Architekt von Impala. Bevor er zu Cloudera kam, war er leitender Entwickler für die Abfrage-Engine des F1-Projekts von Google.

Justin Erickson ist Produktmanager für Impala.