SPARK运行环境
spark可以运行在常见的集群环境之下
一、LOCAL模式
在不需要任何资源环境的情况下在本地就可以执行spark代码。所有计算都在一个线程中,没有任何并行计算。
1、解压文件夹
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module
mv spark-3.0.0-bin-hadoop3.2 spark-local
2、启动
sh /opt/module/spark-local/bin/spark-shell
访问监控页面
http://ip:4040
3、命令行工具
在data下创建文件 word.txt 并输入如下内容
my name is my name
how do you do
在spark命令行下输入如下内容
sc.textFile("/opt/module/spark-local/data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
返回结果如下
res0: Array[(String, Int)] = Array((is,1), (how,1), (my,2), (you,1), (name,2), (do,2))
退出命令行
:quit
提交应用
/spark_local/bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./spark_local/examples/jars/spark-examples_2.12-3.0.0.jar 10
参数 | 参数值 | 说明 |
---|---|---|
–class | org.apache.spark.examples.SparkPi | 表示要执行程序的主类(自己编写的应用程序) |
–master | local[2] | local[2] 部署模式,默认为本地模式,数字表示分配的虚拟 CPU 核数量 |
spark-examples_2.12-3.0.0.jar | 运行的应用类所在的 jar 包(自己编写的应用程序jar包) | |
10 | 表示程序的入口参数,用于设定当前应用的任务数量 |
二、STANDALONE模式
只使用spark节点自身运行的集群模式,也就是独立部署模式
集群规划
ip | host | |
---|---|---|
192.168.2.102 | hadoop102 | Master Worker |
192.168.2.103 | hadoop103 | Worker |
192.168.2.104 | hadoop104 | Worker |
1、解压文件夹
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C ../module/
mv spark-3.0.0-bin-hadoop3.2 spark-standalone
2、修改配置文件
cd spark-standalone/conf
mv slaves.template slaves
vim slaves
添加worker节点并保存
hadoop102
hadoop103
hadoop104
mv spark-env.sh.template spark-env.sh
添加JAVA_HOME的环境变量、master、端口并保存
export JAVA_HOME=/opt/module/jdk1.8.0_212
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077
分发到集群内部其他机器
3、配置spark的环境变量
export SPARK_HOME=/opt/module/spark-standalone
export PATH=$PATH:$SPARK_HOME/sbin
4、启动集群
sh /opt/module/spark-standalone/sbin/start-all.sh
5、查看集群资源监控页面
http://hadoop102:8080/
6、提交应用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar 10
参数 | 参数值 | 说明 |
---|---|---|
–class | org.apache.spark.examples.SparkPi | 表示要执行程序的主类 |
–master | spark://linux1:7077 | 独立部署模式,连接到 Spark 集群 |
./examples/jars/spark-examples_2.12-3.0.0.jar | 运行类所在的 jar 包 | |
10 | 程序的入口参数,用于设定当前应用的任务数量 |
7、提交参数
参数 | 说明 |
---|---|
–class | Spark 程序中包含主函数的类 |
–master | Spark 程序运行的模式(环境) |
–executor-memory | 指定每个 executor 可用内存 |
–total-executor-cores | 指定所有executor使用的cpu核数 |
application-arguments | 传给 main()方法的参数 |
8、配置历史服务
为了方便查看历史任务的运行状况,需要做出如下配置
修改配置文件名
mv spark-defaults.conf.template spark-defaults.conf
启动hdfs并创建文件路径
start-dfs.sh
hadoop fs -mkdir /sparklogs
配置项如下,并分发到集群其他机器
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop102:8020/sparklogs
修改环境变量。在spark-env.sh中添加环境变量
export SPARK_HISTORY_OPTS="
-Dspark.history.ui.port=18080
-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/sparklogs
-Dspark.history.retainedApplications=30"
参数 | 说明 |
---|---|
-Dspark.history.ui.port | WEB 页面访问的端口号 |
-Dspark.history.fs.logDirectory | 历史服务器日志存储路径 |
-Dspark.history.retainedApplications | 指定保存 Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除 |
将做出的修改分发到集群,并重启spark
三、高可用模式
集群规划
ip | host | |
---|---|---|
192.168.2.102 | hadoop102 | Master Worker Zookeeper |
192.168.2.103 | hadoop103 | Master Worker Zookeeper |
192.168.2.104 | hadoop104 | Worker Zookeeper |
启动zookeeper
修改配置文件 spark-env.sh
注释掉原来STANDALONE的配置
#SPARK_MASTER_HOST=hadoop102
#SPARK_MASTER_PORT=7077
添加如下配置
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104
-Dspark.deploy.zookeeper.dir=/spark"
提交应用到高可用集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077,hadoop103:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
四、YARN模式
LOCAL本地模式,计算使用的时本地资源,然而本地计算资源未必是最优的,所以很多时候会使用yarn作为调度资源(很多时候spark本身是安装在hadoop集群的所以yarn模式成为了大家的主要选择)
1、解压安装文件并重命名
tar -zxvf spark-3.0.0-bin-hadoop3.2.tgz -C /opt/module/
mv /opt/module/spark-3.0.0-bin-hadoop3.2/ /opt/module/spark-yarn
2、修改yarn的配置文件
修改后分发到集群的其他机器
vim yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认
是 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>
3、修改spark的配置文件
cp spark-env.sh.template spark-env.sh
vim spark-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_212
YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop
分发spark-yarn到集群
4、启动hdfs和yarn
5、提交应用
./spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10