Spark自学之路(三)——在集群上运行Spark

集群管理器

Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的机器。

1.standalone模式
与MapReduce1.0框架类似,Spark框架本身也自带了完整的资源调度管理服务,可以独立部署到一个集群中,而不需要依赖其他系统来为其提供资源管理调度服务。在架构的设计上,Spark与MapReduce1.0完全一致,都是由一个Master和若干个Slave构成,并且以槽(slot)作为资源分配单位。不同的是,Spark中的槽不再像MapReduce1.0那样分为Map 槽和Reduce槽,而是只设计了统一的一种槽提供给各种任务来使用。
2.Spark on Mesos模式
Mesos是一种资源调度管理框架,可以为运行在它上面的Spark提供服务。Spark on Mesos模式中,Spark程序所需要的各种资源,都由Mesos负责调度。由于Mesos和Spark存在一定的血缘关系,因此,Spark这个框架在进行设计开发的时候,就充分考虑到了对Mesos的充分支持,因此,相对而言,Spark运行在Mesos上,要比运行在YARN上更加灵活、自然。目前,Spark官方推荐采用这种模式,所以,许多公司在实际应用中也采用该模式。
3. Spark on YARN模式
Spark可运行于YARN之上,与Hadoop进行统一部署,即“Spark on YARN”,其架构如图9-13所示,资源管理和调度依赖YARN,分布式存储则依赖HDFS。

启动一个程序

通过不同的配置选项,spark-submit可以连接到相应的集群管理器上,并控制应用所使用的资源数量。

1:提交python应用:bin/spark-submit demo.py (这时,没有其他参数,spark程序只会在本地运行)

2:提交应用到集群:将独立集群的地址和希望启动的每个执行器进程的大小作为附加标记提供

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

--master标记可以接收的值

spark://host:port  连接到指定端口的Spark独立集群上。默认情况下Spark独立节点使用7077端口

mesos://host:port 连接到指定端口的Mesos集群上。默认情况下Mesos主节点监听5050端口

yarn:连接到一个yarn集群。当在yarn上运行的时,需要设置环境变量HADOOP_CONF_DIR指向Hadoop配置目录,以获取集群信息

local:运行本地模式,使用单核

local[N]:运行本地模式,使用N个核心

local[*]:运行本地模式,使用尽可能多的核心

spark-submit的一些常用标记

Spark自学之路(三)——在集群上运行Spark_第1张图片

spark-submit还允许通过 --conf prob=value标记设置任意的SparkConf配置选项

独立集群管理器

1:启动独立集群:使用Spark的sbin目录中的启动脚本

start-all.sh或者
shart-master.sh
start-slave.sh

停止时

stop-all.sh或者
stop-master.sh
stop-slave.sh

2:提交应用

spark-submit --master spark;//masternode:7077 yourapp

这个集群的URL也显示在独立集群管理器的网页界面(http://masternode:8080)上。

还可以使用 --master参数以同样的方式启动spark-shell或pyspark,来连接到该集群上:

spark-shell --master spark://masternode:7077
pyspark --master spark://masternode:7070

独立集群管理器支持两种部署模式。在这两种模式中,应用的驱动器程序运行在不同的地方。

在客户端模式(默认):驱动器程序会运行在你执行spark-submit的机器上,是spark-submit命令的一部分。

在集群模式:驱动器程序会作为某个工作节点上的一个独立的进程运行在独立集群管理器内部。他会连接主节点来申请执行器节点。使用spark-submit传递--deploy-mode cluster参数可以切换到集群模式。

 

Hadoop Yarn

在Spark里使用Yarn,你只需要设置指向你的hadoop配置目录的环境变量在spark/conf/spark-env.sh

export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop

和独立集群一样有两种将应用连接到集群的模式:客户端模式和集群模式。在客户端模式下应用程序运行在驱动器程序提交应用的机器上;而在集群模式下,驱动器程序也运行在一个yarn容器内部。

以上是常用的两种模式,Spark on Mesos模式可以自行了解

你可能感兴趣的:(Spark)