Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vysvětlení jednotky streamování a uzlu streamování
Jednotky streamování (SU) představují výpočetní prostředky, které provádějí úlohu Stream Analytics. Čím vyšší je počet výpočetních jednotek SU, tím více procesorových a paměťových prostředků přidělíte pro svou úlohu. Tato kapacita vám umožní zaměřit se na logiku dotazů a abstrahuje potřebu správy hardwaru pro včasné spuštění úlohy Stream Analytics.
Azure Stream Analytics podporuje dvě struktury jednotek streamování: SU V1 (zastaralá) a SU V2 (doporučeno).
Model SU V1 je původní nabídka Azure Stream Analytics, kde každé 6 jednotek SU odpovídá jednomu uzlu streamování pro úlohu. Úlohy můžou běžet i s 1 a 3 SU a odpovídají frakčním uzlům streamování. Škálování probíhá v krocích po 6 při více než 6 úlohách SU, tedy na 12, 18, 24 a více, při přidání dalších uzlů pro streamování, které poskytují distribuované výpočetní zdroje.
Model SU V2 (doporučeno) je zjednodušená struktura s příznivými cenami pro stejné výpočetní prostředky. V modelu SU V2 odpovídá 1 SU V2 jednomu uzlu streamování pro vaši úlohu. 2 SU V2 odpovídají 2 uzlům streamování, 3 až 3 atd. Úlohy s 1/3 a 2/3 SU V2 jsou k dispozici s jedním streamovacím uzlem, ale jen s částečnými výpočetními prostředky. Úlohy 1/3 a 2/3 SU V2 poskytují nákladově efektivní možnost pro úlohy, které vyžadují menší škálování.
Následující tabulka ukazuje základní výpočetní výkon jednotek streamování V1 a V2:
Informace o cenách SU najdete na stránce s cenami služby Azure Stream Analytics.
Vysvětlení převodů jednotek streamování a jejich použití
Systém automaticky převede jednotky streamování z vrstvy rozhraní REST API na uživatelské rozhraní (Azure Portal a Visual Studio Code). Tento převod se zobrazí také v protokolu aktivit , kde se hodnoty jednotek streamování liší od hodnot v uživatelském rozhraní. Toto chování je záměrné. Pole rozhraní REST API jsou omezená na celočíselné hodnoty, ale úlohy Stream Analytics podporují desetinné uzly (1/3 a 2/3 jednotky streamování). Uživatelské rozhraní Azure Stream Analytics zobrazuje hodnoty uzlů jako 1/3, 2/3, 1, 2, 3 atd., zatímco back-end (protokoly aktivit, vrstva rozhraní REST API) zobrazuje stejné hodnoty vynásobené hodnotou 10 jako 3, 7, 10, 20 a 30.
| Standard | Standard V2 (UI) | Standard V2 (Backend, např. logy, rozhraní REST API, atd.) |
|---|---|---|
| 0 | 1/3 | 3 |
| 3 | 2/3 | 7 |
| 6 | 0 | 10 |
| 12 | 2 | 20 |
| 18 | 3 | 30 |
| ... | ... | ... |
Tento převod vyjadřuje stejnou členitost a eliminuje desetinnou čárku ve vrstvě rozhraní API pro skladové jednotky (SKU) v2. Tento převod je automatický a nemá žádný vliv na výkon vaší úlohy.
Pochopení spotřeby a využití paměti
Aby se dosáhlo nízké latence zpracování streamů, provádějí úlohy Stream Analytics veškeré zpracování v paměti. Když úloha vyčerpá paměť, úloha streamování selže. V případě produkční úlohy je proto důležité monitorovat využití prostředků úlohy streamování a ujistit se, že je přidělen dostatečný počet prostředků, aby úlohy běžely 24/7.
Metrika využití SU v procentech, která se pohybuje od 0 % do 100 %, popisuje spotřebu paměti vaší úlohy. U úlohy streamování s minimálními nároky je tato metrika obvykle mezi 10 až 20 %. Pokud je využití SU % vysoké (nad 80 %) nebo pokud došlo ke zpoždění vstupních událostí (i když SU % využití je nízké, protože to nezobrazuje využití CPU), vaše úloha pravděpodobně vyžaduje více výpočetních prostředků, což vyžaduje navýšení počtu streamovacích jednotek. Nejlepší je zachovat metriku SU nižší než 80 % a počítat s občasnými špičkami. Pokud chcete reagovat na zvýšené pracovní zátěže a zvýšit streamovací jednotky, zvažte nastavení upozornění na využití SU na 80 %. Můžete také použít metriky zpoždění vodoznaku a nevyřízených událostí a zjistit, jestli to má dopad.
Konfigurace jednotek streamování Stream Analytics (SU)
Přihlaste se na portál Azure.
V seznamu prostředků vyhledejte úlohu Stream Analytics, kterou chcete škálovat, a pak ji otevřete.
Na stránce úlohy v části Konfigurovat vyberte Škálovat. Výchozí počet jednotek SU je 1 při vytváření úlohy.
V rozevíracím seznamu zvolte možnost SU a nastavte SUs pro úlohu. Jste omezeni na konkrétní rozsah SU.
Během provádění můžete změnit počet jednotek SU přiřazených k vaší úloze. Při spuštění úlohy můžete být omezeni na výběr ze sady hodnot SU, pokud vaše úloha používá nedílený výstup nebo má vícekrokový dotaz s různými hodnotami PARTITION BY.
Monitorování výkonu úloh
Pomocí webu Azure Portal můžete sledovat metriky související s výkonem úlohy. Další informace o definici metrik najdete v tématu Metriky úlohy Azure Stream Analytics. Další informace o monitorování metrik na portálu najdete v tématu Monitorování úlohy Stream Analytics pomocí webu Azure Portal.
Vypočítejte očekávanou propustnost úlohy. Pokud je propustnost nižší, než se čekalo, vylaďte vstupní oddíl, vylaďte dotaz a přidejte do úlohy SU.
Kolik SU je pro úlohu potřeba?
Počet požadovaných jednotek SU závisí na konfiguraci oddílu pro vstupy a dotaz, který definujete v rámci úlohy. Stránka Měřítko umožňuje nastavit správný počet jednotek SU. Přidělte více jednotek SU, než si myslíte, že potřebujete. Modul pro zpracování Stream Analytics optimalizuje latenci a propustnost za cenu přidělení dodatečné paměti.
Obecně platí, že pro dotazy, které nepoužívají PARTITION BY, začněte s 1 SU V2. Pak nalezněte nejlepší číslo metodou pokusu a omylu. Upravte počet jednotek SU po předání reprezentativních objemů dat a prozkoumejte metriku využití SU%. Maximální počet jednotek streamování, které může úloha Stream Analytics použít, závisí na počtu kroků v dotazu definovaném pro úlohu a počtu oddílů v jednotlivých krocích. Další informace o omezeních najdete tady.
Další informace o výběru správného počtu jednotek SU najdete v tématu Škálování úloh Azure Stream Analytics za účelem zvýšení propustnosti.
Poznámka:
Počet jednotek SU, které úloha potřebuje, závisí na konfiguraci oddílu pro vstupy a na dotazu, který pro úlohu definujete. Přiřaďte úloze maximálně tolik SU, kolik máte ve svém kvótu vyhrazeno. Informace o kvótě předplatného Azure Stream Analytics najdete v limitech Stream Analytics. Pokud chcete zvýšit SU pro vaše předplatná nad rámec této kvóty, kontaktujte podpora Microsoftu. Platné hodnoty pro SUs za úlohu jsou 1/3, 2/3, 1, 2, 3 atd.
Faktory, které zvyšují procentuální využití SU
Dočasné (časově orientované) prvky dotazu jsou základní sadou stavových operátorů poskytovaných Stream Analytics. Stream Analytics spravuje stav těchto operací interně vaším jménem. Spravuje spotřebu paměti, kontrolní body pro zvýšení odolnosti a obnovení stavu během aktualizací služeb. I když Stream Analytics stavy plně spravuje, zvažte řadu doporučení osvědčených postupů.
Úloha s komplexní logikou dotazů může mít vysoké využití SU% i v případě, že nepřetržitě nepřijímá vstupní události. Může k tomu dojít po náhlém nárůstu vstupních a výstupních událostí. Pokud je dotaz složitý, může úloha i nadále udržovat stav uložený v paměti.
Přechodné chyby nebo upgrady iniciované systémem mohou způsobit, že se využití SU% náhle sníží na 0 na krátkou dobu, než se vrátí na očekávané úrovně. Zvýšení počtu streamovacích jednotek pro úlohu nemusí snížit využití SU%, pokud váš dotaz není plně paralelní.
Při porovnávání využití v určitém časovém období použijte metriky četnosti událostí. Metriky InputEvents a OutputEvents ukazují, kolik událostí bylo přečteno a zpracováno. Metriky, jako jsou chyby deserializace, označují počet chybových událostí. Když se počet událostí na časovou jednotku zvýší, ve většině případů se SU % zvýší.
Logika stavového dotazu v dočasných prvech
Jednou z jedinečných funkcí úloh Azure Stream Analytics je stavové zpracování, jako jsou agregace s časovými okny, dočasné spojení a dočasné analytické funkce. Každý z těchto operátorů uchovává informace o stavu. Maximální velikost okna pro tyto prvky dotazu je sedm dní.
Koncept dočasného okna se zobrazí v několika prvcích dotazu Stream Analytics:
Okenní agregace:
GROUP BYpadací, skákající a posuvná oknaČasová spojení:
JOINsDATEDIFFfunkcíDočasné analytické funkce:
ISFIRST,LASTaLAGsLIMIT DURATION
Využití paměti (součást metriky jednotek streamování) úlohami Stream Analytics ovlivňují následující faktory:
Okénková agregace
Spotřebovaná paměť (velikost stavu) pro agregaci s okny není vždy přímo úměrná velikosti okna. Místo toho je spotřebovaná paměť úměrná kardinalitě dat nebo počtu skupin v každém časovém intervalu.
Například v následujícím dotazu je číslo přidružené clusterid kardinalitě dotazu.
SELECT count(*)
FROM input
GROUP BY clusterid, tumblingwindow (minutes, 5)
Pokud chcete zmírnit problémy způsobené vysokou kardinalitou v předchozím dotazu, odešlete události do služby Event Hubs rozdělené na oddíly clusterid. Horizontální navýšením kapacity dotazu umožníte systému zpracovat každý vstupní oddíl samostatně pomocí funkce PARTITION BY , jak je znázorněno v následujícím příkladu:
SELECT count(*)
FROM input PARTITION BY PartitionId
GROUP BY PartitionId, clusterid, tumblingwindow (minutes, 5)
Jakmile je dotaz rozdělen, je rozložen mezi několik uzlů. V důsledku toho se sníží počet hodnot přicházejících clusterid do každého uzlu, což snižuje kardinalitu operátoru GROUP BY .
Rozdělte službu Event Hubs podle klíče seskupení, abyste se vyhnuli nutnosti kroku redukce. Další informace najdete v tématu Přehled služby Event Hubs.
Časová spojení
Spotřebovaná paměť (velikost stavu) dočasného spojení je úměrná počtu událostí v časové rezervě spojení. Toto číslo se rovná vstupní rychlosti události vynásobené velikostí rezervy. Jinými slovy, paměť spotřebovaná spojeními je úměrná časovému rozsahu DateDiff vynásobeným průměrnou mírou událostí.
Počet nepřiřazených událostí ve spojení ovlivňuje využití paměti pro dotaz. Následující dotaz vyhledá zobrazení reklam, které generují kliknutí:
SELECT clicks.id
FROM clicks
INNER JOIN impressions ON impressions.id = clicks.id AND DATEDIFF(hour, impressions, clicks) between 0 AND 10.
V tomto příkladu je možné, že se zobrazí spousta reklam a několik lidí na ně klikne. Všechny události musíte uchovávat v časovém intervalu. Využitá paměť je přímo úměrná velikosti tohoto okna a frekvenci událostí.
Pokud chcete toto chování napravit, odešlete události do služby Event Hubs rozdělené podle klíčů join (ID v tomto případě) a škálujte dotaz tak, že systému umožníte zpracovat každý vstupní oddíl samostatně pomocí funkce PARTITION BY , jak je znázorněno na obrázku:
SELECT clicks.id
FROM clicks PARTITION BY PartitionId
INNER JOIN impressions PARTITION BY PartitionId
ON impression.PartitionId = clicks.PartitionId AND impressions.id = clicks.id AND DATEDIFF(hour, impressions, clicks) between 0 AND 10
Jakmile dotaz rozdělíte, rozložíte ho na více uzlů. V důsledku toho zmenšete počet událostí přicházejících do každého uzlu a zmenšete velikost stavu uchovávaného v okně spojení.
Temporální analytické funkce
Spotřebovaná paměť (velikost stavu) dočasnou analytickou funkcí je úměrná rychlosti událostí vynásobenou dobou trvání. Paměť spotřebovaná analytickými funkcemi není úměrná velikosti časového okna, ale spíše počtu partíc v každém časovém okně.
Náprava se podobá dočasnému spojení. Dotaz můžete škálovat pomocí funkce PARTITION BY.
Vyrovnávací paměť nefunkční
Velikost vyrovnávací paměti pro nesprávné pořadí můžete nakonfigurovat v podokně konfigurace řazení událostí. Vyrovnávací paměť uchovává vstupy po dobu trvání okna a změní jejich pořadí. Velikost vyrovnávací paměti je úměrná míře vstupu událostí vynásobené velikostí okna mimo pořadí. Výchozí velikost okna je 0.
Pokud chcete napravit přetečení vyrovnávací paměti mimo pořadí, škálujte dotaz pomocí funkce PARTITION BY. Jakmile je dotaz rozdělený na části, rozdělí se na několik uzlů. V důsledku toho se sníží počet událostí přicházejících do každého uzlu, čímž se sníží počet událostí v každé vyrovnávací paměti pro změny pořadí.
Počet vstupních oddílů
Každý vstupní oddíl úlohy má vyrovnávací paměť. Čím větší je počet vstupních oddílů, tím více zdrojů úloha spotřebovává. Pro každou jednotku streamování může Azure Stream Analytics zpracovat přibližně 7 MB/s vstupu. Proto můžete optimalizovat tak, aby počet streamovacích jednotek Stream Analytics odpovídal počtu oddílů ve vašem centru událostí.
Úloha nakonfigurovaná s jednou třetí jednotkou streamování je obvykle dostatečná pro centrum událostí se dvěma oddíly (což je minimum pro centrum událostí). Pokud má centrum událostí více partic, úloha Stream Analytics spotřebovává více prostředků, ale nemusí nutně využívat dodatečnou propustnost poskytovanou službou Event Hubs.
Pro úlohu s jednou jednotkou streamování V2 budete možná potřebovat 4 nebo 8 particí z centra událostí. Vyhněte se ale příliš mnoha zbytečným oddílům, protože způsobují nadměrné využití prostředků. Například centrum událostí s 16 nebo více oddíly v úloze Stream Analytics s 1 streamovací jednotkou.
Referenční data
Azure Stream Analytics načítá referenční data do paměti pro rychlé vyhledávání. Při aktuální implementaci každá operace spojení s referenčními daty uchovává kopii referenčních dat v paměti, i když se spojíte se stejnými referenčními daty vícekrát. U dotazů s funkcí PARTITION BY má každý oddíl kopii referenčních dat, takže oddíly jsou plně oddělené. S multiplikačním efektem může docházet k rychlému nárůstu využití paměti, pokud se opakovaně připojíte k referenčním datům s více partíemi.
Použití funkcí UDF
Když přidáte funkci UDF, Azure Stream Analytics načte modul runtime JavaScriptu do paměti, což má vliv na využití SU %.
Další kroky
- Vytváření paralelizovatelných dotazů v Azure Stream Analytics
- Škálování úloh Azure Stream Analytics za účelem zvýšení propustnosti
- Metriky úloh Azure Stream Analytics
- Dimenze metrik úloh Azure Stream Analytics
- Monitorování úlohy Stream Analytics pomocí webu Azure Portal
- Analýza výkonu úlohy Stream Analytics s využitím dimenzí metrik
- Porozumění a úprava streamovacích jednotek