Spark学习之路(四)——Spark on Standalone

本文详细解析了Spark的任务提交流程,包括从spark-submit命令到Executor执行任务的全过程。同时,深入介绍了Spark环境变量配置,如SPARK_MASTER_OPTS和SPARK_WORKER_OPTS,及其对Spark集群管理和性能优化的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、任务提交流程:

①spark-submit提交任务给Master;
②Master收到任务请求后,通过LaunchDriver向Worker请求启动Driver;
③Worker收到请求后,启动Driver;
④Driver启动后,向Master注册应用(Application)信息;
⑤Master收到注册Application信息后,根据资源情况向Worker发送LaunchExecutor启动Executor;
⑥Worker收到Master的请求后,启动相应的Executor;
⑦Executor启动后负责与Driver通信,执行相关任务。
在这里插入图片描述

2、配置环境变量(路径:spark/conf/spark-env.sh)

Environment VariableMeaning
SPARK_MASTER_HOST将主机绑定到特定的主机名或IP地址,例如公共主机名或IP地址
SPARK_MASTER_PORT在另一个端口上启动主机(默认:7077)
SPARK_MASTER_WEBUI_PORT主节点的Web UI端口
SPARK_MASTER_OPTS主节点的配置属性
SPARK_LOCAL_DIRS用于Spark中“临时”空间的目录,包括映射输出文件和存储在磁盘上的RDD。
SPARK_WORKER_CORES允许Spark应用程序在计算机上使用的内核总数(默认:所有可用内核)
SPARK_WORKER_MEMORY允许Spark应用程序在机器上使用的总内存量(默认:总内存减去1 GB)
SPARK_WORKER_PORT在特定端口上启动Spark worker(默认:随机)
SPARK_WORKER_WEBUI_PORT工作节点的Web UI端口(默认:8081)
SPARK_WORKER_DIR运行应用程序的目录,其中将包括日志和暂存空间(默认:SPARK_HOME/work)
SPARK_WORKER_OPTS工作节点的配置属性
SPARK_DAEMON_MEMORY分配给Spark主节点和工作节点守护进程的内存(默认:1GB)
SPARK_DAEMON_JAVA_OPTSSpark主节点和工作节点守护进程的JVM选项(默认:无)。
SPARK_DAEMON_CLASSPATHSpark主节点和工作节点守护进程的类路径(默认:无)
SPARK_PUBLIC_DNSSpark Master和Workers的公共DNS名称(默认:无)

3、SPARK_MASTER_OPTS的系统属性配置

Property NameDefaultMeaning
spark.deploy.retainedApplications200显示已完成申请的最大数量。旧的应用程序将从UI中删除以保持此限制。
spark.deploy.retainedDrivers200显示已完成Driver的最大数目。旧的Driver将从UI中删除以保持此限制。
spark.deploy.spreadOuttrue独立的集群管理器是否应该将应用程序分散到各个节点上,或者尝试将它们整合到尽可能少的节点上。扩展通常对hdfs中的数据局部性更好,但合并对于计算密集型工作负载更有效。
spark.deploy.defaultCores(infinite)如果未设置spark.cores.max,则以Spark独立模式提供给应用程序的默认内核数。 如果未设置,则应用程序始终会获取所有可用的内核,除非它们自己配置spark.cores.max。 在共享群集上将此值设置得较低,以防止用户默认情况下抓取整个群集。
spark.deploy.maxExecutorRetries10限制在独立群集管理器删除故障应用程序之前可能发生的背对背执行器故障的最大数量。如果应用程序有任何正在运行的执行程序,则永远不会删除该应用程序。如果应用程序连续重试失败次数超过spark.deploy.maxecutor,则没有执行程序在这些失败之间成功地开始运行,并且应用程序没有正在运行的执行程序,则独立群集管理器将删除该应用程序并将其标记为失败。要禁用此自动删除,请将spark.deploy.maxecutorretries设置为-1。
spark.worker.timeout60如果独立部署主服务器未接收到心跳信号,则该秒数之后将认为工作进程已丢失。

