千家信息网

Spark怎么进行动态资源分配

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇内容介绍了"Spark怎么进行动态资源分配"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、操作
千家信息网最后更新 2025年02月04日Spark怎么进行动态资源分配

本篇内容介绍了"Spark怎么进行动态资源分配"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、操作场景

对于Spark应用来说,资源是影响Spark应用执行效率的一个重要因素。当一个长期运行的服务,若分配给它多个Executor,可是却没有任何任务分配给它,而此时有其他的应用却资源紧张,这就造成了很大的资源浪费和资源不合理的调度。

动态资源调度就是为了解决这种场景,根据当前应用任务的负载情况,实时的增减Executor个数,从而实现动态分配资源,使整个Spark系统更加健康。

二、动态资源策略

1、资源分配策略

开启动态分配策略后,application会在task因没有足够资源被挂起的时候去动态申请资源,这种情况意味着该application现有的executor无法满足所有task并行运行。spark一轮一轮的申请资源,当有task挂起或等待spark.dynamicAllocation.schedulerBacklogTimeout(默认1s)`时间的时候,会开始动态资源分配;之后会每隔spark.dynamicAllocation.sustainedSchedulerBacklogTimeout(默认1s)时间申请一次,直到申请到足够的资源。每次申请的资源量是指数增长的,即1,2,4,8等。
之所以采用指数增长,出于两方面考虑:其一,开始申请的少是考虑到可能application会马上得到满足;其次要成倍增加,是为了防止application需要很多资源,而该方式可以在很少次数的申请之后得到满足。

2、资源回收策略

当application的executor空闲时间超过spark.dynamicAllocation.executorIdleTimeout(默认60s)后,就会被回收。

三、操作步骤

1、yarn的配置

首先需要对YARN进行配置,使其支持Spark的Shuffle Service。

修改每台集群上的yarn-site.xml:

 - 修改yarn.nodemanager.aux-servicesmapreduce_shuffle,spark_shuffle
 - 增加yarn.nodemanager.aux-services.spark_shuffle.classorg.apache.spark.network.yarn.YarnShuffleServicespark.shuffle.service.port7337

将$SPARKHOME/lib/spark-X.X.X-yarn-shuffle.jar拷贝到每台NodeManager的${HADOOPHOME}/share/hadoop/yarn/lib/下, 重启所有修改配置的节点。

2、Spark的配置

配置$SPARK_HOME/conf/spark-defaults.conf,增加以下参数:

spark.shuffle.service.enabled true   //启用External shuffle Service服务spark.shuffle.service.port 7337 //Shuffle Service默认服务端口,必须和yarn-site中的一致spark.dynamicAllocation.enabled true  //开启动态资源分配spark.dynamicAllocation.minExecutors 1  //每个Application最小分配的executor数spark.dynamicAllocation.maxExecutors 30  //每个Application最大并发分配的executor数spark.dynamicAllocation.schedulerBacklogTimeout 1s spark.dynamicAllocation.sustainedSchedulerBacklogTimeout 5s

四、启动

使用spark-sql On Yarn执行SQL,动态分配资源。以yarn-client模式启动ThriftServer:

cd $SPARK_HOME/sbin/./start-thriftserver.sh \--master yarn-client \--conf spark.driver.memory=10G \--conf spark.shuffle.service.enabled=true \--conf spark.dynamicAllocation.enabled=true \--conf spark.dynamicAllocation.minExecutors=1 \--conf spark.dynamicAllocation.maxExecutors=300 \--conf spark.dynamicAllocation.sustainedSchedulerBacklogTimeout=5s

启动后,ThriftServer会在Yarn上作为一个长服务来运行。

"Spark怎么进行动态资源分配"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

资源 分配 动态 资源分配 配置 策略 应用 服务 情况 时间 运行 任务 内容 场景 指数 时候 更多 知识 一轮 增长 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 娄底国家网络安全宣传周 网络营销与数据库营销的关系 软考信息技术处理员数据库题 网络安全监管电话 企业网络安全警示教育 联通宽带网络安全性低怎么改 闵行区服务软件开发哪里好 护苗网络安全课堂5 云服务器公网宽带什么意思 开放平台服务器英文 数据库角色功能 数据库开发转正总结简短 怎么在页面引入前端数据库 大学本科软件开发 嘉兴网络技术服务报价 战略支援部的计算机网络技术好吗 涉密网络安全保密策略 关闭软件时会不会关闭数据库连接 街机联机服务器 微信支付结果怎么存入数据库 fpga软件开发过程 上海市局网络安全保卫总队 正道信息网络技术咨询服务部 网络安全教育宣传意义 服务器系统共享权限设置方法 临沂金球网络技术公司 软件开发过程有哪些模型 网络安全与网贷的宣传栏 软件开发的职业态度 广东乐资互联网科技有限公司
0