Sandboxes
Gilt für: ✅Azure Data Explorer
Kusto kann Sandkasten für bestimmte Flüsse ausführen, die in einer sicheren und isolierten Umgebung ausgeführt werden müssen. Beispiele für diese Flüsse sind benutzerdefinierte Skripts, die mit dem Python-Plug-In oder dem R-Plug-In ausgeführt werden.
Sandkasten werden lokal ausgeführt (d. h. die Verarbeitung erfolgt in der Nähe der Daten), ohne zusätzliche Latenz für Remoteanrufe.
Voraussetzungen und Einschränkungen
- Sandkasten müssen auf VM-Größen ausgeführt werden, die geschachtelte Virtualisierung unterstützen, die mithilfe der Hyper-V-Technologie implementiert wurden und keine Einschränkungen aufweisen.
- Das Image zum Ausführen der Sandkasten wird für jeden Clusterknoten bereitgestellt und erfordert dedizierten SSD-Speicherplatz, um ausgeführt zu werden.
- Die geschätzte Größe liegt zwischen 10 und 20 GB.
- Dies wirkt sich auf die Datenkapazität des Clusters aus und kann sich auf die Kosten des Clusters auswirken.
Laufzeit
- Ein Sandkastenabfrageoperator kann einen oder mehrere Sandkasten für die Ausführung verwenden.
- Eine Sandbox wird nur für eine einzelne Abfrage verwendet und nach Abschluss dieser Abfrage verworfen.
- Wenn ein Knoten z. B. als Teil eines Dienstupgrades neu gestartet wird, werden alle ausgeführten Sandkasten gelöscht.
- Jeder Knoten verwaltet eine vordefinierte Anzahl von Sandkasten, die für die Ausführung eingehender Anforderungen bereit sind.
- Sobald ein Sandkasten verwendet wird, wird automatisch ein neuer zur Verfügung gestellt, um ihn zu ersetzen.
- Wenn keine vorab zugewiesenen Sandkasten zur Verfügung stehen, um einen Abfrageoperator zu bedienen, wird sie gedrosselt, bis neue Sandkasten verfügbar sind. Weitere Informationen finden Sie unter "Fehler". Je nach SKU und verfügbaren Ressourcen im Datenknoten kann es bis zu 10 bis 15 Sekunden pro Sandkasten dauern.
Sandkastenparameter
Einige der Parameter können mithilfe einer Sandkastenrichtlinie auf Clusterebene für jede Art von Sandkasten gesteuert werden.
- Anzahl der Sandkasten pro Knoten: Die Anzahl der Sandkasten pro Knoten ist begrenzt.
- Anforderungen, die vorgenommen werden, wenn keine verfügbare Sandbox verfügbar ist, wird gedrosselt.
- Initialisieren sie beim Start: Wenn sie auf
false
(Standardeinstellung) festgelegt ist, werden Sandkasten für einen Knoten lazily initialisiert, wenn eine Abfrage zum ersten Mal eine Sandbox für die Ausführung benötigt. Andernfalls werden Sandkasten als Teil des Dienststarts initialisiert.true
- Dies bedeutet, dass die erste Ausführung eines Plug-Ins, das Sandkasten auf einem Knoten verwendet, einen kurzen Warm-up-Zeitraum enthält.
- CPU: Die maximale CPU-Rate, die ein Sandkasten von den Prozessoren seines Hosts verbrauchen kann, ist begrenzt (Standardeinstellung).
50%
- Wenn der Grenzwert erreicht ist, wird die CPU-Auslastung der Sandbox gedrosselt, die Ausführung wird jedoch fortgesetzt.
- Arbeitsspeicher: Die maximale Rammenge, die ein Sandkasten für den RAM des Hosts verbrauchen kann, ist begrenzt.
- Der Standardspeicher für die Hyper-V-Technologie beträgt 1 GB und für Legacy-Sandboxes 20 GB.
- Das Erreichen des Grenzwerts führt zum Beenden des Sandkastens und zu einem Abfrageausführungsfehler.
Einschränkungen des Sandkastens
- Netzwerk: Eine Sandbox kann nicht mit einer Ressource auf dem virtuellen Computer (VM) oder außerhalb davon interagieren.
- Eine Sandbox kann nicht mit einem anderen Sandkasten interagieren.
Hinweis
Die mit Sandkasten verwendeten Ressourcen hängen nicht nur von der Größe der Daten ab, die als Teil der Anforderung verarbeitet werden, sondern auch von der Logik, die im Sandkasten ausgeführt wird, und der Implementierung von Bibliotheken, die von ihr verwendet werden.
Beispielsweise bedeutet letzteres für die python
und r
Plug-Ins das vom Benutzer bereitgestellte Skript und die Python- oder R-Bibliotheken, die sie zur Laufzeit verbraucht.
Fehler
ErrorCode | Status | `Message` | Potenzieller Grund |
---|---|---|---|
E_SB_QUERY_THROTTLED_ERROR | TooManyRequests (429) | Die Sandkastenabfrage wurde aufgrund der Einschränkung abgebrochen. Wiederholen, nachdem ein Backoff erfolgreich war | Es sind keine Sandkasten auf dem Zielknoten verfügbar. Neue Sandkasten sollten in einigen Sekunden verfügbar sein. |
E_SB_QUERY_THROTTLED_ERROR | TooManyRequests (429) | Sandkasten der Art '{kind}' wurden noch nicht initialisiert. | Die Sandkastenrichtlinie wurde kürzlich geändert. Neue Sandkasten, die der neuen Richtlinie folgen, werden in einigen Sekunden verfügbar sein. |
InternalServiceError (520) | Die Sandkastenabfrage wurde aufgrund eines Fehlers bei der Initialisierung von Sandboxes abgebrochen. | Unerwarteter Infrastrukturfehler. |
VM-Größen, die geschachtelte Virtualisierung unterstützen
In der folgenden Tabelle sind alle modernen VM-Größen aufgeführt, die hyper-V-Sandkastentechnologie unterstützen.
Name | Kategorie |
---|---|
Standard_L8s_v3 | Speicheroptimiert |
Standard_L16s_v3 | Speicheroptimiert |
Standard_L8as_v3 | Speicheroptimiert |
Standard_L16as_v3 | Speicheroptimiert |
Standard_E8as_v5 | Speicheroptimiert |
Standard_E16as_v5 | Speicheroptimiert |
Standard_E8s_v4 | Speicheroptimiert |
Standard_E16s_v4 | Speicheroptimiert |
Standard_E8s_v5 | Speicheroptimiert |
Standard_E16s_v5 | Speicheroptimiert |
Standard_E2ads_v5 | Compute-optimiert |
Standard_E4ads_v5 | Compute-optimiert |
Standard_E8ads_v5 | Compute-optimiert |
Standard_E16ads_v5 | Compute-optimiert |
Standard_E2d_v4 | Compute-optimiert |
Standard_E4d_v4 | Compute-optimiert |
Standard_E8d_v4 | Compute-optimiert |
Standard_E16d_v4 | Compute-optimiert |
Standard_E2d_v5 | Compute-optimiert |
Standard_E4d_v5 | Compute-optimiert |
Standard_E8d_v5 | Compute-optimiert |
Standard_E16d_v5 | Compute-optimiert |
Standard_D32d_v4 | Compute-optimiert |