Share via


Teljesítményhangolási útmutató a Spark on HDInsighthoz és Azure Data Lake Storage Gen1-hez

A Spark teljesítményének finomhangolásakor figyelembe kell vennie a fürtön futó alkalmazások számát. Alapértelmezés szerint egyszerre négy alkalmazást futtathat a HDI-fürtön (megjegyzés: az alapértelmezett beállítás változhat). Dönthet úgy, hogy kevesebb alkalmazást használ, így felülbírálhatja az alapértelmezett beállításokat, és több fürtöt használhat ezekhez az alkalmazásokhoz.

Előfeltételek

Paraméterek

Spark-feladatok futtatásakor az alábbiak a legfontosabb beállítások, amelyek hangolhatók a teljesítmény növelése érdekében Data Lake Storage Gen1:

  • Num-executors – Az egyidejűleg végrehajtható feladatok száma.

  • Executor-memory – Az egyes végrehajtók számára lefoglalt memória mennyisége.

  • Végrehajtói magok – Az egyes végrehajtók számára lefoglalt magok száma.

Szám-végrehajtók A szám-végrehajtók beállítják a párhuzamosan futtatható tevékenységek maximális számát. A párhuzamosan futtatható tevékenységek tényleges számát a fürtben rendelkezésre álló memória- és CPU-erőforrások határolja.

Végrehajtó memóriája Ez az egyes végrehajtók számára lefoglalt memória mennyisége. Az egyes végrehajtókhoz szükséges memória a feladattól függ. Összetett műveletek esetén a memóriának magasabbnak kell lennie. Az olyan egyszerű műveletek esetében, mint az olvasás és az írás, a memóriakövetelmények alacsonyabbak lesznek. Az egyes végrehajtók memóriamennyisége az Ambariban tekinthető meg. Az Ambariban lépjen a Sparkra, és tekintse meg a Konfigurációk lapot.

Végrehajtó magok Ez beállítja a végrehajtónként használt magok mennyiségét, amely meghatározza, hogy hány párhuzamos szál futtatható végrehajtónként. Ha például a végrehajtó magok = 2, akkor minden végrehajtó 2 párhuzamos feladatot futtathat a végrehajtóban. A szükséges végrehajtói magok a feladattól függenek. Az I/O-feladatok nem igényelnek nagy mennyiségű memóriát feladatonként, hogy az egyes végrehajtók több párhuzamos feladatot tudjanak kezelni.

Alapértelmezés szerint két virtuális YARN-mag van definiálva minden fizikai maghoz a Spark on HDInsight futtatásakor. Ez a szám jó egyensúlyt biztosít az egyidejűség és a több szál közötti környezetváltás mennyiségében.

Útmutató

Miközben Spark-elemzési számítási feladatokat futtat az adatok Data Lake Storage Gen1 való használatához, javasoljuk, hogy a legújabb HDInsight-verziót használja a legjobb teljesítmény eléréséhez Data Lake Storage Gen1. Ha a feladat I/O-igényesebb, akkor bizonyos paraméterek konfigurálhatók a teljesítmény javítása érdekében. Data Lake Storage Gen1 egy nagy mértékben méretezhető tárolóplatform, amely képes kezelni a nagy átviteli sebességet. Ha a feladat főként olvasási vagy írási műveletekből áll, akkor az I/O egyidejűségének növelése Data Lake Storage Gen1 növelheti a teljesítményt.

Az I/O-igényes feladatok egyidejűségének növelésének néhány általános módja van.

1. lépés: Határozza meg, hogy hány alkalmazás fut a fürtön – Tudnia kell, hogy hány alkalmazás fut a fürtön, az aktuálisat is beleértve. Az egyes Spark-beállítások alapértelmezett értékei azt feltételezik, hogy egyszerre 4 alkalmazás fut. Ezért a fürtnek csak 25%-a lesz elérhető az egyes alkalmazásokhoz. A jobb teljesítmény érdekében felülbírálhatja az alapértelmezett értékeket a végrehajtók számának módosításával.

2. lépés: A végrehajtó-memória beállítása – az első beállítás a végrehajtó-memória. A memória a futtatni kívánt feladattól függ. Az egyidejűség növeléséhez kevesebb memóriát kell lefoglalni végrehajtónként. Ha a feladat futtatásakor kevés memóriakivétel jelenik meg, növelje a paraméter értékét. Egy másik lehetőség, ha több memóriát szeretne lekérni egy nagyobb mennyiségű memóriával rendelkező fürt használatával vagy a fürt méretének növelésével. A több memória több végrehajtó használatát teszi lehetővé, ami több egyidejűséget jelent.

3. lépés: Végrehajtó magok beállítása – Az összetett műveletekkel nem rendelkező, I/O-igényes számítási feladatok esetében érdemes nagy számú végrehajtó maggal kezdeni a párhuzamos feladatok számának növeléséhez végrehajtónként. A végrehajtó magok 4-re állítása jó kezdet.

executor-cores = 4

