Baidu BigSQL: schnellere interaktive Spark-Abfragen

Um die Gesamtbetriebskosten zu senken und die Leistung sicherzustellen, installierte Baidu persistenten Intel® Optane™ Speicher zur Optimierung seines Ad-hoc-Abfragedienstes.

Auf einen Blick:

  • Die BigSQL-Datenverarbeitungsplattform von Baidu basiert auf Spark SQL und bietet viele Funktionen und Erweiterungen zur Leistungsverbesserung.

  • Um die Gesamtbetriebskosten zu senken und gleichzeitig die Leistungsfähigkeit sicherzustellen, installierte Baidu persistenten Intel® Optane™ Speicher für die Optimierung seines Ad-hoc-Abfragedienstes Tuling. Unterstützt durch Intel Optane PMem übernahm der Cluster mehr als 30 % der Tuling-Auslastung. Außerdem sank die Durchschnittslatenz bei Abfragen um 20 %.

author-image

Von

In den letzten Jahren wuchs das weltweite Datenvolumen nahezu exponentiell an. Insbesondere IT-Firmen sehen sich deshalb vor größere Probleme gestellt, wenn es darum geht, die zeitlichen Anforderungen an Datendienste zu erfüllen. Als vereinheitlichte Analyse-Engine für hochleistungsfähige Datenverarbeitung im großen Maßstab ist Apache Spark dafür ausgelegt, diese Herausforderung zu meistern. Eines der Module von Apache Spark – Spark SQL – findet sehr häufig Verwendung für die Arbeit mit strukturierten Daten in großen Rechenzentren. Die BigSQL-Datenverarbeitungsplattform von Baidu basiert auf Spark SQL und bietet viele Funktionen und Erweiterungen zur Leistungsverbesserung.

Damit Baidu Big SQL den Benutzern hochleistungsfähige Ad-hoc-Abfragedienste bereitstellen kann, braucht es einen großen Speicher, um ‚heiße‘ Daten lokal auf Rechenknoten zu cachen und zu vermeiden, dass der DFS-I/O die Ausführung verlangsamt. Mit persistentem Intel Optane Speicher konnten wir für herausragende Cache-Leistung sorgen und zugleich die Verarbeitung im Cluster deutlich verbessern und signifikante Vorteile für die Gesamtbetriebskosten erzielen.“ – LI Shiyong, Senior System Engineer, Baidu

Eine wichtige Verbesserung betrifft die Erfüllung von Leistungserwartungen bei der Reaktion auf interaktive Abfragen innerhalb von Sekundenbruchteilen. In diesem Punkt arbeiteten Intel und Baidu zusammen, um das Optimized Analytics Package (OAP) für das Spark-Plattform-Projekt zu entwickeln. Das OAP kann das spaltenförmige Datenformat und benutzerdefinierte Indizes über ausgewählte Spalten nutzen, um höhere Effizienz beim Scannen von Daten zu erreichen. Zusätzlich wird eine feinkörnige In-Memory-Daten-Caching-Strategie angewendet, um I/O-Engpässe bei Datenträgern und Netzwerken zu beseitigen und die Leistung im Bereich unter einer Sekunde zu maximieren.

Mit dem weiteren Geschäftswachstum von Baidu steigt das Volumen „heißer“ Daten rasch an. Um nach wie vor die von den Kunden geforderte Leistung zu liefern, ist eine Speicherskalierung notwendig. Hohe DRAM-Kosten (Dynamic Random-Access Memory) erhöhen allerdings zusätzlich den Druck auf die Gesamtbetriebskosten. Mit dem Ziel, einerseits die Gesamtbetriebskosten zu senken und andererseits ausreichende Leistung sicherzustellen, arbeiteten Baidu und Intel zusammen und stellten als kosteneffizientere Lösung und Ersatz für DRAM den persistenten Intel® Optane™ Speicher (PMem) vor.

Interne Tests von Baidu haben gezeigt, dass Intel Optane PMem die OAP-Cache-Leistung und das Kosten-Leistungs-Verhältnis im Vergleich zu Lösungen ohne PMem verbessert, was direkten Einfluss auf das Geschäft hat, nicht zuletzt durch die Optimierung des Ad-hoc-Abfragedienstes Tuling aufgrund der reduzierten Auslastung und der geringeren Durchschnittslatenz bei Abfragen.

