Spark启动方式有:local模式、standalone模式、Yarn模式、K8S和Mesos模式,本教程只涉及前三种模式,另外两种可以自行查找资料。
Local模式
1.下载Spark
https://archive.apache.org/dist/spark/
由于我的Hadoop版本是3.1.3,所以下载的Spark版本也是Spark3,这里下的是Spark3.3.1,只要是Spark3都可以和Hadoop3兼容。
2.解压Spark压缩包
解压Spark的压缩包,移动到/usr/local/
下,修改文件夹的名字为spark
1
2
3
4
|
cd ~/Downloads
sudo tar -zxvf spark-3.3.1-bin-hadoop3.tgz -C /usr/local/
cd /usr/local/
mv spark-3.3.1-bin-hadoop3.2 spark
|
3.Local模式启动Spark
启动成功后,可以输入网址主机名:4040
进行 Web UI 监控页面访问

Standalone模式
1.进入spark文件夹下的conf目录,修改workers.template文件名为workers
1
2
|
cd conf/
mv workers.template workers
|
2.修改workers文件,添加worker节点

3.修改spark-env.sh.template文件名为spark-env.sh
4.修改spark-env.sh文件,添加JAVA_HOME
环境变量和集群对应的master节点
Java默认安装路径如下,手动安装的Java可以指定自己的Java路径

5.分发Spark

6.Standalone模式启动Spark集群
1
2
3
|
cd spark/
sbin/start-all.sh
xcall jps
|
7.查看进程
Spark正常启动输入网址主机名:8080
进行监控

8.提交应用测试Spark
1
2
3
4
|
bin/spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://hadoop1:7077
./examples/jars/spark-examples_2.12-3.3.1.jar 10
|
注意:–master后面指定的主机名要改成自己的主机名(hadoop1改成自己的主机名)
指定的jar包要指定为自己的jar包,不同版本的示例jar包名字不同。
10是指当前应用的任务数量
提交任务时会有一个SparkSubmit进程,任务结束后进程停止

Yarn 模式
1.修改Hadoop配置文件
修改/usr/local/hadoop/etc/hadoop/yarn-site.xml
, 并分发
1
|
vim /usr/local/hadoop/etc/hadoop/yarn-site.xml
|
1
2
3
4
5
6
7
8
9
10
11
12
|
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认
是true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认
是true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
|
分发修改后的配置文件
1
|
xsync /usr/local/hadoop/etc/hadoop/yarn-site.xml
|

2. 修改conf/spark-env.sh,添加 JAVA_HOME
和 YARN_CONF_DIR
配置

3.分发更改后的Spark-env.sh
1
|
xsync conf/spark-env.sh
|

4.Yarn模式提交任务测试
- Client模式
1
2
3
4
|
bin/spark-submit --class org.apache.spark.examples.SparkPi
--master yarn
--deploy-mode client
./examples/jars/spark-examples_2.12-3.3.1.jar 10
|

- Cluster模式
1
2
3
4
|
bin/spark-submit --class org.apache.spark.examples.SparkPi
--master yarn
--deploy-mode cluster
./examples/jars/spark-examples_2.12-3.3.1.jar 10
|

5.在hadoop1:8088查看,程序运行成功

补充:提交参数说明
参数 |
解释 |
可选值举例 |
–class |
Spark 程序中包含主函数的类 |
|
–master |
Spark 程序运行的模式(环境) |
模式:local[*]、spark://hadoop1:7077、Yarn |
–executor-memory 1G |
指定每个executor 可用内存为1G |
符合集群内存配置即可,具体情况具体分析。 |
–total-executor-cores 2 |
指定所有executor使用的cpu核数析。为2个 |
|
–executor-cores |
指定每个executor使用的cpu核数 |
|
application-jar |
打包好的应用 jar,包含依赖。这个URL 在集群中全局可见。比如 hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的 |
|
path 都包含同样的 jar |
|
|
application-arguments |
传给 main()方法的参数 |
|