Spark on yarn 动态资源配置

櫰木2年前技术文章868

1、背景

spark on yarn 的环境下,开源的spark 默认是关闭动态分配申请资源的。每次提交时,需要手动定义--num-executors 的数量。

为了提交任务方便,需要开启动态分配资源

spark.dynamicAllocation.enabled   true

但是需要注意的是,在提交实时任务时,需要手动定义资源数。不然有可能会将所有yarn的资源占用

2、配置

2.1 配置yarn-site.xml

  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle,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>7037</value>
  </property>
  <property>
    <name>spark.yarn.shuffle.service.metrics.namespace</name>
    <value>sparkShuffleService</value>
  </property>

在yarn.nodemanager.aux-services添加spark_shuffle

添加yarn.nodemanager.aux-services.spark_shuffle.class,spark.shuffle.service.port,spark.yarn.shuffle.service.metrics.namespace参数

2.2 配置spark jar包

在spark的安装目录yarn目录下找到spark-xxxx-yarn-shuffle.jar包

将其复制到hadoop home的share/hadoop/yarn/目录下。

本次测试集群的目录为/opt/hadoop/share/hadoop/yarn/

cp /opt/spark/yarn/spark-3.3.1-yarn-shuffle.jar /opt/hadoop/share/hadoop/yarn/

2.1和2.2的操作在所有yarn 节点执行。

重启yarn 服务。登录8088的yarn web ui检测nodemanager是否启动成功

image.png

2.3 spark 配置开启动态资源

在spark-defaults.conf中定义配置

spark.dynamicAllocation.enabled true
spark.shuffle.service.enabled true
spark.dynamicAllocation.initialExecutors 2
spark.dynamicAllocation.minExecutors 1
spark.dynamicAllocation.maxExecutors 100
spark.executor.instances 2

在配置文件中定义是默认开启的。也可以在提交时进行定义

spark-sql  --master yarn --conf spark.shuffle.service.enabled=true --conf spark.dynamicAllocation.enabled=true -e "SELECT COUNT(*) FROM test1"

image.png


相关文章

手动模拟 CNI 网络中 host-gw 模式互通

手动模拟 CNI 网络中 host-gw 模式互通

在Kubernetes中,CNI的作用就是让两台Node节点之间的Pod能够互相通信,其中有封包的方式,也有路由转发的方式,host-gw就是路由转发的方式。host-gw 模式介绍host-gw模式...

K8s Pod无法访问SLB地址

K8s Pod无法访问SLB地址

一、问题现象客户反馈172.16.11.220 telnet 47.99.87.129 80 不通,另一台172.16.11.219可以通。二、排查思路172.16.11.220,172.16.11....

根目录扩容

根目录扩容

1、创建一个空分区创建分区:查看创建的新分区:2、开始扩容(1)创建物理卷[root@web03 ~]# lvm lvm> pvcreate /dev/vdb1   Physical vol...

Fsimage 和 Edits 解析

Fsimage 和 Edits 解析

1、Fsimage和Edits概念 NameNode被格式化之后,将在所配置的存储目录中产生如下文件,fsimage和editslog文件存储在dfs.namenode.name.dir所设的路径下。...

HBase 的 BulkLoad 机制

HBase 的 BulkLoad 机制

1.概述在实际生产环境中,有这样一种场景:用户数据位于HDFS中,业务需要定期将这部分海量数据导入 HBase 系统,以执行随机查询更新操作。这种场景如果调用写入 API 进行处理,极有可能会给 Re...

ES基础知识介绍

ES 核心概念ES 是使用 Java 编写的一种开源搜索引擎,它在内部使用 Lucene 做索引与搜索,通过对 Lucene 的封装,隐藏了 Lucene 的复杂性,取而代之的提供一套简单一致的 RE...

发表评论    

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