Baidu BigSQL mit OAP

Eine grundlegende Eigenschaft von Spark SQL ist die optimierte Leistung für die Stapelverarbeitung (Batch Processing). Einige der von Baidu angebotenen Dienste für Abfragen haben jedoch ganz andere Merkmale. Sie werden als interaktive Abfragen bezeichnet. Üblicherweise erstrecken sich entsprechende Abfragen über einen großen Datenbestand mit bestimmten Filterbedingungen und dienen dem Zweck, eine relativ kleine Menge an Daten zu extrahieren. Die Benutzer erwarten, dass diese kleinen Mengen angeforderter Daten innerhalb von Sekunden oder noch schneller bereitstehen und sie nicht, wie von Stapelverarbeitungen gewohnt, Minuten oder Stunden warten müssen. Dies ist bei der bisherigen Spark-SQL-Implementierung normalerweise nicht möglich.

Zur Lösung dieses Problems haben Baidu und Intel zusammengearbeitet und das OAP implementiert, das die Antwort auf interaktive Abfragen mithilfe von Index- und Caching-Techniken beschleunigt. Durch die OAP-Integration erreichte Baidu BigSQL das gewünschte Leistungsniveau bei interaktiven Abfragen.

Abbildung 1. OAP-Integration in Baidu BigSQL.

Wenn eine Abfrage unter bestimmten Filterbedingungen erfolgt, können mit diesen Bedingungen spaltenübergreifende Indizes gebildet werden. Durch das Erzeugen und Speichern eines vollständigen B+-Baum-Index neben der in Spalten organisierten Datendatei kann das OAP Ziel-Zeilen durch schnelles Durchsuchen des B+-Baum-Index identifizieren und unnötige Datenscans im Backend-Datenspeicher wie dem HDFS überspringen. Außerdem ist die Indexdatei von der ursprünglichen Datendatei getrennt, weshalb es möglich ist, Indizes ohne erneutes Schreiben der originalen Datendateien zu erstellen oder zu löschen.

Abbildung 2: OAP – Cache- und Index-Konzept.

Um die Antwortzeiten bei Abfragen von Sekunden auf unter eine Sekunde weiter zu reduzieren, optimiert das OAP den Index- und Datenzugriff mit Caching. Das Cachen von Index und Daten im Hauptspeicher beschleunigt das Laden des Index und das Scannen von Daten um Größenordnungen, und Datenträger- und Netzwerk-I/O-Overhead beim Lesen von verteilten Dateisystemen wird vermieden. Darüber hinaus können Index und Daten mit getrennten Caches konfiguriert werden, was eine voneinander unabhängige Löschung und Speicherplatzverwaltung ermöglicht.

Weiterhin ist es wegen des Cache-Verfahrens auf Spaltenebene möglich, ausschließlich die für die Abfrage benötigten Spalten zu cachen. Und basierend auf der Least-Recently-Used-Regel (LRU) werden die am längsten nicht verwendeten Datenelemente aus dem Cache verdrängt, wenn die maximale Kapazität erreicht wurde, damit neuere Datenelemente zwischengespeichert werden können. In Anlehnung an diese Regel wurde in Baidu BigSQL ein hochentwickelter Cache-Manager implementiert, um proaktiv Spalten mit „heißen“ Daten aufzunehmen und Spalten, die nicht mehr im Cache benötigt werden, zu entfernen.

Baidu-BigSQL-Optimierung mit persistentem Intel Optane Speicher

Bei kleinem Datenbestand kann Baidu BigSQL durch das Cachen des Index und der Daten im DRAM optimale Leistung bieten. Angesichts des stetigen Geschäftswachstums von Baidu werden auch die Datenbestände rasch größer. Wenn die Cache-Kapazität nicht mehr ausreicht, um große Mengen „heißer“ Daten zu bewältigen, leidet die Leistung darunter.

