1.Spark程序监控端口
- 4040:运行的Application临时绑定的端口,多个程序同时运行会顺延
- 8080:在StandAlone下,Master角色的Web端口
- 18080:历史服务器的端口,可以查看历史任务的运行状态
2.Spark程序运行的四个层级
- 4040端口查看的是一个运行的程序的页面。相当于Application
- 每个Application中都至少有一个子任务Job
- 每个子任务Job会分成多个阶段Stage
- 每个阶段Stage会有多个线程Task来完成
3.StandAlone原理
- Master和Worker角色以独立进程的形式存在,并组成Spark运行时环境(集群); 而在Local模式中,Master、Worker和Driver都是一体的,都是Local进程本身
4.Spark角色在StandAlone中的分布
- Master角色:Master进程,管理整个集群的资源
- Worker角色:Worker进程,管理单台服务器的资源
- Driver角色:在任务运行时,Driver角色以线程方式运行在Master中,用于管理任务的执行
- Executor角色:在任务进行时,Executor角色以线程方式运行在Worker内,用于真正执行任务
5.高可用性集群(Highly Available)
- 目的:解决单点故障
- 方案:留几个备选(StandBy)的Master,Master要想从Standby转化为Active,必须向zookeeper注册;主备切换不会影响正在运行的Job,只会影响新Job的提交
- 基于zookeeper做状态的维护,开启多个Master进程,一个作为活跃,其他的作为备份,当活跃的Master宕机后,备份Master进行接管
6.Spark On Yarn
- 让Spark的计算任务运行在YARN的容器内部,资源管理交由YARN完成
- spark不再进行资源的管理,只进行计算任务的管理和执行
- 集群资源管理由Yarn的ResourceManager担任
- 单机资源管理由Yarn的NodeManager担任
- Driver角色运行在Yarn容器内,或者提交任务的客户端进程中
- 真正干活的Executor运行在YARN提供的容器内
7.Spark On Yarn需要什么
- Yarn集群
- Spark客户端工具,如spark-submit:用于将Spark程序提交到YARN中
- 需要被提交的代码程序
8.Spark On Yarn的两种部署模式
一种是Cluster模式,一种是Client模式。区别在于:Driver运行的位置。
- Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内
- Client模式:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中
9.两种模式的任务提交流程
Client模式:
Cluster模式:
- 容器不是一起构建的,不管是哪个模式,第一个被构建的容器永远是ApplicationMaster所在的容器;然后ApplicationMaster通过向Driver询问需要多少executor,然后向ResourceManager询问资源够不够,然后再向NodeManager分配容器用于运行executor
10.编程入口SparkContext对象
Spark Application的程序入口为SparkContext,创建过程如下:
- 第一步:创建SparkConf对象
- 用于设置Application的基本信息,比如应用的名称AppName和应用的运行Master
- 第二步:基于SparkConf对象,创建SparkContext对象
conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)