1.集群角色
从物理部署层面上来看,Spark主要分为两种类型的节点,Master节点和Worker节点,Master节点主要运行集群管理器的中心化部分,所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。Worker节点负责具体的业务运行。
从Spark程序运行的层面来看,Spark主要分为驱动器节点(提交任务)和执行器节点。参见下图
- 每个节点可以起一个或多个Executor
- 每个Executor由若干core组成,每个Executor的每个core一次只能执行一个Task。
注意: 这里的core是虚拟的core而不是机器的物理CPU核,可以理解为就是Executor的一个工作线程。

2.安装部署
Spark的部署模式有Local、Local-Cluster、Standalone、Yarn、Mesos,本文以最具代表性的Standalone集群部署模式。
2.1 部署前环境准备
- 3台主机
主机名称 | IP |
---|---|
L0 | 192.168.191.130 |
L2 | 192.168.191.132 |
L3 | 192.168.191.133 |
- 安装配置完成JDK
- 安装配置完成hadoop
2.2 部署spark
- 解压spark
$ tar -zxf ~/softwares/spark-2.1.1-bin-hadoop2.7.tgz -C ~
- 进入spark安装目录下的conf目录中,重命名“.template”结尾的文件
$ mv docker.properties.template docker.properties
$ mv log4j.properties.template log4j.properties
$ mv metrics.properties.template metrics.properties
$ mv slaves.template slaves
$ mv spark-defaults.conf.template spark-defaults.conf
$ mv spark-env.sh.template spark-env.sh
- 修改slaves
L0
L2
L3
- 修改spark-default.conf,用于配置Job History Server
spark.eventLog.enabled true
spark.eventLog.dir hdfs://L0:8020/directory
spark.eventLog.compress true
- 修改spark-env. sh
SPARK_MASTER_HOST=l0
SPARK_MASTER_PORT=7077
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000
-Dspark.history.retainedApplications=3
-Dspark.history.fs.logDirectory=hdfs://l0:8020/directory"
- 分发配置好的spark安装包
$ scp -r spark-2.1.1-bin-hadoop2.7/ l2:~
$ scp -r spark-2.1.1-bin-hadoop2.7/ l3:~
- 启动spark(启动spark之前,确保HDFS已经启动)
$ sbin/start-all.sh
- 查看结果
在3台机器中执行命令 jps
- L0:成功启动mater和worker进程
- L2,L3 成功启动worker进程