Die einfache Lösung wäre, die DRAM-Kapazität zu erhöhen, was jedoch verschiedene Nachteile hätte. Zuerst einmal ist der Preis pro GB recht hoch, was die Gesamtbetriebskosten in die Höhe treibt. Als Zweites ist der Arbeitsspeicher eine wertvolle Ressource für Berechnungen und Datenverarbeitungsprozesse, besonders in einer Spark-Umgebung, in der die gesamte DRAM-Kapazität, die für jeden Knoten konfiguriert werden kann, begrenzt ist. Und drittens werden die DRAM-Vorteile einer höheren Random-Access-Bandbreite und der geringeren Latenz verschwendet, wenn dieser Speicher für das Caching großer Datenblöcke und sequentiellen Zugriff verwendet wird. Um eine kosteneffektivere Alternative zu finden, hat Baidu mit Intel zusammengearbeitet und Intel Optane PMem integriert.

Intel Optane PMem ist eine innovative Speichertechnik, die auf einzigartige Weise und kostengünstig hohe Speicherkapazität und nichtflüchtigen Speicher mit Direktzugriff kombiniert. Sie steht für eine neue Klasse von Arbeits- und Datenspeichertechnik, die explizit für Rechenzentren konzipiert wurde. Sie bietet verschiedene entscheidende Vorteile, die den spezifischen Anforderungen von Baidu BigSQL entsprechen:

  • Hohe Bandbreite für sequenzielles Lesen
  • Hohe Kapazität und günstige Kosten

Intel Optane PMem kann in zwei Betriebsmodi genutzt werden. Im Arbeitsspeichermodus konfiguriert, sieht die Anwendungssoftware einen Pool mit flüchtigem Speicher wie bei Systemen, die nur mit DRAM bestückt sind. Bei der Konfiguration im App-Direct-Modus kann die Anwendung selbst bestimmen, wie der verfügbare Speicher genutzt werden soll. Da der OAP-Cache die spezifische Aufgabe hat, Daten zu indizieren und einzulesen, wird der App-Direct-Modus verwendet, damit die Anwendung die volle Kontrolle über die Verwendung des Speichers hat. Dazu kommt, dass der Cache vom Backend-Datenspeicher immer neu gefüllt werden kann und nicht persistent sein muss. Das OAP verwendet für den PMem-Zugriff die memkind-Bibliothek ohne Persistenz und damit verbundene Leistungsnachteile.

Damit PMem anstelle von DRAM genutzt werden kann, hat Intel das OAP um die Möglichkeit von Plug-ins für die Speicherverwaltung erweitert und einen Manager für PMem-basierten Arbeitsspeicher implementiert, um die Zuweisung von Cache-Speicher im PMem zu ermöglichen. Benutzer können zwischen DRAM und PMem wechseln oder sogar beide mischen und z. B. DRAM für Index-Caching und PMem für den Daten-Cache einsetzen.

Baidu und Intel kooperierten darüber hinaus noch weiter in Bereichen wie Hardware, Betriebssystem und Bibliotheken, um PMem vollständig in die spezifische Betriebssystemumgebung von Baidu zu integrieren.

Zur Validierung der Leistungseigenschaften und Vorteile von Intel Optane PMem im OAP führte Baidu verschiedene Bewertungen und interne Tests durch, zuerst mit Benchmark-Abfragen im Bereich Entscheidungsunterstützung und dann mit Abfragen aus der Praxis von Baidu. Das Hauptziel bestand darin, die Kosteneffizienz von PMem zu testen und zu verstehen.

