Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Optimierung der Leistung für EMR Amazon-Operationen in DynamoDB
EMRAmazon-Operationen an einer DynamoDB-Tabelle zählen als Lesevorgänge und unterliegen den bereitgestellten Durchsatzeinstellungen der Tabelle. Amazon EMR implementiert seine eigene Logik, um zu versuchen, die Last auf Ihrer DynamoDB-Tabelle auszugleichen, um die Möglichkeit zu minimieren, dass Ihr bereitgestellter Durchsatz überschritten wird. Am Ende jeder Hive-Abfrage EMR gibt Amazon Informationen über den Cluster zurück, der zur Verarbeitung der Abfrage verwendet wurde, einschließlich der Häufigkeit, mit der Ihr bereitgestellter Durchsatz überschritten wurde. Sie können diese Informationen sowie CloudWatch Metriken zu Ihrem DynamoDB-Durchsatz verwenden, um die Belastung Ihrer DynamoDB-Tabelle bei nachfolgenden Anfragen besser zu verwalten.
Die folgenden Faktoren beeinflussen die Hive-Abfrageleistung bei der Arbeit mit DynamoDB-Tabellen.
Bereitgestellte Lesekapazitätseinheiten
Wenn Sie Hive-Abfragen über eine DynamoDB-Tabelle ausführen, müssen Sie sicherstellen, dass ausreichend Lesekapazitätseinheiten vorhanden sind.
Nehmen Sie zum Beispiel an, dass Sie 100 Lesekapazitätseinheiten für Ihre DynamoDB-Tabelle bereitgestellt haben. Dadurch können Sie 100 Lesevorgänge oder 409.600 Byte pro Sekunde ausführen. Wenn diese Tabelle 20 GB an Daten enthält (21.474.836.480 Bytes) und Ihre Hive-Abfrage einen vollständigen Tabellen-Scan durchführt, können Sie ermitteln, wie lange die Ausführung der Abfrage dauern wird:
21 474 836 480/409 600 = 52 429 Sekunden = 14,56 Stunden
Die einzige Möglichkeit, um die erforderliche Zeit zu verkürzen, würde eine Änderung der Lesekapazitätseinheiten in der DynamoDB-Quelltabelle notwendig machen. Das Hinzufügen weiterer Knoten zum EMR Amazon-Cluster hilft nicht.
Der Fertigstellungsgrad in der Hive-Ausgabe wird dann aktualisiert, wenn ein oder mehrere Mapper-Prozesse abgeschlossen wurden. Für eine große DynamoDB-Tabelle mit wenig bereitgestellter Lesekapazität wird die fertiggestellte Ausgabe in Prozent ggf. für längere Zeit nicht aktualisiert; im oben genannten Fall würde der Auftrag mehrere Stunden lang zu 0 % abgeschlossen angezeigt. Genauere Informationen zum Status Ihres Jobs finden Sie in der EMR Amazon-Konsole. Dort können Sie den Status der einzelnen Mapper-Aufgaben sowie Statistiken zu den gelesenen Daten einsehen.
Sie können sich auch bei der Hadoop-Schnittstelle auf dem Master-Knoten anmelden und die Hadoop-Statistiken anzeigen. Hier werden Ihnen der Status einzelner Map-Aufgaben sowie Statistiken für Lesevorgänge angezeigt. Weitere Informationen finden Sie im Amazon EMR Management Guide unter Webschnittstellen, die auf dem Master-Knoten gehostet werden.
Einstellung der Leserate in Prozent
Standardmäßig EMR verwaltet Amazon die Anforderungslast für Ihre DynamoDB-Tabelle entsprechend Ihrem aktuell bereitgestellten Durchsatz. Wenn Amazon jedoch Informationen über Ihren Job EMR zurückgibt, die eine große Anzahl von Antworten mit bereitgestelltem Durchsatz und Überschreitung enthalten, können Sie die Standardleserate mithilfe des dynamodb.throughput.read.percent
Parameters anpassen, wenn Sie die Hive-Tabelle einrichten. Weitere Informationen zum Festlegen des Parameters zur Leserate in Prozent finden Sie unter Hive-Optionen.
Einstellung der Schreibrate in Prozent
Standardmäßig EMR verwaltet Amazon die Anforderungslast für Ihre DynamoDB-Tabelle entsprechend Ihrem aktuell bereitgestellten Durchsatz. Wenn Amazon jedoch Informationen über Ihren Job EMR zurückgibt, die eine große Anzahl von Antworten mit bereitgestelltem Durchsatz und Überschreitung enthalten, können Sie die Standard-Schreibrate mithilfe des dynamodb.throughput.write.percent
Parameters anpassen, wenn Sie die Hive-Tabelle einrichten. Weitere Informationen zum Festlegen des Parameters zur Schreibrate in Prozent finden Sie unter Hive-Optionen.
Einstellung für das Wiederholungsintervall
Standardmäßig EMR führt Amazon eine Hive-Abfrage erneut aus, wenn innerhalb von zwei Minuten kein Ergebnis zurückgegeben wurde. Dies ist das standardmäßige Wiederholungsintervall. Sie können dieses Intervall anpassen, indem Sie bei der Ausführung einer Hive-Abfrage den Parameter dynamodb.retry.duration
einstellen. Weitere Informationen zum Festlegen des Parameters zur Schreibrate in Prozent finden Sie unter Hive-Optionen.
Anzahl der Zuordnungs-Tasks
Die Zuordnungs-Daemons, die Hadoop startet, um Ihre Anforderungen zum Exportieren und Abfragen von in DynamoDB gespeicherten Daten zu verarbeiten, sind auf eine maximale Leserate von 1 MiB pro Sekunde begrenzt, um die verbrauchte Lesekapazität einzuschränken. Wenn zusätzlich bereitgestellter Durchsatz auf DynamoDB vorhanden ist, verbessern Sie die Performance von Hive-Export- und Abfrageoperationen, indem Sie die Anzahl der Zuordnungs-Daemons erhöhen. Zu diesem Zweck können Sie entweder die Anzahl der EC2 Instances in Ihrem Cluster oder die Anzahl der Mapper-Daemons erhöhen, die auf jeder Instance ausgeführt werden. EC2
Sie können die Anzahl der EC2 Instanzen in einem Cluster erhöhen, indem Sie den aktuellen Cluster stoppen und ihn mit einer größeren Anzahl von Instanzen neu starten. EC2 Sie geben die Anzahl der EC2 Instances im Dialogfeld Configure EC2 Instances an, wenn Sie den Cluster von der EMR Amazon-Konsole aus starten, oder mit der ‑‑num-instances
Option, wenn Sie den Cluster von der aus startenCLI.
Die Anzahl der Map-Tasks, die auf einer Instance ausgeführt werden, hängt vom EC2 Instance-Typ ab. Weitere Informationen zu den unterstützten EC2 Instance-Typen und der Anzahl der Mapper, die jeder Instance-Typ bereitstellt, finden Sie unterAufgabenkonfiguration. Hier finden Sie einen Abschnitt zur Aufgabenkonfiguration ("Task Configuration") für jede der unterstützten Konfigurationen.
Eine andere Möglichkeit, die Anzahl der Mapper-Daemons zu erhöhen, besteht darin, den Hadoop-Konfigurationsparameter mapreduce.tasktracker.map.tasks.maximum
in einen höheren Wert zu ändern. Dies hat den Vorteil, dass Sie mehr Mapper erhalten, ohne die Anzahl oder Größe der EC2 Instanzen zu erhöhen, wodurch Sie Geld sparen. Ein Nachteil ist, dass ein zu hoher Wert dazu führen kann, dass den EC2 Instanzen in Ihrem Cluster der Arbeitsspeicher ausgeht. Zum Festlegen von mapreduce.tasktracker.map.tasks.maximum
starten Sie den Cluster und geben einen Wert für mapreduce.tasktracker.map.tasks.maximum
als Eigenschaft der Konfigurationsklassifizierung der mapred-site an. Dies wird im folgenden Beispiel veranschaulicht. Weitere Informationen finden Sie unter Anwendungen konfigurieren.
{ "configurations": [ { "classification": "mapred-site", "properties": { "mapred.tasktracker.map.tasks.maximum": "10" } } ] }
Parallele Datenanforderungen
Mehrere Datenanforderungen, entweder von mehr als einem Benutzer oder von mehr als einer Anwendung, für eine einzelne Tabelle kann den bereitgestellten Lesedurchsatz erschöpfen und die Performance beeinträchtigen.
Prozessdauer
Die Datenkonsistenz in DynamoDB hängt von der Reihenfolge der Lese- und Schreibvorgänge auf den einzelnen Knoten ab. Während eine Hive-Abfrage verarbeitet wird, kann eine andere Anwendung neue Daten in die DynamoDB-Tabelle laden oder vorhandene Daten ändern oder löschen. In diesem Fall enthalten die Ergebnisse der Hive-Abfrage möglicherweise nicht die Datenänderungen, die vorgenommen wurden, während die Abfrage ausgeführt wurde.
Durchsatzüberschreitungen vermeiden
Wenn Sie Hive-Abfragen für DynamoDB ausführen, achten Sie darauf, dass Ihr bereitgestellter Durchsatz nicht überschritten wird, da sich dies nachteilig auf die Kapazität auswirkt, die für die DynamoDB::Get
-Aufrufe Ihrer Anwendung benötigt werden. Um sicherzustellen, dass dies nicht der Fall ist, sollten Sie das Lesevolumen und die Drosselung bei Anwendungsaufrufen regelmäßig überwachen, DynamoDB::Get
indem Sie die Protokolle und Messwerte in Amazon überprüfen. CloudWatch
Abfragezeit
Wenn Hive-Abfragen, die auf eine DynamoDB-Tabelle zugreifen, für Zeiten geplant werden, in denen wenig Anforderungen an die DynamoDB-Tabelle gerichtet werden, verbessert das die Leistung. Beispiel: Wenn die Mehrzahl der Anwendungsbenutzer in San Francisco lebt, können Sie die täglichen Daten um 04:00 Uhr PST, wenn die Mehrheit der Benutzer im Ruhezustand ist und keine Datensätze in Ihrer DynamoDB-Datenbank aktualisiert.
Zeitbasierte Tabellen
Wenn die Daten als eine Reihe von zeitbasierten DynamoDB-Tabellen organisiert sind, z. B. eine Tabelle pro Tag, können Sie die Daten exportieren, wenn die Tabelle nicht mehr aktiv ist. Sie können auf diese Weise Daten fortlaufend nach Amazon S3 sichern.
Archivierte Daten
Wenn Sie viele Hive-Abfragen für die in DynamoDB gespeicherten Daten ausführen möchten und Ihre Anwendung archivierte Daten tolerieren kann, sollten Sie die Daten nach Amazon S3 HDFS oder Amazon S3 exportieren und die Hive-Abfragen für eine Kopie der Daten statt für DynamoDB ausführen. Dies spart Lesevorgänge und schont den bereitgestellten Durchsatz.