Cluster ModeOverview
这篇文章主要介绍Spark集群的架构以及相关组件。
Components
Spark应用程序在集群环境中运行在相互独立的进程中,通过SparkContext进行交互(SparkContext会在用户程序中初始化,称之为Driver)。
Spark应用程序通过SparkContext在集群之间实现协调调度以及资源分配,首先在集群中申请Executor,然后将用户程序发送到Executor中,最后发送要执行的task到Executor。
阅读以下几点可以更好的理解Spark架构
1. 每个Spark应用程序会产生多个Task运行在Executor中,不同应用程序的Task相互隔离运行在不同的JVM进程中,所以不同的应用程序之间无法共享数据除非通过外部存储。
2. Spark与底层的集群管理框架无关。
3. 在Spark应用程序运行的整个生命周期Driver程序必须一直监听来自Executor的请求,所以Driver程序必须和Worker node网络互通。
4. Spark中通过Driver调度Task,所以Driver程序最好和Worker node运行在同一个局域网中,总之网路距离越近越好。