A végrehajtó magok számának növelése több párhuzamosságot eredményez, így kísérletezhet a különböző végrehajtómagokkal. Az összetettebb műveletekkel rendelkező feladatok esetében csökkentenie kell a végrehajtónkénti magok számát. Ha a végrehajtó magok értéke 4-nél magasabb, akkor a szemétgyűjtés nem hatékony és ronthatja a teljesítményt.

4. lépés: A YARN-memória mennyiségének meghatározása a fürtön – Ez az információ az Ambariban érhető el. Lépjen a YARN lapra, és tekintse meg a Contigs lapot. Ebben az ablakban megjelenik a YARN-memória. Figyelje meg, hogy amíg az ablakban van, az alapértelmezett YARN-tárolóméretet is láthatja. A YARN-tároló mérete megegyezik a végrehajtói paraméterenkénti memóriával.

Yarn-memória teljes száma = csomópontok * YARN-memória csomópontonként

5. lépés: Szám-végrehajtók kiszámítása

Memóriakényszer kiszámítása – A num-executors paramétert a memória vagy a PROCESSZOR korlátozza. A memóriakorlátot az alkalmazáshoz rendelkezésre álló YARN-memória mennyisége határozza meg. Vegye ki a YARN teljes memóriáját, és ossza el végrehajtó-memória szerint. A korlátozást az alkalmazások számának skálázásával kell megszüntetni, ezért el kell osztani az alkalmazások számával.

Memóriakorlát = (összes YARN-memória/ végrehajtói memória) / alkalmazások száma

CPU-kényszer kiszámítása – A cpu-korlátozás számítása a virtuális magok teljes számával és a végrehajtónkénti magok számával osztva történik. Minden fizikai maghoz 2 virtuális mag tartozik. A memóriakorláthoz hasonlóan az alkalmazások száma is el van osztva.

virtuális magok = (fürt csomópontjai * a csomópont fizikai magjainak száma * 2) CPU-korlátozás = (összes virtuális mag / magok száma végrehajtónként) / alkalmazások száma

num-executors beállítása – A num-executors paramétert a memóriakorlát és a CPU-kényszer minimális értékének figyelembevételével határozzuk meg.

num-executors = Min (összes virtuális mag / magok száma végrehajtónként, elérhető YARN-memória/végrehajtó-memória) A nagyobb számú num-végrehajtó beállítása nem feltétlenül növeli a teljesítményt. Érdemes megfontolni, hogy további végrehajtók hozzáadása további többletterhelést okoz az egyes további végrehajtók számára, ami csökkentheti a teljesítményt. A Num-executorokat a fürterőforrások kötik össze.

Példaszámítás

Tegyük fel, hogy jelenleg egy 8 D4v2-csomópontból álló fürtje van, amely két alkalmazást futtat, köztük azt, amelyet futtatni fog.

1. lépés: Határozza meg, hogy hány alkalmazás fut a fürtön – tudja, hogy két alkalmazás van a fürtön, köztük a futtatni kívánt alkalmazás is.

2. lépés: A végrehajtó-memória beállítása – ebben a példában azt állapítjuk meg, hogy 6 GB végrehajtó-memória elegendő lesz az I/O-igényes feladatokhoz.

executor-memory = 6GB

3. lépés: Végrehajtó magok beállítása – Mivel ez egy I/O-igényes feladat, az egyes végrehajtók magjainak számát négyre állíthatjuk. Ha végrehajtónként négynél nagyobbra állítja a magokat, az szemétgyűjtési problémákat okozhat.

executor-cores = 4

4. lépés: A YARN-memória mennyiségének meghatározása a fürtön – Az Ambarihoz lépve kiderítjük, hogy minden D4v2 25 GB YARN-memóriával rendelkezik. Mivel 8 csomópont van, a rendelkezésre álló YARN-memória megszorozva 8-tal.

Yarn-memória teljes száma = csomópontok * YARN-memória* csomópontonként Összesen YARN-memória = 8 csomópont * 25 GB = 200 GB

5. lépés: A num-executors kiszámítása – A num-executors paramétert a memóriakorlát minimális értékének és a Sparkon futó alkalmazások számával elosztott CPU-kényszernek a figyelembevételével határozzuk meg.

Memóriakényszer kiszámítása – A memóriakorlátot a rendszer úgy számítja ki, hogy a YARN teljes memóriája el van osztva a végrehajtónkénti memóriával.

Memóriakényszer = (a YARN teljes memóriája / végrehajtói memória) / alkalmazások száma Memóriakorlát = (200 GB / 6 GB) / 2 Memóriakorlát = 16 (kerekítve) CPU-kényszer kiszámítása – A CPU-korlátozás számítása a YARN-magok teljes számának végrehajtónkénti számával osztva történik.

YARN-magok = csomópontok csomópontonként * csomópontonkénti magok száma * 2 YARN-mag = 8 csomópont * 8 mag D14-enként * 2 = 128 CPU-kényszer = (összes YARN mag / magok száma végrehajtónként) / alkalmazások száma CPU-korlátozás = (128 / 4) / 2 CPU-korlátozás = 16

Szám-végrehajtók beállítása

num-executors = Min (memóriakorlátozás, CPU-kényszer) num-executors = Min (16, 16) num-executors = 16