Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A streamelési egység és a streamelési csomópont ismertetése
A streamelési egységek (SU-k) a Stream Analytics-feladatokat végrehajtó számítási erőforrásokat jelölik. Minél nagyobb az SU-k száma, annál több CPU- és memóriaerőforrást oszt ki a feladathoz. Ez a kapacitás lehetővé teszi, hogy a lekérdezési logikára összpontosítson, és absztrakciókat végez a Stream Analytics-feladat időben történő futtatásához szükséges hardver kezeléséhez.
Az Azure Stream Analytics két streamegység-struktúrát támogat: su V1 (elavult) és SU V2 (ajánlott).
Az SU V1 modell az Azure Stream Analytics eredeti ajánlata, amelyben minden 6 SU egyetlen streamelési csomópontnak felel meg egy feladat végrehajtásához. A feladatok 1 és 3 szolgáltatási egységekkel is futhatnak, és tört streamelési csomópontoknak felelnek meg. A skálázás a 6 SU-feladaton túl 6,12, 18, 24 és újabb lépésekben történik az elosztott számítási erőforrásokat biztosító streamcsomópontok hozzáadásával.
Az SU V2 modell (ajánlott) egy egyszerűsített struktúra, amely kedvező díjszabást biztosít ugyanahhoz a számítási erőforráshoz. Az SU V2 modellben az 1 SU V2 egy streamelési csomópontnak felel meg a feladathoz. A 2 SU V2 2 streamelési csomópontnak felel meg, 3–3 és így tovább. Az 1/3 és a 2/3 SU V2-vel rendelkező feladatok egy streamelési csomóponttal, de a számítási erőforrások töredékével is elérhetők. Az 1/3 és 2/3 SU V2 feladatok költséghatékony megoldást nyújtanak a kisebb léptékű számítási feladatokhoz.
Az alábbi táblázat a V1 és v2 streamelési egységek mögöttes számítási teljesítményét mutatja be:
Az SU díjszabásával kapcsolatos információkért látogasson el az Azure Stream Analytics díjszabási oldalára.
A streamelési egységek konverzióinak és alkalmazásuknak ismertetése
A rendszer automatikusan átalakítja a streamelési egységeket a REST API-rétegből a felhasználói felületre (Azure Portal és Visual Studio Code). Ezt az átalakítást a Tevékenységnaplóban is láthatja, ahol a streamelési egység értékei eltérnek a felhasználói felületen lévő értékektől. Ez a viselkedés terv szerint történik. A REST API-mezők egész számokra korlátozódnak, de a Stream Analytics-feladatok támogatják a tört csomópontokat (1/3 és 2/3 streamegység). Az Azure Stream Analytics felhasználói felületén a csomópontokat 1/3, 2/3, 1, 2, 3 stb. értékekben jeleníti meg, míg a háttérrendszer (tevékenységnaplók, REST API-réteg) ugyanazokat az értékeket 10-zel szorozva jeleníti meg, mint 3, 7, 10, 20 és 30.
| Standard | Standard V2 (felhasználói felület) | Standard V2 (háttérrendszer, például naplók, Rest API stb.) |
|---|---|---|
| 0 | 1/3 | 3 |
| 3 | 2/3 | 7 |
| 6 | 0 | 10 |
| 12 | 2 | 20 |
| 18 | 3 | 30 |
| ... | ... | ... |
Ez az átalakítás ugyanazt a részletességet közvetíti, és kiküszöböli a V2 készletmegőrzési egységek (SKU-k) API-rétegében lévő tizedesvesszőt. Ez az átalakítás automatikus, és nincs hatással a feladat teljesítményére.
A használat és a memória kihasználtságának ismertetése
A kis késésű streamfeldolgozás érdekében az Azure Stream Analytics-feladatok minden feldolgozást a memóriában hajtanak végre. Ha a feladat elfogy a memóriából, a streamelési feladat meghiúsul. Emiatt egy éles feladat esetében fontos figyelni egy streamelési feladat erőforrás-használatát, és gondoskodni arról, hogy elegendő erőforrás legyen lefoglalva a feladatok 24/7-ben való futtatásához.
Az SU %kihasználtsági metrika, amely 0% és 100% között mozog, a számítási feladat memóriahasználatát ismerteti. A minimális erőforrásigényű streamelési feladatok esetében ez a metrika általában 10% és 20% között van. Ha az SU%-os kihasználtság magas (80% fölötti), vagy ha a bemeneti események háttérbe szorulnak (még alacsony SU%-os kihasználtság mellett is, mivel nem jeleníti meg a processzorhasználatot), a számítási feladat valószínűleg több számítási erőforrást igényel, ami megköveteli a streamelési egységek számának növelését. A legjobb, ha az SU-metrikát 80% alatt tartja, hogy figyelembe vegye az alkalmi kiugró értékeket. A megnövekedett számítási feladatokra való reagáláshoz és a streamelési egységek számának növeléséhez érdemes lehet 80%-os riasztást beállítani az SU-kihasználtság metrikájára. Emellett a vízjel késleltetése és a háttérbeli eseménymetrikák használatával is megállapíthatja, hogy van-e hatása.
Stream Analytics-streamegységek (SU-k) konfigurálása
Jelentkezzen be az Azure Portalra.
Az erőforrások listájában keresse meg a skálázni kívánt Stream Analytics-feladatot, majd nyissa meg.
A feladatlap Konfigurálás fejléce alatt válassza a Méretezés lehetőséget. Feladat létrehozásakor a szolgáltatási egységek alapértelmezett száma 1.
A munkához az SU beállításához válassza ki az SU opciót a legördülő listából. Egy adott SU-tartományra korlátozódik.
Futás közben módosíthatja a feladatra rendelt szolgáltatási egységek számát. Előfordulhat, hogy a feladat futtatásakor az SU-értékek közül csak akkor választhat, ha a feladat nem particionált kimenetet használ, vagy többlépéses lekérdezéssel rendelkezik különböző PARTÍCIÓK SZERINT értékekkel.
Feladat teljesítményének figyelése
Az Azure Portal használatával nyomon követheti a feladatok teljesítményével kapcsolatos metrikákat. A metrikák definíciójáról további információt az Azure Stream Analytics feladatmetrikáiban talál. A metrikák portálon történő monitorozásával kapcsolatos további információkért lásd: Stream Analytics-feladat monitorozása az Azure Portalon.
Számítsa ki a számítási feladat várható átviteli sebességét. Ha az átviteli sebesség a vártnál kisebb, hangolja a bemeneti partíciót, hangolja a lekérdezést, és adjon SU-kat a feladathoz.
Hány SU-ra van szükség egy feladathoz?
A szükséges szolgáltatási egységek száma a bemenetek partíciókonfigurációjától és a meghatározott lekérdezésű munkafolyamattól függ. A Méretezés lapon beállíthatja a SUs megfelelő számát. Foglaljon le több termékváltozatot, mint gondolná. A Stream Analytics feldolgozómotorja a késleltetésre és az adatátviteli teljesítményre optimalizál, a többlet memória felhasználásának árán.
Általában 1 SU V2-vel kezdje azokat a lekérdezéseket, amelyek nem használják a PARTITION BY-t. Ezután keresse meg a legjobb számot próba és tévedés alapján. Módosítsa az SU-k számát a reprezentatív adatmennyiségek átadása után, és vizsgálja meg az SU% kihasználtsági metrikát. A Stream Analytics-feladatok által használható streamelési egységek maximális száma a feladathoz definiált lekérdezés lépéseinek számától és az egyes lépések partícióinak számától függ. A korlátokról itt tudhat meg többet.
A megfelelő számú termékváltozat kiválasztásáról további információt az Azure Stream Analytics-feladatok méretezése az átviteli sebesség növelése érdekében című témakörben talál.
Feljegyzés
A feladatokhoz szükséges termékváltozatok száma a bemenetek partíciókonfigurációjától és a feladathoz definiált lekérdezéstől függ. Egy feladathoz legfeljebb a rendelkezésre álló egységek kvótájáig választhat SUs-t. Az Azure Stream Analytics-előfizetés kvótájára vonatkozó információkért tekintse meg a Stream Analytics korlátait. Ha a megadott kvótán túl szeretné növelni az előfizetései SU-jait, lépjen kapcsolatba a Microsoft Támogatással. A feladatra érvényes SUs értékek: 1/3, 2/3, 1, 2, 3 stb.
Az SU% kihasználtságát növelő tényezők
A temporális (időorientált) lekérdezési elemek a Stream Analytics által biztosított állapotalapú operátorok alapvető készletei. A Stream Analytics belsőleg kezeli a műveletek állapotát az Ön nevében. Kezeli a memóriahasználatot, ellenőrzi a rugalmasságot és az állapot-helyreállítást a szolgáltatásfrissítések során. Annak ellenére, hogy a Stream Analytics teljes mértékben kezeli az állapotokat, érdemes megfontolni számos ajánlott eljárást.
Az összetett lekérdezési logikával rendelkező feladatok magas SU-% kihasználtsággal rendelkezhetnek akkor is, ha nem fogad folyamatosan bemeneti eseményeket. Ez a bemeneti és kimeneti események hirtelen megugrása után fordulhat elő. Ha a lekérdezés összetett, előfordulhat, hogy a feladat továbbra is fenntartja az állapotot a memóriában.
Az átmeneti hibák vagy a rendszer által kezdeményezett frissítések miatt az SU% kihasználtsága rövid időre hirtelen 0-ra csökkenhet, mielőtt visszatér a várt szintre. Ha a lekérdezés nem teljes mértékben párhuzamos, előfordulhat, hogy egy feladat streamelési egységeinek számának növelése nem csökkenti az SU%-os kihasználtságot.
Ha egy adott időszak kihasználtságát hasonlítja össze, használjon eseménysebesség-metrikákat. Az InputEvents és Az OutputEvents metrikák azt mutatják, hogy hány eseményt olvastak és dolgoztak fel. Az olyan metrikák, mint a deszerializálási hibák, a hibaesemények számát jelzik. Amikor az események száma az időegységenként növekszik, az SU%a legtöbb esetben nő.
Állapotalapú lekérdezési logika időbeli elemekben
Az Azure Stream Analytics-feladatok egyik egyedi képessége az állapotalapú feldolgozás, például az ablakos aggregátumok, az időbeli illesztések és az időbeli elemzési függvények. Ezek az operátorok megőrzik az állapotinformációkat. A lekérdezési elemek maximális ablakmérete hét nap.
A temporális ablak koncepciója több Stream Analytics-lekérdezési elemben is megjelenik:
Ablakos aggregátumok:
GROUP BYgördülő, ugró és csúszóablakokIdőbeli illesztések: függvény
DATEDIFFhasználatávalJOINIdőbeli elemzési függvények:
ISFIRST,LASTésLAGLIMIT DURATION
Az alábbi tényezők befolyásolják a Stream Analytics-feladatok által használt memóriát (a streamelési egységek metrikáinak egy részét):
Ablakos összesítések
Az ablakos összesítéshez felhasznált memória (állapotméret) nem mindig arányos közvetlenül az ablak méretével. Ehelyett a felhasznált memória arányos az adatok számosságával vagy az egyes időablakokban lévő csoportok számával.
A következő lekérdezésben például a lekérdezés számosságához társított clusterid szám.
SELECT count(*)
FROM input
GROUP BY clusterid, tumblingwindow (minutes, 5)
Az előző lekérdezés magas számossága által okozott problémák megoldásához küldjön eseményeket az clusterid által particionált Event Hubsnak. Skálázza fel a lekérdezést úgy, hogy lehetővé teszi a rendszer számára az egyes bemeneti partíciók külön-külön történő feldolgozását a PARTITION BY használatával, ahogyan az a következő példában látható:
SELECT count(*)
FROM input PARTITION BY PartitionId
GROUP BY PartitionId, clusterid, tumblingwindow (minutes, 5)
Miután particionálta a lekérdezést, több csomópontra oszlik el. Ennek eredményeképpen az egyes csomópontokba érkező értékek száma clusterid csökken, ami csökkenti az GROUP BY operátor számosságát.
Az Event Hubs particionálása a csoportosítási kulccsal, hogy ne legyen szükség redukciós lépésre. További információkért tekintse meg az Event Hubs áttekintését.
Időbeli illesztések
A temporális illesztés által felhasznált memória (állapotméret) arányos az illesztés ideiglenes váltószobájában lévő események számával. Ez a szám egyenlő az eseménybemenet sebességének és a rugalmassági margó méretének szorzatával. Más szóval az illesztések által felhasznált memória arányos a DateDiff időtartományával és az átlagos eseménysebesség szorzatával.
Az illesztés nem egyező eseményeinek száma befolyásolja a lekérdezés memóriakihasználtságát. Az alábbi lekérdezés a kattintásokat generáló hirdetésmegjelenítőket keresi:
SELECT clicks.id
FROM clicks
INNER JOIN impressions ON impressions.id = clicks.id AND DATEDIFF(hour, impressions, clicks) between 0 AND 10.
Ebben a példában lehetséges, hogy sok hirdetés jelenik meg, és kevesen kattintanak rájuk. Az összes eseményt az időablakban kell tartania. A felhasznált memória arányos az ablak méretével és az események gyakoriságával.
Ennek a viselkedésnek a megoldásához küldjön eseményeket az Event Hubsnak az illesztési kulcsok (ebben az esetben az azonosító) által particionált eseményközpontba, és skálázza fel a lekérdezést azáltal, hogy lehetővé teszi a rendszer számára, hogy az egyes bemeneti partíciókat külön dolgozza fel a PARTITION BY használatával, ahogyan az látható:
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
A lekérdezés particionálása után több csomóponton is eloszthatja azt. Ennek eredményeképpen csökkenti az egyes csomópontokba érkező események számát, és csökkenti az illesztésablakban tárolt állapot méretét.
Időbeli elemzési függvények
A temporális elemzési függvény által felhasznált memória (állapotméret) arányos az eseménysebesség és az időtartam szorzatával. Az elemzési függvények által felhasznált memória nem arányos az ablak méretével, hanem az egyes időablakok partíciószámával.
A javítás hasonló az időalapú összekapcsoláshoz. A lekérdezést a PARTITION BY használatával skálázhatja fel.
Rendelésen kívüli puffer
A rendelésen kívüli puffer méretét az Eseményrendezés konfigurációs panelen konfigurálhatja. A puffer az ablak időtartamára tárolja a bemeneteket, és átrendezi őket. A puffer mérete arányos az eseménybemeneti sebesség és a rendelésen kívüli ablak méretének szorzatával. Az alapértelmezett ablakméret 0.
A sorrenden kívüli puffer túlcsordulásának elhárításához skálázza ki a lekérdezést a PARTITION BY használatával. A lekérdezés particionálása után több csomóponton is el van osztva. Ennek eredményeképpen az egyes csomópontokba érkező események száma csökken, ezáltal csökken az egyes átrendező pufferekben lévő események száma.
Bemeneti partíciók száma
Minden feladat bemeneti partíciója rendelkezik pufferrel. Minél nagyobb a bemeneti partíciók száma, annál több erőforrást használ fel a feladat. Az Azure Stream Analytics minden egyes streamegységhez körülbelül 7 MB/s bemenetet képes feldolgozni. Ezért optimalizálhatja a Stream Analytics streamelési egységeinek számát és az eseményközpont partícióinak számát.
Általában egy harmadik streamelési egységgel konfigurált feladat elegendő két partícióval rendelkező eseményközponthoz (ez az eseményközpont minimális értéke). Ha az eseményközpont több partícióval rendelkezik, a Stream Analytics-feladat több erőforrást használ fel, de nem feltétlenül használja az Event Hubs által biztosított többletteljesítményt.
Egy V2-alapú streamelési egységgel rendelkező feladathoz 4 vagy 8 partícióra lehet szükség az eseményközpontból. Kerülje azonban a túl sok szükségtelen partíciót, mivel ezek túlzott erőforrás-használatot okoznak. Például egy 16 partícióval rendelkező vagy annál nagyobb eseményközpont egy Stream Analytics-feladatban, amelynek 1 streamegysége van.
Referenciaadatok
Az Azure Stream Analytics a gyors keresés érdekében betölti a referenciaadatokat a memóriába. Az aktuális implementációval minden referenciaadattal rendelkező illesztési művelet megőrzi a referenciaadatok másolatát a memóriában, még akkor is, ha ugyanazokat a referenciaadatokat többször is összekapcsolja. A PARTITION BY-val rendelkező lekérdezések esetében minden partíció rendelkezik a referenciaadatok egy-egy példányával, így a partíciók teljesen leválasztva vannak. A multiplikátor effektussal a memóriahasználat gyorsan magas lehet, ha több partícióval többször csatlakozik referenciaadatokhoz.
UDF-függvények használata
UDF-függvény hozzáadásakor az Azure Stream Analytics betölti a JavaScript-futtatókörnyezetet a memóriába, ami hatással van a SU%- ra.
Következő lépések
- Párhuzamos lekérdezések létrehozása az Azure Stream Analyticsben
- Az Azure Stream Analytics-feladatok skálázása az átviteli sebesség növelése érdekében
- Azure Stream Analytics-feladatmetrikák
- Az Azure Stream Analytics feladatmetrikáinak dimenziói
- Stream Analytics-feladat monitorozása az Azure Portallal
- Stream Analytics-feladatok teljesítményének elemzése metrikák dimenzióival
- A streamelési egységek ismertetése és módosítása