IngestionBatching-Richtlinie
Überblick
Während der Erfassung in die Warteschlange optimiert der Dienst den Durchsatz, indem kleine Eingangsdatenblöcke vor der Erfassung in Batches zusammengefasst werden. Die Batchverarbeitung reduziert die Ressourcen, die vom Erfassungsprozess in der Warteschlange verbraucht werden, und es sind keine Ressourcen nach der Erfassung erforderlich, um die kleinen Datenshards zu optimieren, die bei der Nicht-Batcherfassung erzeugt werden.
Der Nachteil der Batchverarbeitung vor der Erfassung ist die erzwungene Verzögerung. Daher ist die End-to-End-Zeit von der Anforderung der Datenerfassung bis zur Abfrage bereit.
Wenn Sie die IngestionBatching
Richtlinie definieren, müssen Sie ein Gleichgewicht zwischen der Optimierung des Durchsatzes und der Zeitverzögerung finden. Diese Richtlinie gilt für die Erfassung in der Warteschlange. Es definiert die maximale erzwungene Verzögerung, die beim Batching kleiner Blobs zulässig ist. Weitere Informationen zur Verwendung von Batchverarbeitungsrichtlinienbefehlen und zur Optimierung des Durchsatzes finden Sie unter:
- Befehlsreferenz für die Erfassungsbatchverarbeitungsrichtlinie
- Bewährte Methoden für die Erfassung: Optimieren des Durchsatzes
Versiegeln einer Charge
Es gibt eine optimale Größe von etwa 1 GB an nicht komprimierten Daten für die Massenerfassung. Die Erfassung von Blobs mit viel weniger Daten ist suboptimal, sodass der Dienst bei der Erfassung in der Warteschlange kleine Blobs in Batches zusammengibt.
Die folgende Liste zeigt die grundlegenden Batchverarbeitungsrichtlinientrigger zum Versiegeln eines Batches. Ein Batch wird versiegelt und erfasst, wenn die erste Bedingung erfüllt ist:
Size
: Batchgrößenlimit erreicht oder überschrittenCount
: Grenzwert für Batchdateinummern erreichtTime
: Die Batchverarbeitungszeit ist abgelaufen.
Die IngestionBatching
Richtlinie kann für Datenbanken oder Tabellen festgelegt werden. Die Standardwerte sind wie folgt: maximale Verzögerungszeit von 5 Minuten , 1000 Elemente, Gesamtgröße von 1 GB.
Wichtig
Die Auswirkung der Festlegung dieser Richtlinie auf sehr kleine Werte ist eine Erhöhung der COGS (Cost of Goods Selling) des Clusters und eine verringerte Leistung. Darüber hinaus kann die Verringerung der Batchverarbeitungsrichtlinienwerte tatsächlich zu einer höheren effektiven End-to-End-Erfassungslatenz führen, da mehrere Erfassungsprozesse parallel verwaltet werden müssen.
Die folgende Liste zeigt Bedingungen zum Versiegeln von Batches im Zusammenhang mit der Erfassung einzelner Blobs. Ein Batch wird versiegelt und erfasst, wenn die Bedingungen erfüllt sind:
SingleBlob_FlushImmediately
: Erfassen eines einzelnen Blobs, da "FlushImmediately" festgelegt wurdeSingleBlob_IngestIfNotExists
: Erfassen eines einzelnen Blobs, da "IngestIfNotExists" festgelegt wurdeSingleBlob_IngestByTag
: Erfassen eines einzelnen Blobs, da "ingest-by" festgelegt wurdeSingleBlob_SizeUnknown
: Erfassen eines einzelnen Blobs, da die Blobgröße unbekannt ist
Wenn die SystemFlush
Bedingung festgelegt ist, wird ein Batch versiegelt, wenn eine Systemleerung ausgelöst wird. Wenn der SystemFlush
Parameter festgelegt ist, leert das System die Daten, z. B. aufgrund der Clusterskalierung oder des internen Zurücksetzens von Systemkomponenten.
Standardwerte und Grenzwerte
type | Eigenschaft | Standard | Einstellung für niedrige Latenz | Mindestwert | Maximalwert |
---|---|---|---|---|---|
Anzahl von Elementen | MaximumNumberOfItems | 500 | 500 | 1 | 25,000 |
Datengröße (MB) | MaximumRawDataSizeMB | 1024 | 1024 | 100 | 4096 |
Zeit (in Sek.) | MaximumBatchingTimeSpan | 300 | 20 - 30 | 10 | 1800 |
Die effektivste Möglichkeit, die End-to-End-Latenz mithilfe einer Batchverarbeitungsrichtlinie für die Erfassung zu steuern, besteht darin, die Zeitgrenze auf Tabellen - oder Datenbankebene entsprechend den Anforderungen an höhere Latenzgrenzen zu ändern. Eine Richtlinie auf Datenbankebene wirkt sich auf alle Tabellen in dieser Datenbank aus, für die die Richtlinie auf Tabellenebene nicht definiert ist, sowie alle neu erstellten Tabellen.
Wichtig
Wenn Sie die Zeitgrenze der Batchverarbeitungsrichtlinie für die Erfassung für Tabellen mit geringem Eingang zu niedrig festlegen, kann es zu zusätzlicher Compute- und Speicherarbeit kommen, wenn der Cluster versucht, die neu erstellten Datenshards zu optimieren. Weitere Informationen zu Datenshards finden Sie unter Erweiterungen.
Batchdatengröße
Die Datengröße der Batchverarbeitungsrichtlinie wird für unkomprimierte Daten festgelegt. Für Parquet-, AVRO- und ORC-Dateien wird eine Schätzung basierend auf der Dateigröße berechnet. Bei komprimierten Daten wird die unkomprimierte Datengröße wie folgt in absteigender Reihenfolge der Genauigkeit ausgewertet:
- Wenn die unkomprimierte Größe in den Optionen für die Erfassungsquelle angegeben wird, wird dieser Wert verwendet.
- Beim Erfassen lokaler Dateien mithilfe von SDKs werden ZIP-Archive und gzip-Streams überprüft, um deren Rohgröße zu bewerten.
- Wenn die vorherigen Optionen keine Datengröße angeben, wird ein Faktor auf die komprimierte Datengröße angewendet, um die unkomprimierte Datengröße zu schätzen.
Batchverarbeitungslatenz
Latenzen können aus vielen Ursachen resultieren, die mithilfe von Batchingrichtlinieneinstellungen behoben werden können.
Ursache | Lösung |
---|---|
Die Datenlatenz stimmt mit der time Einstellung überein, mit zu wenig Daten, um den size Grenzwert oder count zu erreichen. |
Reduzieren des Grenzwerts time |
Ineffizientes Batching aufgrund einer großen Anzahl sehr kleiner Dateien | Erhöhen Sie die Größe der Quelldateien. Wenn Sie die Kafka-Senke verwenden, konfigurieren Sie sie so, dass Daten in Blöcken von ca. 100 KB oder höher gesendet werden. Wenn Sie über viele kleine Dateien verfügen, erhöhen Sie die count (bis zu 2000) in der Datenbank- oder Tabellenerfassungsrichtlinie. |
Batchverarbeitung einer großen Menge an unkomprimierten Daten | Dies ist beim Erfassen von Parquet-Dateien üblich. Verringern Sie size inkrementell für die Batchverarbeitungsrichtlinie für Tabellen oder Datenbanken auf 250 MB, und überprüfen Sie, ob sie verbessert werden. |
Backlog, weil der Cluster unter skaliert ist | Akzeptieren Sie alle Vorschläge von Azure Advisor, um Ihren Cluster beiseite zu skalieren oder hochzuskalieren. Alternativ können Sie Ihren Cluster manuell skalieren, um festzustellen, ob das Backlog geschlossen ist. Wenn diese Optionen nicht funktionieren, wenden Sie sich an den Support, um Unterstützung zu erhalten. |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für