Spark部署
1、Local 模式
-
第一步:将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到服务器并解压
-
第二步:启动 Local 环境
bin/spark-shell
-
第三步:提交应用
# --class :表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 # --master local[2] :部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量 # spark-examples_2.12-3.0.0.jar :运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包 # 数字 10 :表示程序的入口参数,用于设定当前应用的任务数量 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[2] \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
2、Standalone模式
集群模式
集群部署规划
hadoop151 | hadoop152 | hadoop153 | |
---|---|---|---|
Master | √ | ||
Worker | √ | √ | √ |
-
第一步:将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到服务器并解压
-
第二步:进入spark路径的 conf 目录,修改 slaves.template 文件名为 slaves,并修改 slaves 文件
# Spark的Worker节点的服务器 hadoop151 hadoop152 hadoop153
-
第三步:修改 spark-env.sh.template 文件名为 spark-env.sh,并修改 spark-env.sh 文件
export JAVA_HOME=/opt/software/jdk/jdk1.8.0_281 # Spark的Master节点的服务器 SPARK_MASTER_HOST=hadoop151 # 内部通信端口 SPARK_MASTER_PORT=7077
-
第四步:将 spark 整个文件分发到其他服务器上
-
第五步:启动集群
sbin/start-all.sh
-
第六步:查看 Master 资源监控Web UI 界面
http://hadoop151:8080
-
第七步:提交应用
# --class :表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 # --master local[2] :部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量 # spark-examples_2.12-3.0.0.jar :运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包 # 数字 10 :表示程序的入口参数,用于设定当前应用的任务数量 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hadoop151:7077 \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
-
第八步:配置历史服务
-
8.1:启动 hadoop 集群,HDFS 上创建 /directory 目录
hadoop fs -mkdir /directory
-
8.2:修改 spark-defaults.conf.template 文件名为 spark-defaults.conf,并修改 spark-defaults.conf 文件
spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop151:8020/directory
-
8.3:修改 spark-env.sh 文件, 添加日志配置
# ================ 解释 ============= export SPARK_HISTORY_OPTS=" # WEB UI 访问的端口号 -Dspark.history.ui.port=18080 # 指定历史服务器日志存储路径 -Dspark.history.fs.logDirectory=hdfs://hadoop151:8020/directory # 指定保存Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数 -Dspark.history.retainedApplications=30" # 事例 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hadoop151:8020/directory -Dspark.history.retainedApplications=30"
-
8.4:将 spark-defaults.conf、spark-env.sh 文件分发到其他服务器上
-
8.5:启动集群和历史服务
sbin/start-all.sh sbin/start-history-server.sh
-
8.6:重新执行任务
# --class :表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 # --master local[2] :部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量 # spark-examples_2.12-3.0.0.jar :运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包 # 数字 10 :表示程序的入口参数,用于设定当前应用的任务数量 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hadoop151:7077 \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
-
8.7:访问历史服务
http://hadoop151:18080/
-
高可用模式
集群规划
hadoop151 | hadoop152 | hadoop153 | |
---|---|---|---|
Master | √ | √ | |
Worker | √ | √ | √ |
Zookeeper | √ | √ | √ |
-
第一步:按照 Standalone 模式的 集群模式 安装
-
第二步:启动 Zookeeper 集群
-
第三步:修改 spark-env.sh 文件
# 注 释 如 下 内 容 : # SPARK_MASTER_HOST= # SPARK_MASTER_PORT= # 添加如下内容: #Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意 SPARK_MASTER_WEBUI_PORT=8989 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop151,hadoop152,hadoop153 -Dspark.deploy.zookeeper.dir=/spark"
-
第四步:将 spark-env.sh 文件分发到其他服务器上
-
第五步:启动集群
sbin/start-all.sh
-
第六步:启动 hadoop152 的单独 Master 节点,此时 hadoop152 节点 Master 状态处于备用状态
sbin/start-master.sh
-
第七步:提交应用到高可用集群
# --class :表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 # --master local[2] :部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量 # spark-examples_2.12-3.0.0.jar :运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包 # 数字 10 :表示程序的入口参数,用于设定当前应用的任务数量 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://hadoop151:7077,hadoop152:7077 \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
3、Yarn 模式
-
第一步:将 spark-3.0.0-bin-hadoop3.2.tgz 文件上传到服务器并解压
-
第二步:修改 hadoop 路径的 etc/hadoop/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>
-
第三步:将 yarn-site.xml 文件分发到其他服务器上
-
第四步:修改 Spark 路径的 conf/spark-env.sh 文件
export JAVA_HOME=/opt/software/jdk/jdk1.8.0_281 YARN_CONF_DIR=/opt/software/hadoop/hadoop-3.1.4/etc/hadoop
-
第五步:启动 HDFS 和 Yarn
-
第六步:提交应用
# --class :表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 # --master local[2] :部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量 # spark-examples_2.12-3.0.0.jar :运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包 # 数字 10 :表示程序的入口参数,用于设定当前应用的任务数量 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
-
第七步:配置历史服务器
-
7.1:启动 hadoop 集群,HDFS 上创建 /directory 目录
hadoop fs -mkdir /directory
-
7.2:修改 spark-defaults.conf.template 文件名为 spark-defaults.conf,并修改 spark-defaults.conf 文件
spark.eventLog.enabled true spark.eventLog.dir hdfs://hadoop151:8020/directory
-
7.3:修改 spark-env.sh 文件, 添加日志配置
# ================ 解释 ============= export SPARK_HISTORY_OPTS=" # WEB UI 访问的端口号 -Dspark.history.ui.port=18080 # 指定历史服务器日志存储路径 -Dspark.history.fs.logDirectory=hdfs://hadoop151:8020/directory # 指定保存Application 历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数 -Dspark.history.retainedApplications=30" # 事例 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://hadoop151:8020/directory -Dspark.history.retainedApplications=30"
-
7.4:修改 spark-defaults.conf 文件
spark.yarn.historyServer.address=hadoop151:18080 spark.history.ui.port=18080
-
7.5:启动集群和历史服务
sbin/start-history-server.sh
-
7.6:重新执行任务
# --class :表示要执行程序的主类,此处可以更换为咱们自己写的应用程序 # --master local[2] :部署模式,默认为本地模式,数字表示分配的虚拟CPU 核数量 # spark-examples_2.12-3.0.0.jar :运行的应用类所在的 jar 包,实际使用时,可以设定为咱们自己打的 jar 包 # 数字 10 :表示程序的入口参数,用于设定当前应用的任务数量 bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ ./examples/jars/spark-examples_2.12-3.0.0.jar \ 10
-
7.7:访问历史服务
http://hadoop151:18080/
-
4、Windows模式
-
第一步:将文件 spark-3.0.0-bin-hadoop3.2.tgz 解压缩到无中文无空格的路径中
-
第二步:启动本地环境(执行解压缩文件路径下 bin 目录中的 spark-shell.cmd 文件,启动 Spark 本地环境)
5、部署模式对比
模式 | Spark 安装机器数 | 需启动的进程 | 所属者 | 应用场景 |
---|---|---|---|---|
Local | 1 | 无 | Spark | 测试 |
Standalone | 3 | Master 及 Worker | Spark | 单独部署 |
Yarn | 1 | Yarn 及 HDFS | Hadoop | 混合部署 |