spark 资源优化之道

在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是否等到作业运行完再退出

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值