Megosztás a következőn keresztül:


Azure HDInsight Interaktív lekérdezési fürt (Hive LLAP) méretezési útmutatója

Ez a dokumentum a HDInsight interaktív lekérdezési fürt (Hive LLAP-fürt) méretezését ismerteti egy tipikus számítási feladathoz az ésszerű teljesítmény elérése érdekében. Vegye figyelembe, hogy a dokumentumban szereplő javaslatok általános irányelvek, és adott számítási feladatokhoz speciális hangolásra lehet szükség.

Azure alapértelmezett virtuálisgép-típusok a HDInsight interaktív lekérdezésfürthöz (LLAP)

Csomóponttípus Példány Méret
Head D13 v2 8 vcpus, 56 GB RAM, 400 GB SSD
Dolgozó D14 v2 16 vcpus, 112 GB RAM, 800 GB SSD
ZooKeeper A4 v2 4 vcpus, 8 GB RAM, 40 GB SSD

Megjegyzés: Minden ajánlott konfigurációs érték a D14 v2 típusú feldolgozó csomóponton alapul

Configuration:

Konfigurációs kulcs Javasolt érték Leírás
yarn.nodemanager.resource.memory-mb 102400 (MB) A csomópont összes YARN-tárolójának mb-ban megadott teljes memóriája
yarn.scheduler.maximum-allocation-mb 102400 (MB) Az RM-ben található összes tárolókérés maximális lefoglalása az MB-kben. Az ennél az értéknél nagyobb memóriakérelmek nem lépnek érvénybe
yarn.scheduler.maximum-allocation-vcores 12 A Cpu-magok maximális száma minden tárolókéréshez a Resource Managerben. Az ennél magasabb kérelmek nem lépnek érvénybe.
yarn.nodemanager.resource.cpu-vcores 12 A tárolókhoz lefoglalható cpu-magok száma NodeManagerenként.
yarn.scheduler.capacity.root.llap.capacity 85 (%) YARN-kapacitásfoglalás LLAP-üzenetsorhoz
tez.am.resource.memory.mb 4096 (MB) A tez AppMaster által használandó memória mennyisége MB-ban
hive.server2.tez.sessions.per.default.queue <number_of_worker_nodes> A hive.server2.tez.default.queues nevű üzenetsorok munkameneteinek száma. Ez a szám a lekérdezéskoordinátorok (Tez AM-ek) számának felel meg
hive.tez.container.size 4096 (MB) Megadott Tez-tárolóméret MB-ban
hive.llap.daemon.num.executors 19 Végrehajtók száma LLAP-démononként
hive.llap.io.threadpool.size 19 Szálkészlet mérete végrehajtók számára
hive.llap.daemon.yarn.container.mb 81920 (MB) Az egyes LLAP-démonok által használt MB-beli teljes memória (démononkénti memória)
hive.llap.io.memory.size 242688 (MB) Gyorsítótár mérete MB-ban LLAP-démononként, ha az SSD-gyorsítótár engedélyezve van
hive.auto.convert.join.noconditionaltask.size 2048 (MB) memóriaméret MB-ban a map join használatához

LLAP-architektúra/összetevők:

'LLAP-architektúra/összetevők'.

LLAP Démonméret-becslések:

1. A YARN teljes memóriafoglalásának meghatározása a csomóponton lévő összes tárolóhoz

Konfiguráció: yarn.nodemanager.resource.memory-mb

Ez az érték mb-ban megadott maximális memóriaösszeget jelez, amelyet az egyes csomópontokon lévő YARN-tárolók használhatnak. A megadott értéknek kisebbnek kell lennie, mint az adott csomóponton található fizikai memória teljes mennyisége.
A csomópont összes YARN-tárolójának teljes memóriája = (Teljes fizikai memória – operációs rendszer és egyéb szolgáltatások memóriája)
Állítsa ezt az értéket a rendelkezésre álló RAM-méret ~90%-ára.
D14 v2 esetén az ajánlott érték 102400 MB

2. A YARN-tárolókra vonatkozó kérések maximális memóriamennyiségének meghatározása

Konfiguráció: yarn.scheduler.maximum-allocation-mb

Ez az érték a Resource Managernél található minden tárolókérés maximális allokációját jelzi MB-ban. A megadott értéknél nagyobb memóriakérelmek nem lépnek érvénybe. A Resource Manager képes memóriát adni a tárolóknak a yarn.scheduler.minimum-allocation-mb lépésekben, és nem haladhatja meg a yarn.scheduler.maximum-allocation-mb által megadott méretet. A megadott érték nem lehet nagyobb, mint a yarn.nodemanager.resource.memory-mb által megadott csomópont összes tárolójának teljes memóriája.
D14 v2 munkavégző csomópontok esetén a javasolt érték 102400 MB

