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

芒果2年前技术文章1093

环境
节点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简介

相关文章

centos6下时间修改

1、手动修改1)使用date命令修改的时间是系统时间临时生效的,重启系统后失效,需要将当前时间和硬件时间同步后才可以持久生效。date -s "2012-05-23 01:01:01&quo...

MySQL运维实战之ProxySQL(9.9)proxysql自身高可用

MySQL运维实战之ProxySQL(9.9)proxysql自身高可用

proxysql作为一个程序,本身也可能出现故障。部署proxysql的服务器也肯能出现故障。高可用架构的一个基本原则是消除单点。可以在多个节点上部署proxysql,在proxysql之前再加一层负...

MongoDB复制原理

一、Initial Sync大体来说,MongoDB副本集同步主要包含两个步骤: 1. Initial Sync,全量同步 2. Replication,即sync oplog 先通过init syn...

MySQL运维实战之备份和恢复(8.9)xtrabackup备份指定表

备份部分表如果实例设置了参数innodb_file_per_table,xtrabackup可以备份部分表。通过--tables,--tables-file,--databases,--databas...

理解YAML文件

YAML 基础它的基本语法规则如下:大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。缩进的空格数目不重要,只要相同层级的元素左侧对齐即可# 表示注释,从这个字符一直到行尾,都会...

Redis Sentinel与Cluster安装部署(二)

3.2cluster部署1、在对应的机器,下载、解压redis #详见sentinel部署内相关命令 2、创建对应的文件目录   mkdir -p /usr/lcoal/redis5/clust...

发表评论    

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