组件
Spark 应用程序作为集群上的独立进程集运行,由SparkContext中程序的对象协调。
具体而言,要在集群上运行SparkContext可以连接到几种类型的集群管理器,它们跨应用程序分配资源。连接后,Spark会在集群中的节点上获取执行程序买这些节点是为了你的应用程序运行计算和储存数据进程,接下来,其将程序代码发送给执行文件。最后,SparkContext将任务发送给执行程序。

几点注意事项
- 每个应用程序都有自己的执行程序进程,这些进程在整个应用程序的持续时间内保持不变并在多个线程中运行任务。这样可以在调度方(每个驱动程序调度自己的任务)和执行方(在不同JVM中运行的不同应用程序中的任务)之间隔离应用程序。但是,这也意味着无法在不将Spark应用程序(SparkContext实例)写入外部存储系统的情况下共享数据。
- Spark与底层集群管理器无关。只要它可以获取执行程序进程,并且这些进程相互通信,即使在也支持其他应用程序的集群管理器(例如Mesos / YARN)上运行它也相对容易。
- Spark与底层集群管理器无关。只要它可以获取执行程序进程,并且这些进程相互通信,即使在也支持其他应用程序的集群管理器(例如Mesos / YARN)上运行它也相对容易。
- 因为驱动程序在集群上调度任务,所以它应该靠近工作节点运行,最好是在同一局域网上。如果您想远程向集群发送请求,最好向驱动程序打开RPC并让它从附近提交操作,而不是远离工作节点运行驱动程序。
集群管理器
目前支持三种集群管理器
- Spark附带的简单集群管理器,可以轻松设置集群
-
Apache Mesos - 一个通用集群管理器,也可以运行Hadoop MapReduce和服务应用程序。
-
Hadoop YARN - Hadoop 2中的资源管理器。
-
Kubernetes - 一个开源系统,用于自动化容器化应用程序的部署,扩展和管理。
提交申请
可以使用spark-submit
脚本将应用程序提交到任何类型的集群。在提交申请指南介绍了如何做到这一点。
监控
可以使用spark-submit
脚本将应用程序提交到任何类型的集群。在提交申请指南介绍了如何做到这一点。
作业调度
Spark可以控制跨应用程序(在集群管理器级别)和应用程序内的资源分配(如果在同一个SparkContext上进行多次计算)。该作业调度概述描述得更详细。
网友评论