Ambari集群Spark3.x动态资源分配

芒果2年前技术文章1209

环境
节点hdp01
HDP3.1.5
hdp02
Spark3.2.4
hdp03
7D23FE6B-3844-4913-9C79-FECF5953A082.png
首先Spark配置History服务
配置spark-defaults.conf
spark.master                     spark://hdp01:7077
spark.eventLog.enabled           true
spark.eventLog.dir               hdfs://ha/sparklogs
spark.history.fs.logDirectory     hdfs://ha/sparklogs
D42C66C6-637D-40AD-85EC-ED320ADCFC85.png
去hdfs创建对应目录
hdfs dfs -mkdir hdfs://ha/sparklogs
开启start-history-server.sh服务
sbin/start-history-server.sh
查看日志情况:
vim /opt/spark/logs/spark-root-org.apache.spark.deploy.history.HistoryServer-1-hdp01.out
启动成功
3C42425E-CFF6-47A6-B9A8-8C274B8E0D8B.png
查看History Server WEB
F67849E5-782F-4913-915D-7EE6C0D50C0A.png
开启动态资源分配前:
提交一个spark任务
bin/spark-shell --master yarn
6127B081-E31D-41FE-BB2E-EC2EB3064550.png

可以看到启动后 已经分配了资源

03160061-2423-4123-A418-979302AC27A2.png

首先配置动态资源分配参数
拷贝spark-version-yarn-shuffle.jar(包含了external shuffle的spark实现)到yarn的lib下
cp /opt/spark/yarn/spark-3.2.4-yarn-shuffle.jar /usr/hdp/3.1.5.0-152/hadoop-yarn/lib/
3F31AFDE-4E3C-4608-B602-C6E9C3F9E52C.png
分发其他节点
[root@hdp01 lib]# scp spark-3.2.4-yarn-shuffle.jar hdp02:$PWD
spark-3.2.4-yarn-shuffle.jar                                                                    100%   12MB  12.5MB/s   00:01    
[root@hdp01 lib]# scp spark-3.2.4-yarn-shuffle.jar hdp03:$PWD
spark-3.2.4-yarn-shuffle.jar                                                                    100%   12MB  12.5MB/s   00:00    
[root@hdp01 lib]#
修改yarn-site.xml配置文件,增加spark shuffle相关的配置:(Ambari界面修改)
<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>

spark.shuffle.service.enabled=true
yarn.nodemanager.aux-services.spark_shuffle.classpath=/opt/spark/yarn/*
yarn.nodemanager.aux-services.spark2_shuffle.classpath=/opt/spark/yarn/*

重启yarn集群

测试动态资源分配
bin/spark-shell \
--master yarn --executor-memory 1g --total-executor-cores 1 \
--conf spark.shuffle.service.enabled=true \
--conf yarn.nodemanager.aux-services.spark_shuffle.classpath=/opt/spark/yarn/*  \
--conf spark.dynamicAllocation.enabled=true  \
--conf spark.dynamicAllocation.executorIdleTimeout=60s \
--conf spark.shuffle.service.port=7337 

查看spark webui 

可以看到没有执行action操作==没有分配Executor

EC0163A9-E03D-454F-AA76-C58696BE1717.png


在spark-shell执行操作
val lineText=sc.textFile("hdfs://ha/spark.txt")
lineText.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)

执行后我们可以看到 执行的时候分配了Executor
6B79F6DF-305C-4059-B67A-C03E912BF149.png
但是过了60s之后Executor没有任务运行 就会remove Executor释放资源。
 再次运行
lineText.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).foreach(println)


返回列表

上一篇:离线部署Mysql 8.X

下一篇:Hue简介

相关文章

ORA-00054报错处理

执行语句报错:ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired原因:如错误信息提示,资源正忙(...

pg_dump

逻辑备份    PG提供了pg_dump、pg_dumpall两种方式进行逻辑备份,其区别就是pg_dumpall只能将数据库全部数据集dump到一个脚本文件中,而pg_dump可以选择指定数据库进行...

flink web监控

flink web监控

1.1 监控指标进入Flink的原生页面,需要从yarn的原生页面的后台链接进入,如下图:这里必须要用supergroup组的用户或者flink提交任务的用户(如果该用户是机机用户不能登录)才能够看到...

手动模拟 flannel 的 vxlan 实现节点命名空间互通

手动模拟 flannel 的 vxlan 实现节点命名空间互通

在flannel网络插件中实现两个节点互通方式有host-gw vxlan ipip等方式,之前已经手动模拟过host-gw模式,此处再模拟一下vxlan模式点对点访问。手动实验两个命名空间通信Nod...

百万并发下的nginx优化

百万并发下的nginx优化

百万并发下的nginx优化之道一、nginx地址重写1、nginx地址重写(rewrite)介绍nginx地址重写的主要功能是实现URL地址的重定向。服务器获得一个来访的URL请求,然后改写成服务器可...

MySQL 官方高可用方案:Innodb ReplicaSet

MySQL 官方高可用方案:Innodb ReplicaSet

说明MySQL Innodb ReplicaSet 是 MySQL 团队在 2020 年推出的一款产品,用来帮助用户快速部署和管理主从复制,在数据库层仍然使用的是主从复制技术。ReplicaSet 主...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。