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.
Konsistente Ansicht der Metadaten in EMRFS
Die konsistente Ansicht von EMRFS verfolgt die Konsistenz unter Verwendung einer DynamoDB-Tabelle nach, um Objekte in Amazon S3 nachzuverfolgen, die mit EMRFS synchronisiert oder erstellt wurden. Mithilfe dieser Metadaten werden alle Operationen (Lesen, Schreiben, Aktualisieren und Kopieren) verfolgt. Sie enthalten keine tatsächlichen Inhalte. Anhand der Metadaten wird überprüft, ob die Objekte oder Metadaten, die von Amazon S3 eingehen, den erwarteten Werten entsprechen. Diese Bestätigung gibt EMRFS die Möglichkeit, die Listenkonsistenz und read-after-write Konsistenz für neue Objekte, die EMRFS in Amazon S3 schreibt, oder für Objekte, die mit EMRFS synchronisiert wurden, zu überprüfen. Mehrere Cluster können dieselben Metadaten verwenden.
So fügen Sie Einträge zu den Metadaten hinzu
Sie können die Unterbefehle import
oder sync
verwenden, um Metadaten Einträge hinzuzufügen. sync
gibt den Status der Amazon-S3-Objekte in einem Pfad an, während import
ausschließlich zum Hinzufügen neuer Einträge zu den Metadaten verwendet wird. Weitere Informationen finden Sie unter Die EMRFS-CLI-Befehlsreferenz.
So überprüfen Sie Unterschiede zwischen Metadaten und Objekten in Amazon S3
Um eine Prüfung auf Abweichungen zwischen den Metadaten und Amazon S3 auszuführen, verwenden Sie den Unterbefehl diff
der EMRFS-CLI. Weitere Informationen finden Sie unter Die EMRFS-CLI-Befehlsreferenz.
So erkennen Sie, ob Metadatenoperationen gedrosselt werden
EMRFS definiert die maximale Standarddurchsatzkapazität für die Metadaten für Lese- und Schreiboperationen mit jeweils 500 und 100 Einheiten. Eine große Anzahl von Objekten oder Buckets kann dazu führen, dass Vorgänge dieses Limit überschreiten. Sie werden dann von DynamoDB gedrosselt. Zum Beispiel kann es bei einer Anwendung dazu kommen, dass EMRFS eine ProvisionedThroughputExceededException
auslöst, wenn Sie eine Operation durchführen, die diese Kapazitätsgrenzen überschreitet. Bei der Drosselung versucht das EMRFS-CLI-Tool, mit exponentiellem Backoff erneut in die DynamoDB-Tabelle zu schreiben, bis die Operation abgeschlossen ist oder wenn der Höchstwert für die Wiederholversuche für das Schreiben von Objekten von Amazon EMR nach Amazon S3 erreicht ist.
Sie können Ihre eigene Durchsatzkapazitätsgrenzen konfigurieren. DynamoDB hat jedoch strenge Partitionsgrenzen von 3000 Lesekapazitätseinheiten (RCUs) und 1000 Schreibkapazitätseinheiten (WCUs) pro Sekunde für Lese- und Schreiboperationen. Um durch Drosselung verursachte sync
Ausfälle zu vermeiden, empfehlen wir, den Durchsatz für Lesevorgänge auf weniger als 3000 RCUs und für Schreibvorgänge auf weniger als 1000 zu begrenzen. WCUs Anweisungen zur Festlegung benutzerdefinierter Durchsatzkapazitätsgrenzen finden Sie unter Konfigurieren der konsistenten Ansicht.
Sie können auch CloudWatch Amazon-Metriken für Ihre EMRFS-Metadaten in der DynamoDB-Konsole anzeigen, wo Sie die Anzahl der gedrosselten Lese- und Schreibanforderungen sehen können. Wenn für gedrosselte Anforderungen ein Wert ungleich null vorliegt, profitiert Ihre Anwendung möglicherweise von einer Erhöhung der zugewiesenen Durchsatzkapazität für Lese- oder Schreiboperationen. Sie realisieren ggf. auch dann eine höhere Performance, wenn Sie sehen, dass sich Ihre Operationen dem zugewiesenen Höchstwert für die Durchsatzkapazität für Lese- und Schreibvorgänge für einen längeren Zeitraum nähern.
Durchsatzmerkmale für bedeutende EMRFS-Operationen
Die Standardeinstellung für Lese- und Schreibvorgänge beträgt 400 bzw. 100 Durchsatzkapazitätseinheiten. Die folgenden Leistungsmerkmale geben Ihnen eine Vorstellung davon, welcher Durchsatz für bestimmte Operationen erforderlich ist. Diese Tests wurden unter Verwendung eines m3.large
-Clusters mit einem einzigen Knoten durchgeführt. Bei allen Operationen handelte es sich um Single-Thread-Vorgänge. Die Performance kann je nach Charakteristika der jeweiligen Anwendung sehr unterschiedlich ausfallen und etwas Experimentieren erfordern, um die Dateisystemoperationen zu optimieren.
Operation | Durchschnittlich read-per-second | Durchschnittlich write-per-second |
---|---|---|
create (Objekt) | 26.79 | 6.70 |
delete (Objekt) | 10.79 | 10.79 |
delete (Verzeichnis mit 1000 Objekten) | 21.79 | 338.40 |
getFileStatus(Objekt) | 34.70 | 0 |
getFileStatus(Verzeichnis) | 19.96 | 0 |
listStatus (Verzeichnis mit 1 Objekt) | 43.31 | 0 |
listStatus (Verzeichnis mit 10 Objekten) | 44.34 | 0 |
listStatus (Verzeichnis mit 100 Objekten) | 84.44 | 0 |
listStatus (Verzeichnis mit 1.000 Objekten) | 308.81 | 0 |
listStatus (Verzeichnis mit 10.000 Objekten) | 416.05 | 0 |
listStatus (Verzeichnis mit 100.000 Objekten) | 823.56 | 0 |
listStatus (Verzeichnis mit 1 Million Objekten) | 882.36 | 0 |
mkdir (durchgehend für 120 Sekunden) | 24.18 | 4.03 |
mkdir | 12.59 | 0 |
rename (Objekt) | 19.53 | 4.88 |
rename (Verzeichnis mit 1000 Objekten) | 23.22 | 339.34 |
So übermitteln Sie einen Schritt, der alle alten Daten aus Ihren Metadaten entfernt
Unter Umständen möchten Benutzer bestimmte Einträge in den DynamoDB-basierten Metadaten entfernen. So können Sie die Speicherkosten im Zusammenhang mit der Tabelle reduzieren. Die Benutzer haben die Möglichkeit, mit dem Unterbefehl delete
der EMRFS-Befehlszeilenschnittstelle bestimmte Einträge manuell oder programmgesteuert zu bereinigen. Wenn Sie jedoch Einträge aus den Metadaten löschen, führt EMRFS keine Konsistenzprüfungen mehr durch.
Die programmgesteuerte Bereinigung nach Abschluss eines Auftrags kann durch Übermittlung eines letzten Schritts zu Ihrem Cluster erfolgen, wodurch ein Befehl in der EMRFS-Befehlszeilenschnittstelle ausgeführt wird. Geben Sie z. B. den folgenden Befehl ein, um einen Schritt zum Löschen aller Einträge an Ihren Cluster zu übermitteln, die älter als zwei Tage sind.
aws emr add-steps --cluster-id
j-2AL4XXXXXX5T9
--steps Name="emrfsCLI",Jar="command-runner.jar",Args=["emrfs","delete","--time","2","--time-unit","days"] { "StepIds": [ "s-B12345678902
" ] }
Verwenden Sie den zurückgegebenen StepId Wert, um in den Protokollen nach dem Ergebnis des Vorgangs zu suchen.