3. A YARN-tárolókra vonatkozó kérelem maximális mennyiségének vcores meghatározása

Konfiguráció: yarn.scheduler.maximum-allocation-vcores

Ez az érték a virtuális CPU-magok maximális számát jelzi a Resource Managernél található minden tárolókéréshez. Ha nagyobb számot vcores kér, akkor ez az érték nem lép érvénybe. Ez a YARN ütemező globális tulajdonsága. AZ LLAP démontároló esetében ez az érték az összes elérhető vcoresérték 75%-ára állítható be. A fennmaradó 25%-ot a NodeManager, a DataNode és a feldolgozó csomópontokon futó egyéb szolgáltatások számára kell fenntartani.
16 vcores A D14 v2 virtuális gépeken az összesítés 16 vcores 75%-át használhatja az LLAP démontároló.
D14 v2 esetén a javasolt érték 12.

4. Egyidejű lekérdezések száma

Konfiguráció: hive.server2.tez.sessions.per.default.queue

Ez a konfigurációs érték határozza meg a párhuzamosan indítható Tez-munkamenetek számát. Ezek a Tez-munkamenetek a "hive.server2.tez.default.queues" által megadott egyes üzenetsorokhoz indulnak el. Ez a Tez AM-ek (lekérdezéskoordinátorok) számának felel meg. Javasoljuk, hogy a munkavégző csomópontok számával megegyező legyen. A Tez AM-ek száma magasabb lehet, mint az LLAP démoncsomópontok száma. A Tez AM elsődleges feladata a lekérdezés végrehajtásának koordinálása és a lekérdezésterv-töredékek hozzárendelése a megfelelő LLAP-démonokhoz a végrehajtáshoz. Tartsa ezt az értéket több LLAP-démoncsomópont többszöröseként a nagyobb átviteli sebesség elérése érdekében.

Az alapértelmezett HDInsight-fürt négy LLAP-démont futtat négy feldolgozó csomóponton, ezért a javasolt érték 4.

Ambari felhasználói felület csúszka a Hive konfigurációs változójához hive.server2.tez.sessions.per.default.queue:

5. Tez Tároló és Tez alkalmazás fő mérete

Konfiguráció: tez.am.resource.memory.mb, hive.tez.container.size

tez.am.resource.memory.mb – a Tez-alkalmazás főkiszolgálójának méretét határozza meg.
Az ajánlott érték 4096 MB.

hive.tez.container.size – a Tez-tárolóhoz megadott memória mennyiségét határozza meg. Ezt az értéket a YARN minimális konténermérete (yarn.scheduler.minimum-allocation-mb) és a YARN maximális konténermérete (yarn.scheduler.maximum-allocation-mb) között kell megadni. Az LLAP démon végrehajtói ezt az értéket használják a memóriahasználat végrehajtónkénti korlátozására.
Az ajánlott érték 4096 MB.

6. LLAP-üzenetsor kapacitásfoglalása

Konfiguráció: yarn.scheduler.capacity.root.llap.capacity

Ez az érték az LLAP üzenetsornak adott kapacitás százalékos arányát jelzi. A kapacitáskiosztások különböző értékeket vehetnek fel a különböző munkaterhelések esetében a YARN-üzenetsorok konfigurálásának módjától függően. Ha a munkaterhelés csak olvasási műveletekből áll, akkor a kapacitás 90%-ának megfelelő értéket kell beállítania. Ha azonban a munkaterhelés vegyesen tartalmaz frissítési/törlési/egyesítési műveleteket felügyelt táblák használatával, akkor ajánlott a kapacitás 85%-át az LLAP-üzenetsornak adni. A fennmaradó 15%-os kapacitást más feladatok, például tömörítés stb. használhatják a konténerek alapértelmezett üzenetsorból való lefoglalásához. Így az alapértelmezett üzenetsorban lévő tevékenységek nem vonják el a YARN-erőforrásokat.

D14v2 munkavégző csomópontok esetén az LLAP-üzenetsor ajánlott értéke 85.
(Az írásvédett számítási feladatok esetében akár 90-re is növelhető, ha megfelelő.)

7. LLAP démontároló mérete

