上一节对Spark进行大致的介绍,包括其历史、特点以及各内置模块等方面内容,书归正题,本节就对Spark框架的安装部署进行大致的介绍。
部署Spark集群大体上分为两种模式:单机模式与集群模式。大多数分布式框架都支持单机模式,方便开发者调试框架的运行环境,但是在生产环境中,并不会使用单机模式。因此,后续会直接按照集群模式部署Spark集群。
Spark目前支持 4 种运行模式:
- 1)Local模式:在本地部署单个Spark服务(适用于测试)
- 2)Standalone模式:并非是单节点,而是使用Spark自带的资源调度框架(国内常用)
- 3)YARN模式:Spark使用Hadoop的YARN组件进行资源与任务调度(国内常用)
- 4)Mesos模式:Spark使用Mesos平台进行资源与任务的调度
资源准备
关于Spark安装,有以下资源地址可供使用:
- 1)官网地址:http://spark.apache.org/
- 2)文档查看地址:https://spark.apache.org/docs/2.1.1/
- 3)下载地址:https://spark.apache.org/downloads.html
1.Spark Local模式
Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。
1)安装
安装步骤比较简单:下载Spark安装文件到Linux(版本:spark-2.1.1-bin-hadoop2.7.tgz——Spark 2.1.1版,并且需要Hadoop2.7及以上的版本支持)、解压安装包到指定文件夹、并重命名为spark-local:
tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
mv spark-2.1.1-bin-hadoop2.7 spark-local
这里为了对三种运行模式有所区分,每个安装文件对应的名称不同。
2)官方求PI案例
[zxy@hadoop102 spark-local]$ bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.11-2.1.1.jar \
10
参数说明:
- 1)- -class:表示要执行程序的主类;
- 2)- -master local[2]:本地运行模式,指定使用2个Core来运行计算
- 3)spark-examples_2.11-2.1.1.jar:要运行的程序;
- 4)10:要运行程序的输入参数(本案例中表示计算圆周率π的次数,计算次数越多,准确率越高);
3)关于local本地运行模式
本地运行模式参数--master local
:
- 1)local: 没有指定线程数,则所有计算都运行在一个线程当中,没有任何并行计算
- 2)local[K]:指定使用K个Core来运行计算,比如local[2]就是运行2个Core来执行
- 3)local[*]: 自动帮你按照CPU最多核来设置线程数。比如CPU有4核,Spark帮你自动设置4个线程计算。
登录hadoop102:4040
,查看可以程序运行情况(注意:spark-shell窗口关闭掉,则hadoop102:4040页面关闭)
说明:本地模式下,默认的调度器为FIFO
Spark集群角色的介绍
首先介绍一下Spark集群中的角色,先对集群整体有一些认识,然后我们再去介绍集群模式的安装部署与使用。
1)Master和Worker
Master和Worker是Spark特有资源调度系统中的角色,类似于Yarn框架中的ResourceManager和NodeManager。
Master,Spark特有资源调度系统的Leader。掌管着整个集群的资源信息,类似于Yarn框架中的ResourceManager, 主要功能:
- 1)监听Worker, 看Worker是否正常工作; .
- 2)对Worker、Application等的管理(接收Worker的注册并管理所有的Worker,接收Client提交的Application,调度等待的Application并向Worker提交)
Worker,Spark特有资源调度系统的Slave,有多个。每个Slave掌管着所在节点的资源信息,类似于Yarn框架中的NodeManager,主要功能:
- 1)通过RegisterWorker 注册到 Master;
- 2)定时发送心跳给Master;
- 3)根据Master发送的Application配置进程环境,并启动ExecutorBackend (执行Task所需的临时进程)
2)Driver和Executor
3)Spark 通用运行流程
Master和Worker是Spark的守护进程,即Spark在特定模式下正常运行所必须的进程。
Driver和Executor是临时程序,当有具体任务提交到Spark集群才会开启的程序。
2.Standalone模式
Standalone模式是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。
这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助其他的框架,是相对于Yarn和Mesos来说的。
1.安装使用
1)集群规划
假设有三台服务器hadoop102、103、104,Standalone模式下的Spark集群规划如下:
hadoop102 | hadoop103 | hadoop104 | |
---|---|---|---|
spark | Master Worker |
Worker | Worker |
2)解压安装
[zxy@hadoop102 ~]$ tar -zxvf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module/
[zxy@hadoop102 module]$ mv spark-2.1.1-bin-hadoop2.7 spark-Standalone
这里为了对三种运行模式有所区分,每个安装文件对应的名称不同。
3)修改配置文件:slaves/spark-env.sh
配置内容主要是设置Master和Worker
安装目录下的conf文件夹,主要配置以下内容:
- 1)slaves.template 改为 slaves:配置worker节点
- 2)spark-env.sh.template 改为 spark-env.sh:添加master节点及端口号
[zxy@hadoop102 conf]$ mv slaves.template slaves
[zxy@hadoop102 conf]$ vim slaves
hadoop102
hadoop103
hadoop104
[zxy@hadoop102 conf]$ mv spark-env.sh.template spark-env.sh
[zxy@hadoop102 conf]$ vim spark-env.sh
# 添加以下内容
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
注意:剩余两台节点也需要进行同样配置,可以直接将安装文件夹分发到hadoop103和104
4)启动Spark集群:sbin/start-all.sh
[zxy@hadoop102 spark-standalone]$ sbin/start-all.sh
可以通过jps命令查看每台节点下的对应的Spark进程。
注意:
- 如果遇到 “JAVA_HOME not set” 异常,可以在sbin目录下的spark-config.sh 文件中加入如下配置:
export JAVA_HOME=XXXX
5)Web端口查看执行任务
官方求PI案例:
- 参数:
--master spark://hadoop102:7077
指定要连接的集群的master,其