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.
Cluster-Eingabe- und Ausgabefehler bei Amazon EMR-Vorgängen
Die folgenden Fehler treten in Cluster-Ein- und Ausgabeoperationen häufig auf. Verwenden Sie die Anleitungen in diesem Thema, um Fehler zu beheben und Ihre Konfiguration zu überprüfen.
Themen
Hat Ihr Pfad zu Amazon Simple Storage Service (Amazon S3) mindestens drei Schrägstriche?
Wenn Sie einen Amazon-S3-Bucket angeben, müssen Sie einen Abschlussschrägstrich am Ende der URL anfügen. Anstatt beispielsweise auf einen Bucket als „s3n: //amzn-s3-demo-bucket1" zu verweisen, sollten Sie „s3n: //amzn-s3-demo-bucket1/“ verwenden, da Hadoop Ihren Cluster sonst in den meisten Fällen ausfallen lässt.
Versuchen Sie Eingabeverzeichnisse rekursiv zu durchlaufen?
Hadoop durchsucht Eingabeverzeichnisse nicht rekursiv nach Dateien. Wenn Sie über eine Verzeichnisstruktur wie beispielsweise /corpus/01/01.txt, /corpus/01/02.txt, /corpus/02/01.txt usw. verfügen und /corpus/ als Eingabeparameter für Ihren Cluster angeben, findet Hadoop keine Eingabedateien, da das Verzeichnis /corpus/ leer ist und Hadoop den Inhalt der Unterverzeichnisse nicht überprüft. Entsprechend überprüft Hadoop die Unterverzeichnisse von Amazon-S3-Buckets nicht rekursiv.
Die Eingabedateien müssen sich direkt in dem Eingabeverzeichnis oder dem Amazon-S3-Bucket, das bzw. den Sie angeben, befinden und nicht in Unterverzeichnissen.
Ist Ihr Ausgabeverzeichnis bereits vorhanden?
Wenn Sie einen Ausgabepfad angeben, der bereits vorhanden ist, schlägt der Hadoop-Cluster in den meisten Fällen fehl. Das bedeutet, dass Sie, wenn Sie einen Cluster ausführen und dann diesen Vorgang mit denselben Parametern wiederholen, der erste Lauf und kein weiterer funktioniert. Nach dem ersten Lauf ist der Ausgabepfad vorhanden, was dazu führt, dass alle nachfolgenden Läufe fehlschlagen.
Versuche Sie, eine Ressource mit einer HTTP-URL anzugeben?
Hadoop akzeptiert keine Ressourcenspeicherorte, die mit dem Präfix http:// angegeben werden. Sie können auf eine Ressource nicht mit einer HTTP-URL verweisen. Beispiel: Das Übergeben von http://mysite/myjar.jar als JAR-Parameter bewirkt, dass der Cluster fehlschlägt.
Verweisen Sie mit einem ungültigen Namensformat auf einen Amazon-S3-Bucket?
Wenn Sie versuchen, einen Bucket-Namen wie „amzn-s3-demo-bucket1.1“ mit Amazon EMR zu verwenden, schlägt Ihr Cluster fehl, weil Amazon EMR verlangt, dass Bucket-Namen gültige RFC 2396-Hostnamen sind; der Name darf nicht mit einer Zahl enden. Um die Anforderungen von Hadoop zu erfüllen, dürfen Namen von mit Amazon EMR verwendeten Amazon-S3-Buckets darüber hinaus nur Kleinbuchstaben, Zahlen, Punkte (.) und Bindestriche (-) enthalten. Weitere Informationen zum Formatieren von Amazon-S3-Bucket-Namen finden Sie unter Bucket-Einschränkungen und -Limits im Benutzerhandbuch für Amazon Simple Storage Service.
Haben Sie Probleme beim Laden von Daten in oder aus Amazon S3?
Amazon S3 ist die beliebteste Ein- und Ausgabequelle für Amazon EMR. Ein häufiger Fehler besteht darin, Amazon S3 so zu behandeln wie ein typisches Dateisystem. Es gibt Unterschiede zwischen Amazon S3 und einem Dateisystem, die Sie berücksichtigen müssen, wenn Sie Ihren Cluster ausführen.
-
Wenn ein interner Fehler in Amazon S3 auftritt, muss Ihre Anwendung diesen problemlos behandeln und die Operation wiederholen.
-
Wenn Aufrufe in Amazon S3 zu lange dauern, muss Ihre Anwendung die Häufigkeit der Amazon-S3-Aufrufe ggf. reduzieren.
-
Das Auflisten aller Objekte in einem Amazon-S3-Bucket ist ein teurer Aufruf. Ihre Anwendung sollte die Anzahl solcher Aufrufe minimieren.
Es gibt mehrere Möglichkeiten, wie Sie die Interaktion Ihres Cluster mit Amazon S3 verbessern können.
-
Starten Sie Ihren Cluster mit der neuesten Version von Amazon EMR.
-
Verwenden Sie S3DistCp , um Objekte in und aus Amazon S3 zu verschieben. S3 DistCp implementiert Fehlerbehandlung, Wiederholungsversuche und Back-offs, um die Anforderungen von Amazon S3 zu erfüllen. Weitere Informationen finden Sie unter Verteilte Kopie mit S3. DistCp
-
Entwickeln Sie Ihre Anwendung mit letztendlicher Datenkonsistenz im Blick. Verwenden Sie HDFS für das Zwischenspeichern von Daten, während der Cluster ausgeführt wird, und Amazon S3 nur für die Eingabe der Ausgangsdaten und für die Ausgabe der Endergebnisse.
-
Wenn Ihre Cluster einen Commit für mindestens 200 Transaktionen pro Sekunde in Amazon S3 contact support
durchführen, wenden Sie sich an den Support, um Ihren Bucket auf größere Transaktionen pro Sekunde vorzubereiten. Ziehen Sie dazu die unter Tipps und Tricks zur Leistung von Amazon S3 beschriebenen Strategien in Erwägung. -
Legen Sie die Hadoop-Konfigurationseinstellung "io.file.buffer.size" auf "65536" fest. Diese bewirkt, dass Hadoop weniger Zeit damit verbringt, Amazon-S3-Objekte zu durchsuchen.
-
Überlegen Sie sich, ob Sie dasie Speculative-Execution-Feature in Hadoop deaktivieren, wenn Ihr Cluster Probleme mit der gleichzeitigen Ausführung von Amazon S3 hat. Diese Vorgehensweise ist auch bei der Problembehandlung eines langsamen Clusters nützlich. Sie tun dies, indem Sie die
mapreduce.map.speculative
- und diemapreduce.reduce.speculative
-Eigenschaften auffalse
festlegen. Wenn Sie einen Cluster starten, können Sie diese Werte mithilfe dermapred-env
-Konfigurationsklassifizierung festlegen. Weitere Informationen finden Sie unter Konfigurieren von Anwendungen in den Amazon EMR-Versionshinweisen. -
Wenn Sie einen Hive-Cluster ausführen, finden Sie weitere Informationen unter Haben Sie Probleme beim Laden von Daten in oder aus Amazon S3 in Hive?.
Weitere Informationen finden Sie unter Bewährte Methoden für Amazon-S3-Fehler im Benutzerhandbuch von Amazon Simple Storage Service.