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
|
修改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
|
关闭
查看三台服务器运行进程
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)
运行流程