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

  1. 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
  1. 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

  2. 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

  1. 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

  2. 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.
  1. 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 a spark.driver.cores
    • Ügyfél módban használja spark.yarn.am.memory+spark.yarn.am.memoryOverhead a és a spark.yarn.am.cores

Megjegyzés

yarn.scheduler.minimum-allocation-mb <= spark.executor.memory+spark.yarn.executor.memoryOverhead <= yarn.scheduler.maximum-allocation-mb

  1. 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

  1. A spark-alkalmazás monitorozása a Spark felhasználói felületén keresztül

  2. A teljes vagy hiányos Spark-alkalmazás monitorozása a Spark History Server felhasználói felületén keresztül

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.

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

Következő lépések