Direkt zum Inhalt

Warum erstellt Firehose mehrere kleine Dateien in Amazon S3?

Lesedauer: 3 Minute
0

Wenn ich Daten von Amazon Data Firehose an Amazon Simple Storage Service (Amazon S3) übertrage, erstellt Firehose kleine Dateien in meinem S3-Bucket.

Kurzbeschreibung

Firehose liefert aus den folgenden Gründen kleinere Datensätze als von der BufferingHints API angegeben:

  • Du hast die Komprimierung aktiviert.
  • Der Firehose-Bereitstellungsdatenstrom wurde skaliert.
  • Du hast Amazon Kinesis Data Streams ist als Datenquelle aufgeführt.

Lösung

Die Komprimierung wurde aktiviert

Wenn du die Komprimierung für den Firehose-Bereitstellungsdatenstrom aktivierst, wendet Firehose vor der Komprimierung die Parameter SizeInMBS und IntervalInSeconds der BufferingHints API an.

Nach jedem Stapel von Datensatzpuffern wendet Firehose die Parameter an. Anschließend komprimiert Firehose die Datensätze und erstellt kleine Dateien in Amazon S3.

Der Firehose-Bereitstellungsdatenstrom wurde skaliert

Wenn du eine Kontingenterhöhung beantragst oder Firehose automatisch skaliert, skaliert der Firehose-Bereitstellungsdatenstrom. Standardmäßig skaliert Firehose die Bereitstellungsdatenströme automatisch bis zu einem bestimmten Kontingent. Dieses automatische Skalierungsverhalten reduziert die Drosselung, ohne dass das Kontingent erhöht wird.

Wenn Firehose-Bereitstellungsdatenströme skaliert werden, ist möglicherweise die BufferingHints API betroffen.

Hinweis: Wenn du Firehose konfigurierst, kannst du die Puffergröße festlegen.

Innerhalb des Firehose-Bereitstellungsdatenstroms puffert Firehose Daten in parallelen Kanälen und liefert die Daten gleichzeitig. Firehose puffert beispielsweise Daten und erstellt eine einzelne Datei auf der Grundlage des Puffergrößenkontingents. Wenn Firehose auf das Doppelte des aktuellen Durchsatzkontingents skaliert, erstellen zwei separate Kanäle Dateien innerhalb desselben Zeitintervalls. Wenn Firehose bis zu viermal skaliert, gibt es vier verschiedene Kanäle, die im gleichen Zeitintervall vier Dateien in Amazon S3 erstellen.

Wenn die Bereitstellungsströme skalieren, erstellt Firehose kleinere Dateien, wenn der Skalierungsfaktor und das Volume des eingehenden Datenverkehrs nicht übereinstimmen. Wenn Firehose beispielsweise auf das Vierfache der ursprünglichen Kapazität skaliert wird und der eingehende Datenverkehr ebenfalls das Vierfache des ursprünglichen Datenverkehrs-Volumes erhöht, bleiben die Dateigrößen konstant. Wenn Firehose jedoch viermal skaliert, aber der Datenverkehr gleich bleibt, verteilt Firehose dasselbe Daten-Volume auf mehrere Kanäle. Dies führt dann zu Dateien mit kleineren Größen.

Hinweis: Die Anzahl der Dateien kann in beiden Szenarien aufgrund der mehreren parallelen Pufferkanäle zunehmen.

Stelle sicher, dass der Firehose-Bereitstellungsdatenstrom nicht über das Standardkontingent hinaus skaliert wird. Um das aktuelle Kontingent für den Firehose-Bereitstellungsdatenstroms einzusehen, überprüfe die folgenden Amazon CloudWatch-Metriken:

  • BytesPerSecondLimit
  • RecordsPerSecondLimit
  • PutRequestsPerSecondLimit

Wenn die Werte dieser Metriken von den Standardkontingenten abweichen, wurde der Firehose-Bereitstellungsdatenstrom skaliert.

Der Kinesis-Datenströme wurden als Datenquelle aufgeführt

Wenn du einen Datenstrom als Datenquelle von Firehose aufführst, skaliert Firehose intern. Standardmäßig skaliert Firehose entsprechend der Volume-Kapazität des Datenstroms. Wenn Firehose skaliert, ändert sich die Puffergröße, was zur Bereitstellung kleinerer Datensätze führen kann.

Hinweis: Firehose behandelt Optionen für Pufferhinweise als Hinweise. Daher verwendet Firehose möglicherweise andere Werte, um den Puffer zu optimieren.

AWS OFFICIALAktualisiert vor einem Jahr