spark 资源优化之道

本文针对SparkJob在执行过程中遇到的资源分配问题,如资源不足、分配过多及队列紧张等,提出评估数据量合理配置资源、控制并发与并行度以及执行参数调整的建议。通过调整如spark.yarn.am.memory、spark.executor.instances等参数,可显著提升Spark集群使用效率及job执行成功率。

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

在spark job执行中,我们通常会遇到这样那样的奇怪问题。该节主要介绍开发部署中遇到的一些资源分配问题。

如:资源不足,资源分配过多,队列紧张等很多很多问题。

在工程实践中,我们都希望自己的job 能够以最快的速度,最优的流程执行,以提高我们效率。于是乎我们往往在spark job提交的配置脚本中配置的job的资源越多越好,这就带来的一个问题,集群资源有限,可用资源不能够满足大资源的job,从而使得很多job 不能执行。为此造成问题,job不能按时执行完成。为此,提出以下几点建议,希望能够有所帮助。提高spark 集群的使用效率和job顺利执行。

1. 提交的job 首先评估处理的数据量,以便配置合理的内存,core 资源,避免过多分配和分配不足等问题;

Excutor;

Core;

Memory;

2. 控制并发和并行度

并行度(partition数目)由初始数据大小,数据类型,程序设定,分配的executor, core 数据目共同决定

考虑以上设置后,job 执行基本保证顺利完成。

但在生产集群上,我们还需要注意就是job 的并行执行限制,生产集群为保证系统稳定,往往会添加其他限制,如:job 数,单个job 最大资源等,需要根据实际情况,调整参数。

3.执行参数调整,配置参数及说明

摘要:Spark 参数调优,可以大大提高工作中程序的运行效率。

下面简单介绍一下这些常用的调优参数

 

属性名称 默认值 含义

spark.yarn.am.memory 512m client模式下,YARN Application Master使用的内存总量

spark.yarn.am.cores 1 client模式下,Application Master使用的cpu数量

spark.driver.cores 1 cluster模式下,driver使用的cpu core数量,driver与Application Master运行在一个进程中,所以也控制了Application Master的cpu数量

spark.yarn.am.waitTime 100s cluster模式下,Application Master要等待SparkContext初始化的时长; client模式下,application master等待driver来连接它的时长

spark.yarn.submit.file.replication hdfs副本数 作业写到hdfs上的文件的副本数量,比如工程jar,依赖jar,配置文件等,最小一定是1

spark.yarn.preserve.staging.files false 如果设置为true,那么在作业运行完之后,会避免工程jar等文件被删除掉

spark.yarn.scheduler.heartbeat.interval-ms 3000 application master向resourcemanager发送心跳的间隔,单位ms

spark.yarn.scheduler.initial-allocation.interval 200ms application master在有pending住的container分配需求时,立即向resourcemanager发送心跳的间隔

spark.yarn.max.executor.failures executor数量*2,最小3 整个作业判定为失败之前,executor最大的失败次数

spark.yarn.historyServer.address 无 spark history server的地址

spark.yarn.dist.archives 无 每个executor都要获取并放入工作目录的archive

spark.yarn.dist.files 无 每个executor都要放入的工作目录的文件

spark.executor.instances 2 默认的executor数量

spark.yarn.executor.memoryOverhead executor内存10% 每个executor的堆外内存大小,用来存放诸如常量字符串等东西

spark.yarn.driver.memoryOverhead driver内存7% 同上

spark.yarn.am.memoryOverhead AM内存7% 同上

spark.yarn.am.port 随机 application master端口

spark.yarn.jar 无 spark jar文件的位置

spark.yarn.access.namenodes 无 spark作业能访问的hdfs namenode地址

spark.yarn.containerLauncherMaxThreads 25 application master能用来启动executor container的最大线程数量

spark.yarn.am.extraJavaOptions 无 application master的jvm参数

spark.yarn.am.extraLibraryPath 无 application master的额外库路径

spark.yarn.maxAppAttempts 提交spark作业最大的尝试次数

spark.yarn.submit.waitAppCompletion true cluster模式下,client是否等到作业运行完再退出

### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值