首页 > 代码库 > (7)在集群上运行Spark

(7)在集群上运行Spark

7.2 Spark运行时架构

Spark集群采用的是主/从结构。在一个Spark集群中,有一个节点负责中央协调,调度各个分布式工作节点。这个中央协调节点被称为驱动器节点,与之对应的工作节点被称为执行器节点。驱动器节点可以和大量的执行器节点进行通信,他们也都作为独立的Java程序运行。

7.2.1 驱动器节点

Spark驱动器节点是执行你的程序中main方法的进程。其实,当你启动Spark Shell时,你就启动了一个Spark驱动器程序,驱动器程序一旦终止,Spark应用也就结束了。驱动器程序在Spark应用中有下述两个职责:

  • 把用户程序转换为任务。
  • 为执行器节点调度任务。

7.2.2 执行器节点

Spark执行器节点是一种工作进程,负责在Spark作业中运行任务,任务间相互独立。执行器进程有两大作用,第一:他们负责运行组成Spark应用的任务,并将结果返回给驱动器进行;第二,他们通过自身的块管理器为用户程序中要求缓存的RDD提供内存式存储。

7.2.3 集群管理器

Spark依赖于集群管理器来启动执行器节点,而在某些特殊的情况下,也依赖集群管理器来启动驱动器节点。

 

7.3 使用spark-submit部署应用

提交Python应用

bin/spark-submit my_script.py

如果在调用时,除了脚本或JAR没有别的参数,那么这个spark程序只会在本地执行。当我们希望将应用提交到Spark独立集群上的时候,可以将独立集群的地址和希望启动的每一个执行器进程的大小作为附加标记提供。

提交应用时添加附加参数

bin/spark-submit --master spark://host:7077 --executor-memory 10g my_script.py

--master标记指定要连接的集群URL,下面是master标记可以接收的值:

spark://host:port #连接到指定端口他和Spark独立集群上。默认使用7077端口
spark://host:port #连接到指定端口的Mesos集群上,默认使用5050端口
yarn              #连接到一个YARN集群
local             #运行本地模式,使用单核
local[N]          #运行本地模式,使用N核心
local[*]          #运行本地模式,使用所有核心

spark-submit的一般格式

bin/spark-submit [options] <app jar | python file> [app options]

 

7.4 打包代码与依赖

7.5 Spark应用内与应用间调度

7.6 集群管理器

 

(7)在集群上运行Spark