Einblicke

Tipps zur Fehlerbehebung für Actian Vector in Hadoop

Actian Germany GmbH

Juni 20, 2016

Actian Vector und Hadoop Image

Actian Vector und Vector in Hadoop sind leistungsstarke Tools für die effiziente Ausführung von Abfragen. Die meisten Nutzer von Data Analytics suchen jedoch nach Möglichkeiten, die Leistung zu optimieren, um schrittweise Verbesserungen bei Anfrage zu erzielen.

Das Actian Service- und Support-Team arbeitet mit unseren Kunden zusammen, um gemeinsame Bereiche zu identifizieren, die untersucht werden sollten, wenn man versucht, die Anfrage zu verbessern. Die meisten unserer Empfehlungen gelten sowohl für Actian Vector (Single Node) als auch für Actian Vector in Hadoop (VectorH, ein Multi-Node Cluster auf Hadoop).

Actian hat kürzlich einen ausführlichen Überblick über technische Erkenntnisse und Best Practices veröffentlicht, die allen Vector- und VectorH-Anwendern helfen sollen, ihre Leistung zu optimieren, wobei der Schwerpunkt auf VectorH liegt.

Im Gegensatz zu Anfrage auf Hadoop (Hive, Impala, Spark SQL, etc.) ist VectorH ein echtes spaltenförmiges, MPP, RDBMS mit vollen Funktionen von SQL, ACID-Transaktionen (d.h. Unterstützung für Updates und Löschungen an Ort und Stelle), eingebauten robusten Sicherheitsoptionen, etc. Diese Flexibilität erlaubt es VectorH, für komplexe Arbeitslasten und Umgebungen optimiert zu werden.

Beachten Sie, dass Vector und VectorH sehr gut in der Lage sind, Abfragen effizient auszuführen, ohne eine der untersuchten Techniken zu verwenden. Diese Techniken sind jedoch für anspruchsvolle Arbeitslasten und stark ausgelastete Hadoop-Umgebungen sehr nützlich und ermöglichen es Ihnen, die besten Ergebnisse aus Ihrer Plattform zu erzielen.

Bei unserer Arbeit mit Kunden haben wir festgestellt, dass die folgenden Bereiche untersucht werden sollten, um eine maximale Leistung zu erzielen.

Lesen Sie den vollständigen Bericht

Partitionieren Sie Ihre Tabellen

Eine sehr wichtige Überlegung beim Schemadesign für ein Massively Parallel Processing (MPP)-System wie VectorH ist die Frage, wie die Daten in einem Cluster verteilt werden können, um die Ausführung der Anfrage gleichmäßig auf alle verfügbaren Ressourcen zu verteilen. Wenn Sie Ihre Tabellen bei der Erstellung nicht explizit partitionieren, erstellt VectorH standardmäßig nicht partitionierte Tabellen - für eine optimale Leistung sollten Sie jedoch immer die größten Tabellen in Ihrer Datenbank partitionieren.

Vermeiden Sie Datenverzerrungen

Unausgewogene Daten, bei denen eine kleine Anzahl von Rechnern viel mehr Daten hat als die meisten anderen, werden als Datenschieflage bezeichnet. Datenschieflage kann zu schwerwiegenden Leistungsproblemen bei Abfragen führen, da der Rechner mit der überproportionalen Datenmenge die Gesamtgeschwindigkeit der Anfrage bestimmt und zu einem Engpass werden kann.

Fehlende Statistiken

Datendistribution sind für die korrekte Erstellung eines guten Anfrage unerlässlich. In Ermangelung von Statistiken trifft der VectorH Anfrage bestimmte Standardannahmen, z. B. darüber, wie viele Zeilen übereinstimmen werden, wenn zwei Tabellen miteinander verbunden werden. Beim Umgang mit größeren Datensätzen ist es viel besser, echte Daten über die tatsächliche Verteilung der Daten zu haben, als sich auf diese Schätzungen zu verlassen.

Daten sortieren

Das relationale Verarbeitungsmodell erfordert nicht, dass die Daten auf der Festplatte sortiert werden - stattdessen wird eine ORDER BY-Klausel für eine Anfrage verwendet, die die Daten in einer bestimmten Reihenfolge zurückfordert.

Durch die Verwendung so genannter MinMax-Indizes (die automatisch in der Struktur einer Tabelle gepflegt werden, ohne dass Nutzer eingreifen muss) ist VectorH jedoch in der Lage, geordnete Daten zu verwenden, um unnötige Datenblöcke effizienter von der Verarbeitung auszuschließen und somit die Ausführung von Anfrage zu beschleunigen, wenn diese eine WHERE-Klausel oder eine Join-Beschränkung für eine Spalte haben, nach der die Tabelle sortiert ist.

Verwendung der am besten geeigneten Datentypen

Wie bei jeder Datenbank kann die Wahl des richtigen Datentyps für Ihr Schema und Ihre Abfragen einen großen Einfluss auf die Leistung von VectorH haben, daher sollten Sie nicht aus Bequemlichkeit die maximale Spaltengröße verwenden. Berücksichtigen Sie stattdessen die größten Werte, die Sie wahrscheinlich in einer VARCHAR-Spalte speichern werden, und dimensionieren Sie Ihre Spalten entsprechend.

