Tento dokument poskytuje krátký přehled o tom, jak Jiskra běží na klastry, aby to bylo snazší nerozumíte součástí. Přečtěte si pokyny pro předkládání aplikacídozvědět se o spouštění aplikací v klastru.
Jiskra aplikace běží jako nezávislé sady procesů v clusteru, koordinuje SparkContext
v objektu hlavní program (tzv. program ovladače).
Konkrétně pro běh na clusteru, SparkContext lze připojit několik typů manažerů klastrů(buď Jiskra má vlastní samostatný správce clusteru, Mesos nebo PŘÍZE), které přidělují prostředky acrossapplications. Po připojení získává Spark exekutory na uzlech v klastru, což jsouprocesy, které spouštějí výpočty a ukládají data pro vaši aplikaci.Dále odešle kód vaší aplikace (definovaný soubory JAR nebo Python předanými Sparkcontextu) vykonavatelům. Nakonec SparkContext odešle úkoly exekutorům ke spuštění.
Existuje několik užitečných věcí, na vědomí, o tomto stylu:
- Každá aplikace má svůj vlastní exekutor procesy, které se zůstat vzhůru po dobu trvání wholeapplication a spustit úlohy ve více vláknech. To má výhodu izolace aplikací od sebe navzájem, a to jak na straně plánování (každý ovladač naplánuje své vlastní úkoly), tak na straně provádění (úkoly z různých aplikací spuštěných v různých JVM). Nicméně, to také znamená, thatdata nemohou být sdíleny napříč různými Jiskra aplikace (instance SparkContext) withoutwriting to na externí úložiště systému.
- Spark je Agnostický pro správce clusteru. Tak dlouho, jak to může získat executorprocesses, a tyto vzájemně komunikovat, to je relativně snadné spustit i na acluster manager, který podporuje i další aplikace (např. Mesos/PŘÍZE).
- program ovladače musí poslouchat a přijímat příchozí spojení od svých vykonavatelů po celou dobu jejich životnosti (např. viz spark.ovladač.port v konfiguraci sítě). Jako takový musí být program ovladače v sítiadresovatelný z pracovních uzlů.
- protože ovladač naplánuje úkoly na clusteru, měl by být spuštěn v blízkosti pracovních uzlů, nejlépe ve stejné místní síti. Pokud byste chtěli posílat žádosti o rámci clusteru vzdáleně, to je lepší otevřít RPC řidiče a mít ji předložit operationsfrom okolí, než spustit ovladač daleko od pracovníka uzlin.
typy správců klastrů
systém v současné době podporuje několik správců klastrů:
- Standalone-jednoduchý správce clusteru součástí Spark, který dělá iteasy nastavit cluster.
- Apache Mesos-obecný Správce klastrů, který může také spouštět aplikace Hadoop MapReduceand service.
- Hadoop příze-Správce zdrojů v Hadoop 2.
- Kubernetes – open-source systém pro automatizaci nasazení, škálování a řízení kontejnerové aplikace.
pro přidání podpory pronomad jako správce clusteru existuje projekt třetí strany (nepodporovaný projektem Spark).
odesílání žádostí
žádosti lze podávat do clusteru libovolného typu pomocí skriptu spark-submit
.Příručka pro podání žádosti popisuje, jak to provést.
monitorování
každý program ovladače má webové uživatelské rozhraní, obvykle na portu 4040, které zobrazuje informace o runningtasks, exekutorů a využití úložiště. Jednoduše přejděte na ve webovém prohlížečipřístup k tomuto uživatelskému rozhraní. Příručka pro monitorování také popisuje další možnosti monitorování.
plánování úloh
Spark dává kontrolu nad alokací prostředků jak napříč aplikacemi (na úrovni clustermanager), tak v rámci aplikací (pokud se na stejném Sparkcontextu děje více výpočtů).Přehled plánování úloh to popisuje podrobněji.
Slovníček pojmů
následující tabulka shrnuje podmínky, uvidíte používán se odkazovat na clusteru pojmy:
Termín | Význam |
---|---|
Aplikace | Uživatelský program postavený na Jiskru. Skládá se z programu ovladače a vykonavatelů v klastru. |
aplikační jar | jar obsahující aplikaci Spark uživatele. V některých případech budou uživatelé chtít vytvořit „Uber jar“ obsahující jejich aplikaci spolu s jejími závislostmi. Jar uživatele by nikdy neměl obsahovat knihovny Hadoop nebo Spark, ty však budou přidány za běhu. |
Řidič programu | proces spuštěním main() funkcí aplikace a vytvoření SparkContext |
správce Clusteru | externí služby pro získání zdrojů na clusteru (např. samostatný správce, Mesos, PŘÍZE) |
Nasazení režimu | Rozlišuje, kde řidič proces běží. V režimu“ cluster “ spustí framework ovladač uvnitř clusteru. V režimu“ klient “ zadavatel spustí ovladač mimo cluster. |
Pracovník uzlu | libovolného uzlu, který může spustit kód aplikace v clusteru |
Exekutor | řízení zahájeno na žádost pracovníka uzel, který běží úkoly a uchovává data v paměti nebo na disku přes ně. Každá aplikace má své vlastní exekutory. |
Úkol | jednotka práce, která bude odeslána na jeden exekutor |
Práci | paralelní výpočet se skládá z několika úkolů, které dostane plodil v reakci na Jiskru akce (např. save , collect ); tento termín uvidíte v protokolech řidiče. |
Fáze | Každá práce je rozdělena do menších sad úkolů, tzv. fází, které jsou na sobě navzájem závislé (podobně jako na mapě a snížit etap v MapReduce); uvidíte tento termín používá v řidiče polena. |