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
- Egy Azure-előfizetés. Lásd: Ingyenes Azure-fiók létrehozása.
- Egy Azure Data Lake Storage Gen1-fiók. A létrehozással kapcsolatos utasításokért lásd: Első lépések az 1. generációs Azure Data Lake Storage
- Azure HDInsight-fürt egy Data Lake Storage Gen1-fiókhoz való hozzáféréssel. Lásd: HDInsight-fürt létrehozása Data Lake Storage Gen1. Győződjön meg arról, hogy engedélyezte a távoli asztalt a fürthöz.
- Spark-fürt futtatása Data Lake Storage Gen1. További információ: Adatok elemzése a HDInsight Spark-fürtön Data Lake Storage Gen1
- Teljesítményhangolási irányelvek Data Lake Storage Gen1. Általános teljesítményfogalmakért lásd: Data Lake Storage Gen1 teljesítményhangolási útmutató
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