Spark 架构采用了分布式计算中的Master-Slave 模型。Master 是集群中含有Master 进程的节点,Slave 是集群中含有Worker 进程的节点。Master 作为集群的控制器,负责整个集群的正常运行和错误处理;Worker 是集群的计算节点,接收主节点命令与运行状态汇报。Executor 负责任务的执行;Client 作为用户的客户端负责提交应用,Driver 负责控制一个应用的执行,Spark 架构如图8-2 所示:
图8-2 Spark 架构
1. Application(应用程序)
用户编写的Spark 应用程序,包含了一个Driver 功能的代码和分布在集群中多个节点上运行的Executor 代码。
2. Driver(驱动)
运行Application 的main()函数并且创建一个SparkContex 实例,当Executor 运行完毕后,Driver 负责将SparkContext 关闭。(www.daowen.com)
SparkContext 准备Spark 应用程序的运行环境,在Spark 中由SparkContext 负责和ClusterManager 通信,进行资源的申请、任务的分配和监控等。
4. ClusterManager(集群管理程序)
在集群上获取资源的外部服务(例如:Local、Standalone、Mesos 或Yarn 等集群管理系统)。
5. Executor(执行单元)
Executor 是Application 运行在Worker 节点上的一个进程,Spark 会为每个Application分配一批独立的Executor 进程。Worker 上可以有一个或多个Executor 进程,每个又Executor 拥有一个线程池,通过线程池的方式以多线程的方式同时运行多个Task,每个线程负责一个Task 任务的具体执行及将数据存在内存或者磁盘上。原则上一个Worker节点上的Executor 进程数不超过该节点的CPU core 数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。