Apache Spark-alkalmazások optimalizálása a HDInsightban
Ez a cikk áttekintést nyújt az Apache Spark-alkalmazások Azure HDInsighton történő optimalizálására vonatkozó stratégiákról.
Áttekintés
Az alábbi gyakori forgatókönyvekkel szembesülhet:
- 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ási módja
- A fürt konfigurálása
- Az adatok feldolgozásakor használt műveletek.
- Nem kifogástalan állapotú Yarn-szolgáltatás
- Memóriakorlátozások a nem megfelelően méretezett végrehajtók és az OutOfMemoryError miatt
- 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 lassabbak 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: Minden NodeManagernek a Started (Elindítva) állapotban kell lennie, és csak az Active ResourceManagernek kell lennie a Started (Elindítva) állapotban
Ellenőrizze, hogy a Yarn felhasználói felülete elérhető-e a következőn keresztül:
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ó: Yarn – Gyakori problémák
2. lépés: Az új alkalmazáserőforrások összehasonlítása az elérhető Yarn-erőforrásokkal
Lépjen az Ambari UI YARN > SUMMARY (Ambari felhasználói felületÉNEK > ÖSSZEGZÉSe) területre, és ellenőrizze a FÜRTMEMÓRIA elemet a ServiceMetricsben
A yarn-üzenetsor 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 a következőn keresztül:
https://YOURCLUSTERNAME.azurehdinsight.net/yarnui/hn/cluster/scheduler
- Másik lehetőségként a Yarn Rest API-val is 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
- Az összes 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ában - ApplicationMaster
- Fürt módban használja
spark.driver.memory
a és aspark.driver.cores
- Ügyfél módban használja
spark.yarn.am.memory+spark.yarn.am.memoryOverhead
a és aspark.yarn.am.cores
- Fürt módban használja
Megjegyzé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 várólistán elérhető Yarn-erőforrásokkal
3. lépés: A Spark-alkalmazás nyomon követése
Az alábbi tüneteket a Spark felhasználói felületén vagy a Spark-előzmények felhasználói felületén kell azonosítani:
- Melyik szakasz lassú?
- A teljes végrehajtói PROCESSZOR virtuális mag kihasználtsága teljes mértékben Event-Timeline a 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égek metrikáinak (bemeneti méret, elosztási írási méret, GC-idő) megfigyelése a Fázis lapon
További információ: A Spark-alkalmazások monitorozása
4. lépés: A Spark-alkalmazás optimalizálása
Számos optimalizálás 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
- Az Apache Spark memóriahasználatának optimalizálása
- HDInsight-fürtkonfiguráció optimalizálása az Apache Sparkhoz
Spark SQL-partíciók optimalizálása
-
spark.sql.shuffle.paritions
alapértelmezés szerint 200. Az adatok illesztések vagy összesítések elosztásakor az üzleti igényeknek megfelelően módosíthatók. -
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 fájlalapú források, például Parquet, JSON és ORC használatakor érvényes. - AQE a Spark 3.0-ban. Lásd: Adaptív lekérdezés-végrehajtás