Konfiguráció: hive.llap.daemon.yarn.container.mb

Az LLAP démon minden munkavégző csomóponton YARN-tárolóként fut. Az LLAP démontároló teljes memóriamérete a következő tényezőktől függ:

  • YARN tárolóméret konfigurációi (yarn.scheduler.minimum-allocation-mb, yarn.scheduler.maximum-allocation-mb, yarn.nodemanager.resource.memory-mb)
  • Csomóponton lévő Tez AM-ek száma
  • A csomóponton lévő összes tárolóhoz és az LLAP-üzenetsor kapacitásához konfigurált teljes memória

A Tez Application Masters (Tez AM) által igényelt memória az alábbiak szerint számítható ki.
A Tez AM lekérdezéskoordinátorként működik, és a Tez AM-eket számos egyidejűleg kiszolgálandó lekérdezés alapján kell konfigurálni. Elméletileg munkavégző csomópontonként egy Tez AM-t vehetünk figyelembe. Előfordulhat azonban, hogy egy munkavégző csomóponton egynél több Tez AM jelenik meg. Számítási célból feltételezzük, hogy a Tez AM-eknek egységes eloszlása van az összes LLAP démoncsomóponton/feldolgozó csomóponton. Tez AM-enként 4 GB memória használata javasolt.

Tez Ams = a Hive config hive.server2.tez.sessions.per.default.queue által megadott érték.
LLAP démoncsomópontok száma = az env változó által megadott num_llap_nodes_for_llap_daemons az Ambari felhasználói felületén.
Tez AM tárolóméret = a Tez config tez.am.resource.memory.mb által megadott érték.

Tez AM memória csomópontonként = (ceil(Tez AM-ek / száma LLAP démoncsomópontok száma) x Tez AM tárolóméret**)**
A D14 v2 esetében az alapértelmezett konfiguráció négy Tez AM-et és négy LLAP démoncsomópontot biztosít.
Tez AM memória csomópontonként = (ceil(4/4) x 4 GB) = 4 GB

A munkavégző csomópontonkénti LLAP-üzenetsorhoz rendelkezésre álló teljes memória a következőképpen számítható ki:
Ez az érték a csomópont összes YARN-tárolójának rendelkezésre álló memóriájától (yarn.nodemanager.resource.memory-mb) és az LLAP-üzenetsorhoz (yarn.scheduler.capacity.root.llap.capacity) konfigurált kapacitás százalékától függ.
Az LLAP-üzenetsor teljes memóriája a feldolgozó csomóponton = A csomópont összes YARN-tárolójának teljes memóriája x Az LLAP-üzenetsor kapacitásának százalékos aránya.
D14 v2 esetén ez az érték (100 GB x 0,85) = 85 GB.

Az LLAP démontároló méretét a következőképpen számítjuk ki;

LLAP démontároló mérete = (A feldolgozó csomópontON lévő LLAP-üzenetsor teljes memóriája) – (Tez AM memória csomópontonként) – (Szolgáltatás fő tárolómérete)
A fürtben csak egy szolgáltatásnév (LLAP-szolgáltatáshoz készült alkalmazásminta) található, amely az egyik feldolgozó csomóponton ívik. Számítási célra feldolgozó csomópontonként egy szolgáltatás-főkiszolgálót veszünk figyelembe.
D14 v2 feldolgozó csomópont esetén HDI 4.0 – a javasolt érték (85 GB – 4 GB – 1 GB)) = 80 GB

8. A végrehajtók számának meghatározása LLAP-démononként

Konfiguráció: hive.llap.daemon.num.executors, hive.llap.io.threadpool.size

hive.llap.daemon.num.executors:
Ez a konfiguráció szabályozza a feladatokat párhuzamosan végrehajtó programok számát LLAP-démononként. Ez az érték a virtuális magok számától, a végrehajtónként használt memória mennyiségétől és az LLAP démon konténeréhez rendelkezésre álló teljes memória mennyiségétől függ. A végrehajtók száma a munkavégző csomópontonkénti elérhető virtuális magok 120%-ára túlírható. Azonban módosítani kell, ha nem felel meg a memóriakövetelményeknek a végrehajtónként szükséges memória és az LLAP démontároló mérete alapján.

