Megosztás a következőn keresztül:


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

  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: Az összes NodeManagernek a Kezdőben kell lennie, és csak az Aktív ResourceManagernek kell lennie a Kezdőben
  1. Ellenőrizze, hogy a Yarn felhasználói felülete elérhető-e 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ó 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

  1. Nyissa meg az Ambari felhasználói felületi > YARN > ÖSSZEFOGLALÁSát, ellenőrizze a FÜRT MEMÓRIÁját a ServiceMetricsben

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

Feljegyzé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 üzenetsorban elérhető yarn-erőforrásokkal

3. lépés: Spark-alkalmazás nyomon követése

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

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

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

Következő lépések