Spark集群管理器,总有一款适合你。
Spark运行模式有本地运行和集群运行两种。在实际生产开发中,我们都会选择在集群运行,本地模式仅用于本地测试。
Spark集群管理器:
- Standalone模式
- Yarn
- K8s
- Mesos
本文记录前三种集群的搭建,现在主流是Yarn,k8s是趋势,越来越火。对于Mesos,现在没听说国内有公司使用,坑先留着
一、Standalone集群管理器
Standalone是Spark自带的一个集群管理器,允许在同一个物理集群上运行多个Spark应用程序。
1.集群规划
角色 | 机器节点 |
---|---|
master | node1 |
worker | node2,node3 |
2.环境准备
- 安装JDK,略
- 机器免密
3.软件安装
解压到指定目录
tar -zxvf spark-2.3.1-bin-hadoop2.6.tgz -C /opt
4.修改配置
Spark集群上配置文件要完全一样,我们只需要配置好一台机器(node1),然后将配置文件远程分发到其他机器。配置文件在$SPARK_HOME/conf
- 配置集群进程所用资源
#拷贝一份出来
cp spark-env.sh.template spark-env.sh
# 修改spark-env.sh文件
export SPARK_MASTER_HOST=node1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2
export SPARK_WORKER_MEMORY=2g
export JAVA_HOME=/usr/java/jdk1.8.0_221
注:JAVA_HOME配置为你机器上Java安装的真实路径
- 配置worker节点
# 拷贝一份出来
cp slaves.template slaves
# 修改slaves文件
node2
node3
- 远程分发,同步配置文件
scp -r spark-2.3.1-bin-hadoop2.6 node2:`pwd`
scp -r spark-2.3.1-bin-hadoop2.6 node3:`pwd`
5.启动集群
进入Spark目录sbin目录下
./start-all.sh
6.提交作业
# 以client模式提交到standalone集群
spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://node1:7077
--executor-memory 2G
--total-executor-cores 10
/opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar
100
# 以cluster模式提交到standalone集群
spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://node1:7077
--deploy-mode cluster
--supervise # 配置此参数代表开启监督,如果主应用程序异常退出,则自动重启 Driver
--executor-memory 2G
--total-executor-cores 10
/opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar
100
二、Spark on Yarn
Spark也可以基于Yarn进行任务调度,将Spark作业提交到Yarn上运行,此时不需要启动Master节点也不需要启动Worker节点。此时Spark只是作为client角色,将作业提交到Yarn。
1.环境准备
- HDFS服务安装,略
- Yarn服务安装,略
2.软件安装
解压到指定目录
tar -zxvf spark-2.3.1-bin-hadoop2.6.tgz -C /opt
3.修改配置
在spark-env.sh中配置hadoop的配置目录的路径,可以使用HADOOP_CONF_DIR或YARN_CONF_DIR进行指定
export HADOOP_CONF_DIR=/opt/hadoop-2.6.5/etc/hadoop
4.提交作业
必须保证HDFS和Yarn都已经启动
# 以client模式提交到yarn集群
spark-submit
--class org.apache.spark.examples.SparkPi
--master yarn
--deploy-mode client
--executor-memory 2G
--num-executors 10
/opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar
100
# 以cluster模式提交到yarn集群
spark-submit
--class org.apache.spark.examples.SparkPi
--master yarn
--deploy-mode cluster
--executor-memory 2G
--num-executors 10
/opt/spark-2.3.1/examples/jars/spark-examples_2.11-2.3.1.jar
100
三、Spark on Kubernetes
待续