Minden végrehajtó egy Tez konténernek felel meg, és 4 GB (Tez-konténer mérete) memóriát képes felhasználni. Az LLAP-démon összes végrehajtója ugyanazt a halommemóriát használja. Feltételezve, hogy nem minden végrehajtó futtat egyszerre memóriaigényes műveleteket, a Tez konténer méretének (4 GB) 75%-át tekinthetjük szükségesnek végrehajtónként. Így növelhető a végrehajtók száma úgy, hogy az egyes végrehajtóknak kevesebb memóriát (például 3 GB-ot) adunk a nagyobb párhuzamosság érdekében. Javasoljuk azonban, hogy ezt a beállítást a célterheléshez hangolja.

A D14 v2 virtuális gépeken 16 virtuális mag található. D14 v2 esetén a végrehajtók számának ajánlott értéke (16 virtuális mag x 120%) ~= 19 minden feldolgozó csomóponton, végrehajtónként 3 GB-ot figyelembe véve.

hive.llap.io.threadpool.size:
Ez az érték határozza meg a végrehajtók szálkészletének méretét. Mivel a végrehajtók száma rögzített, ez megegyezik az LLAP-démononkénti végrehajtók számával.
D14 v2 esetén a javasolt érték 19.

9. Az LLAP démongyorsítótár méretének meghatározása

Konfiguráció: hive.llap.io.memory.size

Az LLAP démontároló memóriája a következő összetevőkből áll;

  • Fejszoba
  • Végrehajtók által használt halommemória (Xmx)
  • Memóriabeli gyorsítótár démononként (a halomon kívüli memória mérete nem alkalmazható, ha az SSD-gyorsítótár engedélyezve van)
  • Memóriabeli gyorsítótár metaadatainak mérete (csak akkor alkalmazható, ha az SSD-gyorsítótár engedélyezve van)

Fejtér mérete: Ez a méret a Java virtuális gépek többletterheléséhez (metatér, szálverem, gc adatstruktúrák stb.) használt halommemória egy részét jelzi. Ez a többletterhelés általában a halommemória méretének (Xmx) körülbelül 6%-a. A biztonságosabb oldalon ez az érték a teljes LLAP démon memóriaméretének 6%-aként számítható ki.
D14 v2 esetén a javasolt érték ceil(80 GB x 0,06) ~= 4 GB.

Halomméret (Xmx): Az összes végrehajtó számára rendelkezésre álló halommemória. Halommemória teljes mérete = Végrehajtók száma x 3 GB
D14 v2 esetén ez az érték 19 x 3 GB = 57 GB

Ambari environment variable for LLAP heap size:

'LLAP-halomméret'.

Ha az SSD gyorsítótár le van tiltva, a memórián belüli gyorsítótár az a memóriamennyiség, amely a szabad terület és a halommemória méretének a LLAP-démon konténerméretéből történő kivonása után megmarad.

A gyorsítótár méretének kiszámítása akkor változik, ha az SSD-gyorsítótár engedélyezve van. A hive.llap.io.allocator.mmap = true beállítás lehetővé teszi az SSD gyorsítótárazását. Ha az SSD-gyorsítótár engedélyezve van, a memória egy része az SSD-gyorsítótár metaadatainak tárolására szolgál. A metaadatok a memóriában vannak tárolva, és várhatóan az SSD-gyorsítótár méretének ~8%-át foglalják el.
SSD-gyorsítótár memórián belüli metaadatok mérete = LLAP démon konténer mérete – (szabad terület + halommemória mérete)
D14 v2 esetén a HDI 4.0-val az SSD-gyorsítótár memóriabeli metaadatainak mérete = 80 GB – (4 GB + 57 GB) = 19 GB

Az SSD-gyorsítótár metaadatainak tárolására rendelkezésre álló memória mérete alapján kiszámíthatjuk a támogatott SSD-gyorsítótár méretét.
SSD-gyorsítótár memórián belüli metaadatainak mérete = LLAP-démon konténermérete – (szabad terület + halommemória mérete) = 19 GB
SSD-gyorsítótár mérete = SSD-gyorsítótár memórián belüli metaadatainak mérete (19 GB) / 0,08 (8 százalék)

D14 v2 és HDI 4.0 esetén az ajánlott SSD-gyorsítótár mérete = 19 GB / 0,08 ~= 237 GB

10. A Map Join memória beállítása

Konfiguráció: hive.auto.convert.join.noconditionaltask.size