Da VectorH Spaltendaten sehr effektiv komprimiert, hat die Erstellung von Spalten, die viel größer als nötig sind, nur minimale Auswirkungen auf die Größe der Datentabellen. Da VARCHAR-Spalten intern als null-terminierte Strings gespeichert werden, hat die Größe des VARCHAR keinen Einfluss auf die Verarbeitungszeiten der Anfrage . Sie beeinflusst jedoch die Kommunikationszeiten des Frontends, da die Daten nach dem Verlassen der Engine in der maximal definierten Länge gespeichert werden. Beachten Sie jedoch, dass die Speicherung von Daten, die von Natur aus numerisch sind (IDs, Zeitstempel usw.), als VARCHAR-Daten sehr nachteilig für das System ist, da VectorH numerische Daten viel effizienter verarbeiten kann als Zeichendaten.

Speicherverwaltung für kleine Änderungen

VectorH verfügt über einen zum Patent angemeldeten Mechanismus für den effizienten Umgang mit vielen kleinen Datenänderungen, den sogenannten Positional Delta Trees (PDTs). Diese ermöglichen auch die Verwendung von Aktualisierungs- und Löschanweisungen für Daten, die in einem reinen Anhängedateisystem wie HDFS gespeichert sind.

Wenn jedoch viele Aktualisierungs-, Einfüge- oder Löschanweisungen ausgeführt werden, kann der Speicherverbrauch für die PDT-Strukturen schnell ansteigen. Wenn große Mengen an Speicher verwendet werden, kann das System langsamer werden, um zukünftige Änderungen zu verarbeiten, und schließlich wird der Speicher erschöpft sein. Die Verwaltung dieses Speichers erfolgt automatisch, der Nutzer kann jedoch auch direkt eine "combine"-Anweisung ausgeben, die die Änderungen aus der PDT wieder in die Haupttabelle einfügt, was als "update propagation" bezeichnet wird. Es gibt eine Reihe von Triggern, die das System veranlassen, diese Wartung automatisch im Hintergrund durchzuführen (z. B. Schwellenwerte für den Gesamtspeicher, der für PDTs verwendet wird, oder der Prozentsatz der aktualisierten Zeilen), so dass dies für den Nutzer normalerweise transparent ist.

Optimieren für Zustimmung

VectorH ist so konzipiert, dass eine einzelne Anfrage mit so vielen parallelen Ausführungsthreads wie möglich ausgeführt werden kann, um eine maximale Leistung zu erzielen. Aber, vielleicht untypisch für ein MPP-System, ist es auch so konzipiert, dass es eine hohe Zustimmung mit demokratischer Ressourcenzuteilung ermöglicht, wenn eine große Anzahl von Anfragen im System vorhanden ist. VectorH bewältigt beide Situationen mit den "Out-of-the-Box"-Einstellungen, kann aber an die Bedürfnisse der Anwendung angepasst werden (z. B. wenn ein höherer Durchsatz von Hochleistungsanfragen durch Begrenzung der maximalen Ressourcen, die eine Anfrage erhalten kann, erreicht werden soll).

Die Anzahl der gleichzeitigen Verbindungen (standardmäßig 64), die eine bestimmte VectorH-Instanz zulässt, wird durch den Parameter connect_limit bestimmt, der in config.dat gespeichert ist und über das CBF-Dienstprogramm verwaltet wird. In der Regel gibt es jedoch mehr Verbindungen als Abfragen, wie werden also die Ressourcen auf die gleichzeitigen Abfragen verteilt?

Standardmäßig versucht VectorH, Anfrage und Anfrage auszugleichen. Die wichtigsten Parameter für diesen Ausgleich sind:

  • Die Anzahl der CPU im Cluster.
  • Die Anzahl der Threads, die eine Anfrage verwenden kann.
  • Die Anzahl der Threads, die einer Anfrage vom System zugewiesen werden.
  • Die Anzahl der Abfragen, die derzeit im System ausgeführt werden.

Zusammenfassung

Vector und VectorH sind sehr gut in der Lage, Abfragen effizient auszuführen, ohne eine der hier beschriebenen Techniken und Tipps anzuwenden. Aber je anspruchsvoller Ihre Workload ist, entweder in Bezug auf die Datenmenge, die Komplexität der Anfrage oder dieZustimmung Nutzer , desto mehr wird die Anwendung einiger der im vollständigen Bericht beschriebenen Tipps es Ihnen ermöglichen, die besten Ergebnisse aus Ihrer Plattform zu erzielen.

Lesen Sie den vollständigen Bericht

actian avatar logo

Über Actian Corporation

Actian macht Daten einfach. Unsere Datenplattform vereinfacht die Verbindung, Verwaltung und Analyse von Daten in Cloud-, Hybrid- und lokalen Umgebungen. Mit jahrzehntelanger Erfahrung in den Bereichen Datenmanagement und -analyse liefert Actian leistungsstarke Lösungen, die es Unternehmen ermöglichen, datengesteuerte Entscheidungen zu treffen. Actian wird von führenden Analysten anerkannt und wurde für seine Leistung und Innovation mit Branchenpreisen ausgezeichnet. Unsere Teams präsentieren bewährte Anwendungsfälle auf Konferenzen (z. B. Strata Data) und tragen zu Open-Source-Projekten bei. Im ActianBlog behandeln wir Themen wie Echtzeit-Dateneingabe, Datenanalyse, Data Governance, Datenmanagement, Datenqualität, Datenintelligenz und KI-gesteuerte Analysen.