Apache Spark-alkalmazások optimalizálása a HDInsightban
Ez a cikk áttekintést nyújt az Apache Spark-alkalmazások Azure HDInsighton való optimalizálására vonatkozó stratégiákról.
Áttekintés
Előfordulhat, hogy a gyakori forgatókönyvek alatt szembesül
- Ugyanaz a spark-feladat lassabb, mint korábban ugyanabban a HDInsight-fürtben
- A Spark-feladat lassabb a HDInsight-fürtön, mint a helyszíni vagy más külső szolgáltató
- A spark-feladat lassabb egy HDI-fürtben, mint egy másik HDI-fürtben
Az Apache Spark-feladatok teljesítménye több tényezőtől függ. Ezek a teljesítménytényezők a következők:
- Az adatok tárolása
- A fürt konfigurálása
- Az adatok feldolgozásakor használt műveletek.
- Nem kifogástalan yarn szolgáltatás
- A nem megfelelően méretezendő végrehajtók és az OutOfMemoryError memóriakorlátozásai
- Túl sok vagy túl kevés tevékenység
- Az adateltérés néhány nehéz vagy lassú feladatot okozott
- A tevékenységek lassabban haladnak a rossz csomópontokban
1. lépés: Ellenőrizze, hogy a YARN-szolgáltatás kifogástalan állapotú-e
- Lépjen az Ambari felhasználói felületére:
- Ellenőrizze, hogy a ResourceManager vagy a NodeManager riasztásai
- Ellenőrizze a ResourceManager és a NodeManager állapotát a YARN > ÖSSZEGZÉSében: Az összes NodeManagernek a Kezdőben kell lennie, és csak az Aktív ResourceManagernek kell lennie a Kezdőben
Ellenőrizze, hogy a Yarn felhasználói felülete elérhető-e
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/cluster
Ellenőrizze, hogy vannak-e kivételek vagy hibák a ResourceManager bejelentkezésében
/var/log/hadoop-yarn/yarn/hadoop-yarn-resourcemanager-*.log
További információ a Yarn gyakori problémáiról
2. lépés: Az új alkalmazáserőforrások összehasonlítása a yarn rendelkezésre álló erőforrásaival
Nyissa meg az Ambari felhasználói felületi > YARN > ÖSSZEFOGLALÁSát, ellenőrizze a FÜRT MEMÓRIÁját a ServiceMetricsben
A yarn queue metrikáinak részletes ellenőrzése:
- Lépjen a Yarn felhasználói felületére, és ellenőrizze a Yarn scheduler metrikáit
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/cluster/scheduler
- Másik lehetőségként a Yarn Rest API-val ellenőrizheti a Yarn Scheduler metrikáit. Például:
curl -u "xxxx" -sS -G "https://YOURCLUSTERNAME.azurehdinsight.net/ws/v1/cluster/scheduler"
. Esp esetén tartományadminisztrátori felhasználót kell használnia.
- Az új alkalmazás összes erőforrásának kiszámítása
- Minden végrehajtói erőforrás:
spark.executor.instances * (spark.executor.memory + spark.yarn.executor.memoryOverhead) and spark.executor.instances * spark.executor.cores
. További információ a Spark-végrehajtók konfigurációjáról - ApplicationMaster
- Fürt módban használja
spark.driver.memory
ésspark.driver.cores
- Ügyfél módban használja
spark.yarn.am.memory+spark.yarn.am.memoryOverhead
ésspark.yarn.am.cores
- Fürt módban használja
Feljegyzés
yarn.scheduler.minimum-allocation-mb <= spark.executor.memory+spark.yarn.executor.memoryOverhead <= yarn.scheduler.maximum-allocation-mb
- Az új alkalmazás összes erőforrásának összehasonlítása a megadott üzenetsorban elérhető yarn-erőforrásokkal
3. lépés: Spark-alkalmazás nyomon követése
Az alábbi tüneteket a Spark felhasználói felületén vagy a Spark History felhasználói felületén kell azonosítani:
- Melyik szakasz lassú?
- Teljes végrehajtói PROCESSZOR virtuális magok teljes kihasználtsága az Event-Timeline in Stage (Fázis ) lapon
- Spark SQL használata esetén mi a fizikai terv az SQL lapon?
- A DAG túl hosszú egy fázisban?
- Tevékenységmetrikák (bemeneti méret, shuffle írási méret, GC-idő) megfigyelése a Szakasz lapon
További információ a Spark-alkalmazások monitorozásáról
4. lépés: A Spark-alkalmazás optimalizálása
Számos olyan optimalizálás létezik, amely segíthet leküzdeni ezeket a kihívásokat, például a gyorsítótárazást, és lehetővé teszi az adateltérést.
Az alábbi cikkek mindegyike a Spark-optimalizálás különböző aspektusairól tartalmaz információkat.
- Adattárolás optimalizálása az Apache Sparkhoz
- Adatfeldolgozás optimalizálása az Apache Sparkhoz
- Memóriahasználat optimalizálása az Apache Sparkhoz
- HDInsight-fürtkonfiguráció optimalizálása az Apache Sparkhoz
Spark SQL-partíciók optimalizálása
-
spark.sql.shuffle.partitions
alapértelmezés szerint 200. Az üzleti igényeknek megfelelően módosíthatjuk az illesztések vagy aggregációk adatainak összevonásakor. -
spark.sql.files.maxPartitionBytes
alapértelmezés szerint 1G a HDI-ben. A fájlok olvasása során egyetlen partícióba csomagolható bájtok maximális száma. Ez a konfiguráció csak olyan fájlalapú források használatakor érvényes, mint a Parquet, a JSON és az ORC. - AQE a Spark 3.0-ban. Lásd: Adaptív lekérdezés végrehajtása