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


Rések a Spark-feladatok között

Így a feladatok ütemtervében az alábbihoz hasonló rések láthatók:

Feladatelmaradások

Ennek több oka is lehet. Ha a rések a számítási feladatra fordított idő nagy részét teszik ki, ki kell derítenie, hogy mi okozza ezeket a réseket, és hogy ez várható-e. Van néhány dolog, ami történhet a rések során:

  • Nincs mit tenni
  • Az illesztőprogram összetett végrehajtási tervet készít
  • Nem spark-kód végrehajtása
  • Az illesztőprogram túlterhelt
  • A fürt hibásan működik

Nincs munka

A teljes körű számítás esetében a rések legvalószínűbb magyarázata, hogy nincs teendője. Mivel a fürt fut, és a felhasználók lekérdezéseket küldenek, rések várhatók. Ezek a hiányosságok a lekérdezésbeküldések közötti idő.

Összetett végrehajtási terv

Ha például hurkot használ withColumn() , az egy nagyon költséges tervet hoz létre a feldolgozáshoz. A hiányosságok lehetnek az az idő, amikor a vezető csak a terv elkészítésével és feldolgozásával tölt. Ha ez a helyzet, próbálja egyszerűsíteni a kódot. Több withColumn() hívás egyetlen kifejezéssé való összevonására vagy a kód SQL-vé alakítására használhatóselectExpr(). Továbbra is beágyazhatja az SQL-t a Python-kódba, a Python használatával pedig sztringfüggvényekkel módosíthatja a lekérdezést. Ez gyakran megoldja az ilyen típusú problémát.

Nem Spark-kód végrehajtása

A Spark-kód vagy SQL-ben van megírva, vagy egy Spark API-val, például a PySparkkal. A nem Spark-kódvégrehajtások hézagként jelennek meg az ütemtervben. Létrehozhat például egy hurkot a Pythonban, amely natív Python-függvényeket hív meg. Ez a kód nem fut a Sparkban, és résként jelenhet meg az ütemtervben. Ha nem biztos abban, hogy a kód a Sparkot futtatja, próbálja meg interaktívan futtatni egy jegyzetfüzetben. Ha a kód a Sparkot használja, a Spark-feladatok a cella alatt jelennek meg:

Spark-végrehajtás

A Spark-feladatok legördülő menüt a cella alatt is kibonthatja, így ellenőrizheti, hogy a feladatok aktívan futnak-e (abban az esetben, ha a Spark tétlen). Ha nem a Sparkot használja, nem fogja látni a Spark-feladatokat a cella alatt, vagy azt fogja látni, hogy egyik sem aktív. Ha nem tudja interaktívan futtatni a kódot, megpróbálhatja bejelentkezni a kódba, és megnézheti, hogy megfelel-e a réseknek a kód szakaszaival időbélyeggel, de ez bonyolult lehet.

Ha nem Spark-kód futtatása miatt hiányosságokat lát az ütemtervben, az azt jelenti, hogy a dolgozók tétlenek, és valószínűleg pénzt pazarolnak a rések során. Lehet, hogy ez szándékos és elkerülhetetlen, de ha meg tudja írni ezt a kódot a Spark használatára, akkor teljes mértékben használni fogja a fürtöt. Kezdje ezzel az oktatóanyaggal, amelyből megtudhatja, hogyan használható a Spark.

Az illesztőprogram túlterhelt

Annak megállapításához, hogy az illesztőprogram túlterhelt-e, meg kell vizsgálnia a fürt metrikáit.

Ha a fürt a DBR 13.0-s vagy újabb verziójában van, kattintson a Képernyőképen kiemelt Metrikák elemre:

Új fürtmetrikák

Figyelje meg a kiszolgáló terheléselosztási vizualizációt. Meg kell vizsgálnia, hogy az illesztőprogram nagy terhelést mutat-e. Ez a vizualizáció színblokkot tartalmaz a fürt minden egyes gépéhez. A piros azt jelenti, hogy erősen betöltött, a kék pedig azt jelenti, hogy egyáltalán nem töltődik be.

Az előző képernyőképen egy alapvetően tétlen fürt látható. Ha az illesztőprogram túlterhelt, az a következőképpen nézne ki:

Új metrikák, foglalt illesztőprogram

Láthatjuk, hogy az egyik négyzet piros, míg a többi kék. Vigye az egérmutatót a piros négyzet fölé, és győződjön meg arról, hogy a piros blokk az illesztőprogramot jelöli.

A túlterhelt illesztőprogramok kijavításához lásd : Spark-illesztőprogram túlterhelt.

Disztribúció megtekintése örökölt Ganglia-metrikákkal

Ha a fürt a DBR 12.x vagy korábbi verzióján van, kattintson a Metrikák elemre, és a Ganglia felhasználói felületére a képernyőképen kiemelt módon:

A Ganglia megnyitása

Ha a fürt már nem fut, megnyithatja az előzmény pillanatképek egyikét. Tekintse meg a kiszolgálói terheléselosztás vizualizációt, amely piros színnel van kiemelve:

Kiszolgálói terheléselosztás Gangliában

Meg kell vizsgálnia, hogy az illesztőprogram nagy terhelést mutat-e. Ez a vizualizáció színblokkot tartalmaz a fürt minden egyes gépéhez. A piros azt jelenti, hogy erősen betöltött, a kék pedig azt jelenti, hogy egyáltalán nem töltődik be. A fenti eloszlás egy alapvetően tétlen fürtöt mutat. Ha az illesztőprogram túlterhelt, az a következőképpen nézne ki:

Túlterhelt sofőr Gangliában

Láthatjuk, hogy az egyik négyzet piros, míg a többi kék. Legyen óvatos, ha csak egy feldolgozója van. Győződjön meg arról, hogy a piros blokk az illesztőprogram, nem pedig a feldolgozó.

A túlterhelt illesztőprogramok kijavításához lásd : Spark-illesztőprogram túlterhelt.

A fürt hibásan működik

A hibás fürtök ritkák, de ha ez a helyzet, nehéz lehet megállapítani, hogy mi történt. Lehet, hogy csak újra szeretné indítani a fürtöt, hogy lássa, ez megoldja-e a problémát. A naplókban azt is megnézheti, hogy van-e gyanús dolog. Az alábbi képernyőképen kiemelt Eseménynapló lap és Illesztőprogram-naplók lap a következő helyeken tekinthető meg:

Illesztőprogram-naplók lekérése

Előfordulhat, hogy engedélyezni szeretné a fürtnaplók kézbesítését a feldolgozók naplóinak eléréséhez. A naplószintet is módosíthatja, de előfordulhat, hogy segítségre van szüksége a Databricks-fiók csapatához.