ez a dokumentum rövid áttekintést ad arról, hogy a Spark hogyan működik a fürtökön, hogy megkönnyítse az érintett összetevők megértését. Olvassa el az alkalmazás benyújtási útmutatójáthogy megismerje az alkalmazások klaszteren történő elindítását.
a Spark alkalmazások független folyamatkészletként futnak egy fürtön, amelyet a főprogram SparkContext
objektuma koordinál (az úgynevezett illesztőprogram-program).
pontosabban, a fürt futtatásához a SparkContext többféle fürtkezelőhöz csatlakozhat(akár a Spark saját önálló fürtkezelőjéhez, akár a Mesos-hoz vagy a YARN-hoz), amelyek erőforrásokat allokálnak az alkalmazások között. A csatlakozás után a Spark végrehajtókat szerez be a fürt csomópontjain, amelyek számításokat futtatnak és adatokat tárolnak az alkalmazás számára.Ezután elküldi az alkalmazás kódját (amelyet a SPARKCONTEXT-nek átadott jar vagy Python fájlok határoznak meg) a végrehajtóknak. Végül a SparkContext feladatokat küld a végrehajtóknak futtatásra.
számos hasznos dolgot kell megjegyezni erről az architektúráról:
- minden alkalmazás megkapja a saját végrehajtó folyamatait, amelyek a wholeapplication időtartamára fennmaradnak, és több szálon futtatják a feladatokat. Ennek az az előnye, hogy elkülöníti az alkalmazásokategymástól, mind az ütemezési oldalon (minden illesztőprogram ütemezi a saját feladatait), mind az executorside (a különböző alkalmazásokból származó feladatok különböző JVM-ekben futnak). Ez azonban azt is jelenti, hogyaz adatok nem oszthatók meg a különböző Spark alkalmazások (a SparkContext példányai) között anélkül, hogy külső tárolórendszerbe írnák őket.
- a Spark agnosztikus az alapul szolgáló klaszterkezelővel szemben. Mindaddig, amíg meg tudja szerezni az executorprocesseket, és ezek kommunikálnak egymással, viszonylag könnyű futtatni még az acluster manager-en is, amely más alkalmazásokat is támogat (pl. Mesos/YARN).
- az illesztőprogram-programnak egész életében figyelnie és fogadnia kell a végrehajtóktól érkező bejövő kapcsolatokat (pl.sofőr.port a hálózati konfigurációbanszakasz). Mint ilyen, az illesztőprogram programnak hálózatnak kell lenniea munkavállalói csomópontokból kezelhető.
- mivel az illesztőprogram ütemezi a fürtön lévő feladatokat, azt a workernodes közelében kell futtatni, lehetőleg ugyanazon a helyi hálózaton. Ha távolról szeretne kéréseket küldeni a clusternek, akkor jobb, ha megnyit egy RPC-t az illesztőprogramnak, és a közelben küldi el a műveleteket, mint ha az illesztőprogramot a dolgozó csomópontoktól távol futtatja.
Klaszterkezelő típusok
a rendszer jelenleg több klaszterkezelőt támogat:
- önálló – egy egyszerű cluster manager tartalmazza Spark, amely megkönnyíti, hogy hozzanak létre egy fürt.
- Apache Mesos – általános klaszterkezelő, amely Hadoop MapReduceand szolgáltatási alkalmazásokat is futtathat.
- Hadoop fonal – az erőforrás-kezelő a Hadoop 2-ben.
- Kubernetes – nyílt forráskódú rendszer a konténeres alkalmazások telepítésének, méretezésének és kezelésének automatizálására.
egy harmadik féltől származó projekt (amelyet a Spark projekt nem támogat) létezik a fornomad támogatásának klaszterkezelőként történő hozzáadásához.
Alkalmazások benyújtása
az alkalmazások bármilyen típusú klaszterbe benyújthatók a spark-submit
szkript használatával.A jelentkezési útmutató leírja, hogyan kell ezt megtenni.
monitorozás
minden illesztőprogram-programnak van egy webes felhasználói felülete, jellemzően a 4040-es porton, amely információkat jelenít meg a futási feladatokról, a végrehajtókról és a tárhelyhasználatról. Egyszerűen menjen a egy webböngészőben, hogyelérje ezt a felhasználói felületet. A megfigyelési útmutató más megfigyelési lehetőségeket is ismertet.
Job Scheduling
a Spark lehetővé teszi az erőforrás-allokáció ellenőrzését mind az alkalmazások között (a clustermanager szintjén), mind az alkalmazásokon belül (ha több számítás történik ugyanazon a SparkContext-en).A feladatütemezés áttekintése ezt részletesebben leírja.
Szójegyzék
az alábbi táblázat összefoglalja a klaszterfogalmakra hivatkozó kifejezéseket:
kifejezés | jelentése |
---|---|
alkalmazás | felhasználói program épül Spark. Egy illesztőprogram-programból és a fürt végrehajtóiból áll. |
Application jar | a felhasználó Spark alkalmazását tartalmazó jar. Bizonyos esetekben a felhasználók létre akarnak hozni egy” uber jar ” – ot, amely tartalmazza az alkalmazásukat a függőségeivel együtt. A felhasználó jar soha nem tartalmazhat Hadoop vagy Spark könyvtárak, azonban, ezek hozzá futásidőben. |
Driver program | az alkalmazás fő () funkciójának futtatása és a SparkContext létrehozása |
Klaszterkezelő | külső szolgáltatás a klaszter erőforrásainak megszerzéséhez (pl. önálló menedzser, Mesos, fonal) |
telepítési mód | megkülönbözteti az illesztőprogram folyamatának helyét. “Fürt” módban a keretrendszer elindítja az illesztőprogramot a fürt belsejében. “Kliens” módban a beküldő elindítja az illesztőprogramot a fürtön kívül. |
Worker node | bármely csomópont, amely képes alkalmazáskódot futtatni a fürtben |
Executor | egy folyamat elindított egy alkalmazás egy worker csomópont, amely fut a feladatokat, és tárolja az adatokat a memóriában vagy lemez tároló rajtuk keresztül. Minden alkalmazásnak saját végrehajtói vannak. |
feladat | egy végrehajtónak elküldendő munkaegység |
Job | több feladatból álló párhuzamos számítás, amely egy Spark műveletre válaszul születik (pl. save , collect ); látni fogja ezt a kifejezést a vezető naplóiban. |
Stage | minden feladat kisebb feladatcsoportokra oszlik, amelyeket szakaszoknak neveznek, amelyek egymástól függenek (hasonlóan a térképhez és a MapReduce szakaszainak csökkentéséhez); látni fogja ezt a kifejezést a vezető naplóiban. |