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.
DynamoDB – Bereitgestellter Durchsatz
Wenn Sie HiveQL-Anweisungen für die externe DynamoDB-Tabelle erstellen, nimmt die Klasse DynamoDBStorageHandler
die entsprechenden DynamoDB-Low-Level-API-Anforderungen vor, die den bereitgestellten Durchsatz verbrauchen. Wenn nicht genügend Lese- und Schreibkapazität für die DynamoDB-Tabelle zur Verfügung steht, wird die Anforderung gedrosselt und die HiveQL-Leistung so beeinträchtigt. Aus diesem Grund sollten Sie sicherstellen, dass die Tabelle über ausreichende Durchsatzkapazität verfügt.
Nehmen Sie zum Beispiel an, dass Sie 100 Lesekapazitätseinheiten für Ihre DynamoDB-Tabelle bereitgestellt haben. Mit dieser Kapazität können Sie 409 600 Byte pro Sekunde (100×4KB Lesekapazitätseinheitsgröße) lesen. Angenommen, die Tabelle enthält 20 GB Daten (21 474 836 480 Byte) und Sie möchten mit der SELECT
-Anweisung alle Daten unter Verwendung von HiveQL auswählen. Sie können wie folgt schätzen, wie lange die Abfrage dauert:
21 474 836 480/409 600 = 52 429 Sekunden = 14,56 Stunden
In diesem Szenario stellt die DynamoDB-Tabelle einen Engpass dar. Das Hinzufügen weiterer Amazon-EMR-Knoten würde keine Abhilfe schaffen, da der Hive-Durchsatz auf nur 409,600 Byte pro Sekunde beschränkt ist. Die einzige Möglichkeit, um die Bearbeitungsdauer der SELECT
-Anweisung zu verkürzen, besteht darin, die bereitgestellte Lesekapazität der DynamoDB-Tabelle zu erhöhen.
Sie können eine ähnliche Berechnung anstellen, um zu schätzen, wie lange es dauert, um Daten in eine externe Hive-Tabelle, die einer DynamoDB-Tabelle zugeordnet ist, massenzuladen. Ermitteln Sie die Gesamtzahl der pro Element benötigten Schreibkapazitätseinheiten (weniger als 1 KB = 1, 1 bis 2 KB = 2 usw.) und multiplizieren Sie diese mit der Anzahl der zu ladenden Elemente. Dadurch erhalten Sie die Anzahl der erforderlichen Schreibkapazitätseinheiten. Teilen Sie diese Anzahl von Schreibkapazitätseinheiten, die pro Sekunde zugewiesen werden. Daraus ergibt sich die Anzahl von Sekunden, die für das Laden der Tabelle benötigt wird.
Sie sollten die CloudWatch Metriken für Ihre Tabelle regelmäßig überwachen. Um einen kurzen Übersicht in der DynamoDB-Konsole zu erhalten, wählen Sie Ihre Tabelle und dann die Registerkarte Metrics aus. Hier können Sie verbrauchte Lese- und Schreibkapazitätseinheiten sowie gedrosselte Lese- und Schreibanforderungen einsehen.
Lesekapazität
Amazon EMR verwaltet die Anforderungslast für Ihre DynamoDB-Tabelle entsprechend der bereitgestellten Durchsatzeinstellungen der Tabelle. Wenn in der Auftragsausgabe eine große Zahl von ProvisionedThroughputExceeded
-Nachrichten enthalten ist, können Sie die Standardleserate anpassen. Ändern Sie dazu die Konfigurationsvariable dynamodb.throughput.read.percent
. Mit dem Befehl SET
können Sie diese Variable an der Hive-Eingabeaufforderung festlegen:
SET dynamodb.throughput.read.percent=1.0;
Diese Variable gilt nur für die aktuelle Hive-Sitzung. Wenn Sie Hive beenden und später erneut aufrufen, erscheint für dynamodb.throughput.read.percent
wieder der Standardwert.
Der Wert von dynamodb.throughput.read.percent
kann einschließlich zwischen 0.1
und 1.5
sein. 0.5
stellt die Standardleserate dar. Dies bedeutet, dass Hive versucht, die Hälfte der Lesekapazität der Tabelle zu verbrauchen. Wenn Sie den Wert über 0.5
anheben, erhöht Hive die Anforderungsrate. Durch Senken des Werts unter 0.5
wird die Leseanforderungsrate verringert. (Die tatsächliche Leserate variiert abhängig von Faktoren wie der Tatsache, ob eine einheitliche Verteilung des Schlüssels in der DynamoDB-Tabelle vorliegt.)
Wenn Sie feststellen, dass Hive die bereitgestellte Lesekapazität der Tabelle häufig aufbraucht oder Ihre Leseanforderungen zu stark gedrosselt werden, versuchen Sie dynamodb.throughput.read.percent
unter 0.5
zu reduzieren. Wenn die Lesekapazität der Tabelle ausreicht und Sie reaktionsfähigere HiveQL-Operationen wünschen, können Sie den Wert über 0.5
festlegen.
Schreibkapazität
Amazon EMR verwaltet die Anforderungslast für Ihre DynamoDB-Tabelle entsprechend der bereitgestellten Durchsatzeinstellungen der Tabelle. Wenn in der Auftragsausgabe eine große Zahl von ProvisionedThroughputExceeded
-Nachrichten enthalten ist, können Sie die Standardschreibrate anpassen. Ändern Sie dazu die Konfigurationsvariable dynamodb.throughput.write.percent
. Mit dem Befehl SET
können Sie diese Variable an der Hive-Eingabeaufforderung festlegen:
SET dynamodb.throughput.write.percent=1.0;
Diese Variable gilt nur für die aktuelle Hive-Sitzung. Wenn Sie Hive beenden und später erneut aufrufen, erscheint für dynamodb.throughput.write.percent
wieder der Standardwert.
Der Wert von dynamodb.throughput.write.percent
kann einschließlich zwischen 0.1
und 1.5
sein. 0.5
stellt die Standardschreibrate dar. Dies bedeutet, dass Hive versucht, die Hälfte der Schreibkapazität der Tabelle zu verbrauchen. Wenn Sie den Wert über 0.5
anheben, erhöht Hive die Anforderungsrate. Durch Senken des Werts unter 0.5
wird die Schreibanforderungsrate verringert. (Die tatsächliche Schreibrate variiert abhängig von Faktoren wie der Tatsache, ob eine einheitliche Verteilung des Schlüssels in der DynamoDB-Tabelle vorliegt.)
Wenn Sie feststellen, dass Hive die bereitgestellte Schreibkapazität der Tabelle häufig aufbraucht oder Ihre Schreibanforderungen zu stark gedrosselt werden, versuchen Sie dynamodb.throughput.write.percent
unter 0.5
zu reduzieren. Wenn die Kapazität der Tabelle ausreicht und Sie reaktionsfähigere HiveQL-Operationen wünschen, können Sie den Wert über 0.5
festlegen.
Wenn Sie mit Hive Daten in DynamoDB schreiben möchten, stellen Sie sicher, dass die Anzahl der Schreibkapazitätseinheiten größer als die Anzahl der Mapper im Cluster ist. Betrachten Sie z. B. einen Amazon-EMR-Cluster mit 10m1.xlarge-Knoten. Der Knotentyp m1.xlarge stellt 8 Mapper-Aufgaben bereit, sodass der Cluster insgesamt 80 Mapper (10 × 8) enthält. Wenn Ihre DynamoDB-Tabelle weniger als 80 Schreibkapazitätseinheiten umfasst, kann ein Hive-Schreibvorgang möglicherweise den gesamten Schreibdurchsatz für diese Tabelle aufbrauchen.
Um die Anzahl der Mapper für Amazon-EMR-Knotentypen zu ermitteln, lesen Sie den Abschnitt Aufgabenkonfiguration im Amazon-EMR-Entwicklerhandbuch.
Weitere Informationen zu Mappern finden Sie unter Anpassen der Mapper.