4、SPARK_WORKER_OPTS的系统属性配置

Property NameDefaultMeaning
spark.worker.cleanup.enabledfalse启用工作节点/应用程序的定期清理。注意,这只影响独立模式,并不影响YARN模式。
spark.worker.cleanup.interval1800(30minutes)控制工作节点清理本地计算机上旧应用程序工作目录的时间间隔(秒)。
spark.worker.cleanup.appDataTtl604800(7days,7243600)在每个工作机上保留应用程序工作目录的秒数。这是一个生存的时间,应该取决于你有多少可用的磁盘空间。应用程序日志和jar被下载到每个应用程序工作目录。随着时间的推移,工作目录可以快速填充磁盘空间,特别是如果频繁地运行作业时。
spark.storage.cleanupFilesAfterExecutorExittrue在Executor程序退出后启用工作目录的清理非混洗文件。注意,这与spark.worker.cleanup.enabled不重叠,因为这可以清除死掉Executor的本地目录中的非随机文件,而spark.worker.cleanup.enabled则可以清除所有文件。
spark.worker.ui.compressedLogFileLengthCacheSize100对于压缩日志文件,只能通过解压缩文件来计算未压缩文件。 Spark缓存压缩日志文件的未压缩文件大小。 此属性控制缓存大小。
### 启动 Spark 的方法和步骤 启动 Spark 服务或环境通常涉及以下几个方面的工作,具体操作如下: #### 配置 Spark 环境 在 CentOS 或其他 Linux 发行版环境中,首先需要完成 Spark 的安装与配置工作。这包括下载并解压 Spark 安装包、设置环境变量以及调整集群参数[^1]。 ```bash export SPARK_HOME=/path/to/spark export PATH=$SPARK_HOME/bin:$PATH ``` 以上脚本需添加至用户的 `.bashrc` 文件中以便永久生效。 #### 使用 Standalone 模式启动 Spark StandaloneSpark 自带的一种集群管理模式,在该模式下可以轻松测试 Spark 应用程序的功能性和性能表现。以下是具体的启动流程: - **启动 Master 节点** 执行以下命令来初始化主节点: ```bash $SPARK_HOME/sbin/start-master.sh ``` - **启动 Worker 节点** 在每台从机上运行此命令以连接到已定义的 Master 节点: ```bash $SPARK_HOME/sbin/start-slave.sh spark://<Master_IP>:7077 ``` 此时可以通过浏览器访问 `http://<Master_IP>:8080` 来查看集群状态和监控信息[^1]。 #### 基于 YARN 的 Spark 启动方式 当 Spark 运行在 Hadoop 提供的资源管理器 YARN 上时,则按照下面的方式提交作业: 利用 `spark-submit` 工具指定相应的选项即可实现应用部署。例如计算圆周率 Pi 的例子展示如下: ```bash $SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ /path/to/examples/jars/spark-examples_2.11-2.2.0.jar 10 ``` 这里需要注意的是 `--deploy-mode` 参数的选择会影响驱动程序的位置安排;如果是客户端(client),则会在本地机器上运行驱动进程;而若是集群(cluster),那么它会被调度到某个远程节点上去执行[^2]。 #### 解决常见错误——权限不足问题 有时会遇到由于用户身份不当而导致的服务启动失败情况。比如尝试以 root 用户身份启动却遭遇拒绝访问 hdfs 数据目录的情形。对此解决办法就是切换成具有适当授权的角色账户再重试一遍整个过程。像这样: ```bash su - hdfs $SPARK_HOME/bin/spark-shell ``` 如此一来便能有效规避因缺乏必要许可所引发的各种异常状况[^4]。 #### 结合 Hive On Spark 场景下的特殊考量 对于希望集成 Apache Hive 查询引擎同 Spark 计算平台协同工作的场景来说,还需要额外关注两者间的版本匹配关系以免发生冲突现象。一般建议参照官方文档推荐组合选用对应系列号的产品版本来进行联合开发调试活动[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值