Spark部署

local模式:

local模式就是在本地部署单个spark服务,local模式多数用于自学形式,在本地进行练手和测试。 官网下载地址: Apache Archive Distribution Directory

下载之后将文件夹在linux系统中进行解压缩操作:

其实通过上面的计算,我们就成功将他部署到了local中,之后执行下面的命令展示一下:

复制代码
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master local[2] \
./examples/jars/spark-examples_2.12-3.3.1.jar \
10

命令详解

这是一个使用 Spark 自带的 spark-submit 脚本来提交任务的标准命令,作用是计算圆周率(π)的近似值。这条命令是学习 Spark 时最经典的入门示例,下面我为你逐行拆解它的含义。

  • bin/spark-submit :这是 Spark 提供的统一任务提交脚本,用于将你的应用程序提交到集群上运行。bin/ 表示它在 Spark 安装目录下的 bin 文件夹中。

  • \:这是 Linux 系统的续行符,告诉终端这行命令还没结束,下一行是它的延续。它本身没有实际功能,只是为了提升可读性。

  • --class org.apache.spark.examples.SparkPi :指定程序运行的入口类 。Spark 会去执行 spark-examples JAR 包中 SparkPi 类的 main 方法。

  • --master local[2] :指定 Spark 任务的运行模式

    • local 表示在本地模式运行,不会连接任何集群,非常适合开发和测试。

    • [2] 表示启用 2 个线程来模拟并行计算,相当于使用 2 个 CPU 核心来执行任务。

  • ./examples/jars/spark-examples_2.12-3.3.1.jar :指定要运行的应用程序 JAR 包 的路径。这个包包含了 Spark 官方提供的各种示例程序,_2.12 表示它是为 Scala 2.12 编译的,-3.3.1 则是 Spark 版本号。

  • 10 :这是传给 SparkPi 示例程序的参数 。在 SparkPi 程序中,这个数字代表循环计算的次数,数值越大,计算量越大,估算出的圆周率也越精确

spark web看板观测执行中的任务

Spark web UI at http://192.168.1.191:4040

但是当前的看板只能在任务执行的时候可以观测,执行之后这个页面就看不到了,他自己就会退出。

Yarn部署

注意下面的部署都是在你已经拥有一个可以使用的hadoop为前提进行配置。

不是到yarn

修改spark中的配置文件**/conf/spark-env.sh,添加** YARN_CONF_DIR 配置,保证后续运行任务的路径都变成集群路径

atguigu@hadoop102 conf$ mv spark-env.sh.template spark-env.sh

atguigu@hadoop102 conf$ vim spark-env.sh

YARN_CONF_DIR=/opt/module/hadoop/etc/hadoop

之后通过命令启动hadoop:

启动 HDFS 以及 YARN 集群

$ sbin/start-dfs.sh

$ sbin/start-yarn.sh

执行命令进行测试:

bin/spark-submit \

--class org.apache.spark.examples.SparkPi \

--master yarn \

./examples/jars/spark-examples_2.12-3.3.1.jar \

10

可以计算出结果证明执行成功。

因为是部署在yarn上的,我们可以打开Yarn资源管理页面查看:

地址:http://ResourceManager主机IP:8088/cluster/apps

查看运行日志

目前是Hadoop的作业运行日志展示,如果想获取Spark的作业运行日志,请进行如下配置:

1)修改 spark-default.conf 文件,配置日志存储路径(写)

vim spark-defaults.conf

spark.eventLog.enabled true

spark.eventLog.dir hdfs://hadoop102:8020 /directory

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

vim spark-env.sh

export SPARK_HISTORY_OPTS="

-Dspark.history.ui.port=18080

-Dspark.history.fs.logDirectory=hdfs://hadoop102:8020/directory

-Dspark.history.retainedApplications=30"

参数1含义:WEBUI访问的端口号为18080

参数2含义:指定历史服务器日志存储路径(读)

参数3含义:指定保存Application历史记录的个数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数,而不是页面上显示的应用数。

3)hdfs://hadoop102:8020 /directory 这个文件一定要存在,大家自己要创建一下。

4)为了能从Yarn上关联到Spark历史服务器,需要配置spark历史服务器关联路径。

目的:点击yarn(8088)上spark任务的history按钮,进入的是spark历史服务器(18080),而不再是yarn历史服务器(19888)。

修改配置文件 /opt/module/spark-yarn/conf/spark-defaults.conf