Bei den Tests mit Entscheidungsunterstützungs-Benchmark-Abfragen wird zuerst der Umfang des Datenbestands auf 1 TB begrenzt, und DRAM und PMem werden mit derselben Kapazität konfiguriert. Die Testergebnisse zeigen, dass beide alle Daten cachen können und dass PMem dem DRAM in puncto Leistung nur geringfügig (11,7 %) nachsteht, während die PMem-Kosten viel geringer sind. Wenn der Datenbestand 3 TB erreicht und DRAM und PMem auf denselben Kostenbetrag begrenzt werden, kann DRAM aufgrund der dann niedrigeren Kapazität nicht mehr alle Daten zwischenspeichern. Im Vergleich bietet PMem nicht nur die größere Kapazität, um alle Daten zu cachen, sondern dann auch wesentlich bessere (die 6-fache) Leistung. DRAM zeigt im zweiten Szenario schlechte Leistungseigenschaften, denn wenn der Datenumfang die Cache-Größe bei Weitem übersteigt, müssen Daten häufig aus dem Backend-Speicher in das DRAM übertragen werden, was die Antwortzeiten verlängert. Die Tests mit Entscheidungsunterstützungs-Benchmark-Abfragen zeigen eindeutig, dass Intel Optane PMem bei gleichem Kostenniveau größere Kapazität und höhere Leistung als DRAM bieten kann.

Abbildung 3: Vergleich von DRAM und Intel Optane PMem im Test (Entscheidungsunterstützung).

Bei der nächsten Testreihe werden dieselben Szenarien verwendet, jedoch mit dem tatsächlichen Workload von Baidu und einem geringfügig anderen Ansatz. Im ersten Testszenario sollen sowohl DRAM als auch PMem 50 % der häufig angeforderten Spalten cachen. Die Ergebnisse zeigen, dass PMem beim Caching nur ca.1 12 % langsamer als DRAM ist. Und weil die PMem-Kosten ungleich niedriger sind, ist dies die kosteneffizientere Lösung. Im zweiten Szenario (gleicher Kostenaufwand für DRAM und PMem) bietet nur PMem ausreichende Kapazität, um alle Spalten mit „heißen“ Daten zu cachen, und es zeigt eine 22%ige Leistungsverbesserung, wobei 30 % der I/O-Anforderungen an darunterliegende Systeme vermieden werden2.

Aufgrund dieser Testergebnisse kam Baidu zu dem Schluss, dass Intel Optane PMem DRAM im BigSQL-System als kosteneffizientere Cache-Lösung ersetzen kann. Seitdem setzte Baidu PMem in BigSQL ein und nutzte die Technik zur Optimierung seines Ad-hoc-Abfragedienstes Tuling. Unterstützt durch Intel Optane PMem übernahm der Cluster mehr als 30 % der Tuling-Auslastung. Außerdem sank nach der Implementierung von PMem die Durchschnittslatenz bei Abfragen um 20 %. Die Spark/OAP-Leistung je PMem-Serverinstanz verbesserte sich beim Tuling-Spark-SQL-Workload um 50 % – bei zusätzlichen Kosten von nur 20 %.

Ein Blick in die Zukunft

Neue Entwicklungen bewirken, dass sich Big-Data-Techniken verändern und weiterentwickeln. Der Fokus verlagert sich von der Bereitstellung zentraler Funktionalität zu Cloud-basierten Lösungen mit tiefgreifenden Optimierungen, um Leistungsziele zu erreichen und Kosten zu senken. Wenn Baidus BigSQL zukünftig Cloud-basiert wird, kann Intel Optane PMem weitere signifikante Vorteile in puncto Leistung und Gesamtbetriebskosten bieten.

Und über die Cache-Beschleunigung für Spark SQL mit seiner hohen Kapazität und Bandbreite hinaus spielt PMem noch eine größere Rolle in Spark-basierten Machine-Learning- und Deep-Learning-Szenarien, die viele Iterationen erfordern, um sehr große Datenmengen zu verarbeiten. Darüber hinaus können Spark-„Shuffles“ so optimiert werden, dass auf PMem über RDMA zugegriffen und PMem als Shuffle-Datenspeicher genutzt wird, was die Shuffle-Latenz weiter reduziert und die Leistung verbessert.

Baidu und Intel werden auch in Zukunft zusammenarbeiten, um Spark zu optimieren. Mit den Fortschritten von Intel Optane PMem und den skalierbaren Intel® Xeon® Prozessoren der 2. Generation werden Baidu und Intel in der Lage sein, weitere beschleunigende Funktionen für Spark vorzustellen, die zu weiteren Steigerungen der Leistung und Kosteneffizienz führen.

PDF herunterladen ›