当前位置:网站首页>Spark3.x入门到精通-阶段七(spark动态资源分配)
Spark3.x入门到精通-阶段七(spark动态资源分配)
2022-07-17 05:24:00 【顶尖高手养成计划】
简介
在spark提交作业以后默认是静态资源分配的,如果有些Executor执行完以后,只要job没有结束,它就会一直占用资源,所以我们要根据情况配置动态资源分配
动态资源分配原理
当调度程序检查到有很多的Task是pending状态的时候,那么它就会尝试去申请新的Executor,如果Executor执行完了以后,就会把资源释放掉给其他的Job使用,它是由spark.dynamicAllocation.schedulerBacklogTimeout这个参数设置的,默认1秒就去检查一次,它申请资源的时候是成倍的去申请的,比如第一个1个,第二次2个,第三次4个,当Executor释放的时候,shuffle写出的数据不会在job停止之前删除,但是Executor缓存的 数据会被删除
standalone模式时使用
准备
开启shuffle-service(它的作用就是在Executor释放以后可以保存shuffle write的数据,只要在提交的机器启动就行)
./start-mesos-shuffle-service.sh查看有没有开启服务 ,如果开启了那么会启动7337端口
sudo netstat -tunlp | grep 7337不使用动态分配情况
./spark-shell --master spark://hadoop102:7077启动以后


可以看到在没有执行action之前已经分配了资源
使用动态分配以后
./spark-shell --master spark://hadoop102:7077 \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.dynamicAllocation.executorIdleTimeout=60s \
--conf spark.shuffle.service.port=7337

可以看到,在没有使用action操作前,还没有分配资源
这个时候我们在spark-shell里面执行操作(测试一个wordcount程序)
val lineText=sc.textFile("hdfs://hadoop102:8020/data.txt")lineText.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)
在监控页面我们可以清晰的看到,动态的启动了两个Executor

可以看到执行完以后Executor被移除掉了

Yarn模式使用
准备
配置好spark的历史服务器,然后启动(在我的hive第一阶段有教程)
./start-history-server.sh开始
bin/spark-shell \
--master yarn如图,程序一启动资源就已经分配

使用动态分配的情况
首先在下载好的spark安装包下有一个yarn目录,有一个spark-version-yarn-shuffle.jar,拷贝jar包到yarn的lib目录下,这里面就包含了external shuffle的spark实现。

cp spark-3.0.0-yarn-shuffle.jar ${HADOOP_HOME}/share/hadoop/yarn/lib/spark-3.0.0-yarn-shuffle.jar(注意:不是${HADOOP_HOME}下的lib目录)
修改配置文件
接下来需要修改yarn-site.xml配置文件,增加spark shuffle相关的配置:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>spark_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
<value>org.apache.spark.network.yarn.YarnShuffleService</value>
</property>
<property>
<name>spark.shuffle.service.port</name>
<value>7337</value>
</property>对于刚才的修改分发到hadoop的其他集群
#xsync是分发脚本在我的shell专栏里面有
./xsync /home/bigdata/hadoop/hadoop/share/hadoop/yarn/lib/分发配置文件
./xsync /home/bigdata/hadoop/hadoop/etc/hadoop重启hadoop集群
./hadoop.sh start测试
bin/spark-shell \
--master yarn \
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.dynamicAllocation.executorIdleTimeout=60s \
--conf spark.shuffle.service.port=7337上面就是加上了,还有配置了yarn,还有复制了一个jar包到lib目录下
--conf spark.shuffle.service.enabled=true \
--conf spark.dynamicAllocation.enabled=true \
--conf spark.dynamicAllocation.executorIdleTimeout=60s \
--conf spark.shuffle.service.port=7337 \可以看到在没有执行action操作之前就没有分配Exector

在spark-shell执行
val lineText=sc.textFile("hdfs://master:8020/data.txt")lineText.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)执行以后看到如图分配了Exector

60s以后如果Exector没有任务执行那么如下如移除了Exector

多Job调度策略
默认是先进先出,我们可以配置为公平调度器FAIR(spark作为服务端要启动多个job的时候可以配置)
spark.scheduler.mode FIFO边栏推荐
- express
- OpenSUSE install Netease cloud music (tumblefeed) (LEAP)
- Slackware 14.2 installing KDE 5 plasma
- 深度学习笔记 Coursera Deep learning Notes
- Web Security (XSS and CSRF)
- Prevent blackmail attacks through data encryption schemes
- Data analysis and visualization -- the shoes with the highest sales volume on jd.com
- 一刻钟读懂gPTP
- 爬虫基础—WEB网页基础
- Redis 详解
猜你喜欢

Network knowledge-05 transport layer UDP

urllib库的使用

网络知识-05 传输层-TCP

Pycharm安装教程

Fundamentals of reptiles - basic principles of reptiles

Network knowledge-03 data link layer PPPoE

Data analysis and visualization -- the shoes with the highest sales volume on jd.com

Notepad++ underline and case letter replacement

Use of urllib Library

爬虫基础—多线程和多进程的基本原理
随机推荐
Pychart installation tutorial
Component emit Foundation
Network knowledge-05 transport layer UDP
day01(Flume)
Connaissance du réseau - 03 couche de liaison de données - PPPoE
My world 1.12.2 Magic Baby (Fairy treasure dream) service opening tutorial
MySql02 函数substr mod 视图view
Matlab simulation of cognitive femtocell performance in m3gpp LTE communication network
Review of 4705 NLP
Network knowledge-03 data link layer PPP
Solve MySQL (1064) error: 1064 - you have an error in your SQL syntax;
Redis details
SQL skimming summary SQL leetcode review
express
FreeBSD 12 installing RPM packages
SSM整合
M simulation of DQPSK modulation and demodulation technology based on MATLAB
MySql
M simulation of cooperative MIMO distributed space-time coding technology based on MATLAB
用for循环怎么输出数字菱形啊