添加如下内容:

spark.yarn.historyServer.address=hadoop102:18080

spark.history.ui.port=18080

重启 Spark 历史服务

sbin/stop-history-server.sh

sbin/start-history-server.sh

配置完成后再次点击就可以直接跳转到spark历史页面中

Spark On YARN 两种部署模式详解

client模式

  1. Driver 进程运行位置 Driver 程序运行在提交任务的本地客户端机器(你敲 spark-submit 命令的服务器),不在 YARN 容器中。
  2. 资源容器分工
    • AM(ApplicationMaster):YARN 集群中 NodeManager 的容器,仅负责申请资源、调度 Executor;
    • Driver:本地客户端进程;
    • Executor:集群各个 NodeManager 容器,执行计算任务。
  3. 日志输出位置
    • Spark 运行打印的计算日志、print 输出:直接打印在本地提交命令的终端窗口
    • YARN 容器日志:存于 Hadoop 集群日志服务器,需用yarn logs -applicationId查看。
  4. 网络与适用场景
    • 客户端机器必须全程在线、网络稳定,一旦断开终端 / 关闭服务器,Driver 进程被杀,任务直接失败;
    • 适合开发调试:本地实时看日志、排查代码报错,测试小任务。
  5. 优缺点 ✅ 调试方便,日志实时输出在本地; ❌ 提交机器占用资源,长期跑任务不稳定,网络波动易丢任务。

cluster 模式:

  1. Driver 进程运行位置 Driver 内嵌在 YARN ApplicationMaster 容器 中,运行在集群某一台 NodeManager 节点,不在本地提交机。
  2. 资源容器分工
    • AM 容器:同时承载 ApplicationMaster + Spark Driver 两个核心程序;
    • Executor:集群其他 NodeManager 容器,执行 RDD / 算子计算。
  3. 日志输出位置 所有 Spark 日志、计算输出、异常堆栈全部存在 YARN 集群日志系统 ,本地终端只会打印任务提交信息,看不到业务输出;必须执行yarn logs -applicationId 任务ID查看完整日志。
  4. 网络与适用场景 提交命令后,本地客户端即可断开、关机,任务不受影响;Driver 在集群内部,节点间网络通信更快稳定; 适合生产环境定时 / 长期离线计算任务
  5. 优缺点 ✅ 任务稳定性高,不依赖提交客户端机器,集群内部通信性能更好,生产标准用法; ❌ 调试麻烦,不能实时看本地日志,排错需要去 YARN 拉取日志。
对比维度 YARN Client YARN Cluster
Driver 所在机器 提交任务的本地客户端 集群中某台 NodeManager(AM 容器)
客户端是否可断开 不可断开,断则任务失败 提交完即可断开,任务正常运行
实时日志位置 本地终端直接打印 仅集群 YARN 日志,本地无业务输出
资源占用 占用提交服务器 CPU / 内存 全部资源由 YARN 集群调度
生产推荐 不推荐,仅调试用 生产环境标准部署模式
网络依赖 客户端与集群保持长连接 Driver 在集群内部,网络开销更小

client命令:

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


bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ ./examples/jars/spark-examples_2.12-3.3.1.jar \ 10

cluster模式命令

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

上面是当前最常见的两种部署方式,当然也可以使用k8s进行部署,大家敬请期待

相关推荐
远光九天4 小时前
远光软件亮相2026 CIO百人会高峰论坛 分享“模数共振”新范式构建之路
大数据·人工智能
长不胖的路人甲5 小时前
RabbitMQ 死信队列 DLQ
分布式·rabbitmq
可乐ea5 小时前
【Redis八股|第8篇】Redis 分布式锁原理与 Redisson 使用
数据库·redis·分布式·面试题·redis八股
LitchiCheng5 小时前
DGX Spark部署Isaac Sim(一键安装脚本)
大数据·elasticsearch·spark
RockHopper20256 小时前
企业智能体为何应面向“活动”而非“数据”——一个架构范式的转变
大数据·人工智能·智能体·活动驱动
JustNow_Man6 小时前
【openspec】存量项目中如何使用进行开发
大数据·人工智能
Geeys7 小时前
拼多多新店快速起流量完整实操
大数据·网络·人工智能
BD_Marathon9 小时前
什么是Spark
大数据·分布式·spark
xlrqx9 小时前
2026年沧州家电清洗培训成本核算方法及成本控制要点
大数据·python