喵星之旅-调皮的大象-Spark-Standalone模式

Standalone模式是Spark自带的资源调度引擎,构建一个由Master + Worker构成的Spark集群,Spark运行在集群中。

这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助Hadoop的Yarn和Mesos等其他框架。

Master和Worker是Spark的守护进程、集群资源管理者,即Spark在特定模式(Standalone)下正常运行必须要有的后台常驻进程。

安装使用

下载地址:
https://spark.apache.org/downloads.html
https://archive.apache.org/dist/spark/

上传并解压Spark安装包

1
2
3
tar -zxvf spark-3.1.3-bin-hadoop3.2.tgz -C /opt/bunny/
cd /opt/bunny
mv spark-3.1.3-bin-hadoop3.2 spark-standalone

进入Spark的配置目录/opt/bunny/spark-standalone/conf,添加work节点

1
2
3
cd /opt/bunny/spark-standalone/conf
cp workers.template workers
vim workers
1
2
3
h102
h103
h104

修改spark-env.sh文件,添加master节点

1
2
mv spark-env.sh.template spark-env.sh
vim spark-env.sh
1
2
SPARK_MASTER_HOST=h102
SPARK_MASTER_PORT=7077
1
xsync /opt/bunny/spark-standalone/

启动spark集群

1
2
3
cd /opt/bunny/spark-standalone
sbin/start-all.sh

关闭

1
sbin/stop-all.sh

查看三台服务器运行进程
jpsall

页面查看http://h102:8080/

官方求PI案例

1
2
3
cd /opt/bunny/spark-standalone
bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://h102:7077 ./examples/jars/spark-examples_2.12-3.1.3.jar 10

配置Executor可用内存为2G,使用CPU核数为2个

1
2
3
4
5
6
7
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://h102:7077 \
--executor-memory 2G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.12-3.1.3.jar \
10

基本语法

1
2
3
4
5
6
bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]

参数说明

1
2
3
4
5
6
--class	Spark程序中包含主函数的类	
--master Spark程序运行的模式 本地模式:local[*]、spark://h102:7077、Yarn
--executor-memory 1G 指定每个executor可用内存为1G
--total-executor-cores 2 指定所有executor使用的cpu核数为2个
application-jar 打包好的应用jar,包含依赖。这个URL在集群中全局可见。 比如hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的path都包含同样的jar
application-arguments 传给main()方法的参数

配置历史服务

由于spark-shell停止掉后,h102:4040页面就看不到历史任务的运行情况,所以开发时都配置历史服务器记录任务运行情况。

1
2
3
4
5
6
cd /opt/bunny/spark-standalone/conf
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
# 内容如下
spark.eventLog.enabled true
spark.eventLog.dir hdfs://h102:8020/directory

需要启动Hadoop集群,HDFS上的目录需要提前存在。

1
2
bunnyhadoop.sh start 
hadoop fs -mkdir /directory

修改spark-env.sh文件,添加如下配置

1
2
3
4
5
6
7
cd /opt/bunny/spark-standalone/conf
vim spark-env.sh

export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://h102:8020/directory
-Dspark.history.retainedApplications=30"

分发配置文件
xsync spark-defaults.conf spark-env.sh

启动历史服务

1
2
cd /opt/bunny/spark-standalone
sbin/start-history-server.sh

再次执行任务

1
2
3
4
5
6
7
8
9
10
cd /opt/bunny/spark-standalone

bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://h102:7077 \
--executor-memory 1G \
--total-executor-cores 2 \
./examples/jars/spark-examples_2.12-3.1.3.jar \
10

查看Spark历史服务地址:h102:18080

配置高可用(HA)

运行流程

文章目录
  1. 安装使用
  2. 官方求PI案例
  3. 配置历史服务
  4. 配置高可用(HA)
  5. 运行流程
|