Győződjön meg arról, hogy a paraméter érvénybe lépéséhez engedélyezve van a hive.auto.convert.join.noconditionaltask . Ez a konfiguráció határozza meg a MapJoin Hive-optimalizáló általi kiválasztásának küszöbértékét, amely úgy véli, hogy a memória más végrehajtóktól való túljelentkezése több helyet biztosít a memórián belüli kivonattáblák számára, hogy több térképcsatlakozási konverziót lehessen lehetővé tenni. A végrehajtónkénti 3 GB-ot figyelembe véve ez a méret 3 GB-ra túlírható, de a többi művelet is használhatja a halommemóriát a rendezési pufferekhez, a shuffle pufferekhez stb.
A D14 v2 esetében tehát a végrehajtónkénti 3 GB memóriával ajánlott ezt az értéket 2048 MB-ra állítani.

(Megjegyzés: Ehhez az értékhez szükség lehet a számítási feladatokhoz megfelelő módosításokra. Ha túl alacsonyra állítja ezt az értéket, előfordulhat, hogy nem használja az automatikus konvertálási funkciót. A túl magas beállítás memóriakivételeket vagy GC-szüneteket eredményezhet, amelyek kedvezőtlen teljesítményt eredményezhetnek.)

11. LLAP-démonok száma

Ambari környezeti változók: num_llap_nodes, num_llap_nodes_for_llap_daemons

num_llap_nodes – a Hive LLAP szolgáltatás által használt csomópontok számát adja meg, beleértve az LLAP-démont, az LLAP szolgáltatás főkiszolgálóját és a Tez Application Master(Tez AM) rendszert futtató csomópontokat.


num_llap_nodes_for_llap_daemons – megadott számú csomópont, amelyet csak LLAP-démonokhoz használnak. Az LLAP démontároló méretei a maximálisan illeszkedő csomópontra vannak beállítva, ezért minden csomóponton egy llap démont eredményez.

Javasoljuk, hogy mindkét érték ugyanaz legyen, mint az Interaktív lekérdezésfürt feldolgozó csomópontjainak száma.

A számítási feladatok kezelésével kapcsolatos szempontok

Ha engedélyezni szeretné a számítási feladatok kezelését az LLAP-hoz, győződjön meg arról, hogy elegendő kapacitást foglal le ahhoz, hogy a számítási feladatok kezelése a várt módon működjön. A számítási feladatok kezeléséhez egyéni YARN-üzenetsort kell konfigurálnia llap , amely az üzenetsor mellett van. Győződjön meg arról, hogy a teljes fürterőforrás-kapacitást elosztja a várólista és a munkaterhelés-kezelési üzenetsor között llap a számítási feladatokra vonatkozó követelményeknek megfelelően. A számítási feladatok kezelése a Tez Application Masters (Tez AM)-eket aktiválja egy erőforrásterv aktiválásakor.

Megjegyzés:

  • Az erőforrásterv aktiválásával létrehozott Tez AM-k a számítási feladatok kezelési üzenetsorából származó erőforrásokat használnak fel a megadottak szerint hive.server2.tez.interactive.queue.
  • A Tez AM-ek száma az erőforrástervben megadott értéktől QUERY_PARALLELISM függ.
  • Ha a számítási feladatok kezelése aktív, a rendszer nem fogja használni az LLAP-üzenetsorban lévő Tez AM-eket. A lekérdezéskoordinációhoz csak a számítási feladatok felügyeleti üzenetsorából származó Tez AM-eket használja a rendszer. Az üzenetsorban lévő Tez AM-eket akkor használja a llap rendszer, ha a számítási feladatok kezelése le van tiltva.

Például: Teljes fürtkapacitás = 100 GB memória, az LLAP, a Számítási feladatok kezelése és az Alapértelmezett üzenetsorok között az alábbiak szerint osztva:

  • LLAP-üzenetsor kapacitása = 70 GB
  • Számítási feladatok kezelési üzenetsorának kapacitása = 20 GB
  • Alapértelmezett üzenetsor-kapacitás = 10 GB

A munkaterhelés-kezelési üzenetsor kapacitásában 20 GB-os erőforráscsomag öt értéket adhat meg QUERY_PARALLELISM , ami azt jelenti, hogy a számítási feladatok kezelése öt, egyenként 4 GB-os tárolóméretű Tez AM-et indíthat el. Ha QUERY_PARALLELISM nagyobb, mint a kapacitás, előfordulhat, hogy egyes Tez AM-ek leállnak az állapotukból ACCEPTED . A Hive Server 2 Interactive nem tud lekérdezéstöredékeket küldeni a nem állapotban lévő RUNNING Tez AM-eknek.

Következő lépések

Ha az értékek beállítása nem oldotta meg a problémát, látogasson el az alábbiak egyikére...