spark on yarn 的 executor、cores、driver 作用及配置

这篇具有很好参考价值的文章主要介绍了spark on yarn 的 executor、cores、driver 作用及配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

参数意义

spark on yarn 的常用提交命令如下:

${SPARK_HOME}/bin/spark-submit --class org.apache.spark.examples.SparkPi \
    --master yarn \
    --deploy-mode cluster \
    --driver-memory 2g \
    --executor-memory 1g \
    --executor-cores 4 \
    --num-executors 3 \
    --queue default \
    ${SPARK_HOME}/examples/jars/spark-examples*.jar \
    10
  • num-executors 指要使用的 executor 的数量。
  • executor-memory 指每个 executor 分配的内存大小。
  • executor-cores 指每个 executor 的分配的 cpu core 数量。
  • driver-memory 指 driver 分配的内存大小。

提交的应用程序在 AM 中运行起来就是一个 driver,它构建 sparkContext 对象、DAGScheduler 对象、TaskScheduler 对象、将 RDD 操作解析成有向无环图、依据宽窄依赖划分 stage、构建 task、封装 taskSet 等等,这些操作都需要占用内存空间,driver-memory 就是为其分配内存。

rdd 最终被解析成一个个 task 在 executor 中执行,每一个 cpu core 执行一个 task。集群上有 num-executors 个 executor,每个 executor 中有 executor-cores 个 cpu core,则同一时刻最大能并行处理 num-executors * executor-cores 个 task,也就是说这两个参数调整 task 的最大并行处理能力,实际的并行度还跟数据分区数量有关

executor 的内存结构如下图所示,由 yarn overhead memory 和 JVM Heap memory 两部分构成,其中 JVM Heap memory 又可分为 RDD cache memory、shuffle memory、work heap 三部分,executor-memory 表示 JVM Heap 的大小。spark 比 mapreduce 速度快的原因之一是它将计算的中间结果保存在内存中,而不是写回磁盘。所以当内存越大时,RDD 就可以缓存更很多的数据、shuffle 操作可以更多地使用内存,将尽量少的数据写入磁盘,从而减少磁盘IO;在task执行时,更大的内存空间意味着更少频率地垃圾回收,从这个点上又能提升性能。当然内存空间也不是越大越好,要大了集群分配不出来,yarn 直接将任务 kill 了,不过一定程度上提高资源的申请的确可以提高任务执行的效率。


如何充分利用申请到的资源

充分地利用资源,才能让任务的执行效率更。这个其实也简单,一句话:task 任务的数量和 executor cores 的数量相匹配。假设 executor-cores=4、num-executors=3 则能实现 12 task 并行执行。但如果执行某个 stage 时 task 少于 12 个,这就导致了申请到的资源浪费了,而且执行效率相对低。

# 总数据量 12G 时:
分区		每个分区数据量    使用的 cores   效率
10 			1.2G		    1012 			10G			    12

官方文档有这段描述

Clusters will not be fully utilized unless you set the level of parallelism for each operation high enough.
Spark automatically sets the number of “map” tasks to run on each file according to its size (though you can 
control it through optional parameters to SparkContext.textFile, etc), and for distributed “reduce” operations, 
such as groupByKey and reduceByKey, it uses the largest parent RDD’s number of partitions. You can pass the 
level of parallelism as a second argument (see the spark.PairRDDFunctions documentation), or set the config 
property spark.default.parallelism to change the default. In general, we recommend 2-3 tasks per CPU core in 
your cluster.

细节自己看了,在 reduce 操作时,例如 reduceByKey 和 groupByKey,可以通过参数修改分区数,也可以在配置文件中使用 spark.default.parallelism 修改分区数。通常,建议每个 CPU core 分配 2-3 个 task,即 task 数量是全部 cores 的 2-3 倍。文章来源地址https://www.toymoban.com/news/detail-408410.html

到了这里,关于spark on yarn 的 executor、cores、driver 作用及配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (超详细)Spark on Yarn安装配置

    1,前期准备 使用 root 用户完成相关配置,已安装配置Hadoop 及前置环境 2,spark上传解压到master服务器 3,修改环境变量  /etc/profile末尾添加下面代码 4,环境变量生效 5,运行spark-submit --version 显示如下 6,修改saprk-env.sh文件   在.../spark-3.1.1-bin-hadoop3.2/conf目录下,将下面两行

    2024年03月21日
    浏览(43)
  • 《PySpark大数据分析实战》-12.Spark on YARN配置Spark运行在YARN上

    📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP)、TiDB数据库认证SQL开发专家(PCSD)认证。 通过了微软Azure开发人员、Azure数据工程师、Azure解决

    2024年02月03日
    浏览(53)
  • Spark中的Driver、Executor、Stage、TaskSet、DAGScheduler等介绍

    工作流程: Driver 创建 SparkSession 并将应用程序转化为执行计划,将作业划分为多个 Stage,并创建相应的 TaskSet。 Driver 将 TaskSet 发送给 TaskScheduler 进行调度和执行。 TaskScheduler 根据资源情况将任务分发给可用的 Executor 进程执行。 Executor 加载数据并执行任务的操作,将计算结果

    2024年02月04日
    浏览(42)
  • Spark内存资源分配——spark.executor.memory等参数的设置方法

    基于论坛上一些关于spark内存设置的文章,我对一个项目中实际运行的任务进行了内存参数分析和优化。如果要了解更多详细设置原理,可见文末的参考文章链接。 已知内存分配存在通过用户提交的参数设置进行静态分配,和yarn进行动态分配两种,所以本文对两种状况都根据

    2023年04月13日
    浏览(111)
  • kyuubi整合spark on yarn

    目标: 1.实现kyuubi spark on yarn 2.实现 kyuubi spark on yarn 资源的动态分配 注意:版本 kyuubi 1.8.0 、 spark 3.4.2 、hadoop 3.3.6 前置准备请看如下文章 文章 链接 hadoop一主三从安装 链接 spark on yarn 链接 官网下载地址 官方文档 修改配置文件 三千五百万 主键id单笔获取 非主键 count 测试 差

    2024年04月08日
    浏览(37)
  • Spark on Yarn模式下执行过程

    Driver Application启动 Driver Application启动:用户提交的Spark Application在YARN上启动一个ApplicationMaster(即Driver Application)进程来管理整个应用程序的生命周期,并向ResourceManager请求资源。 获得资源 Driver Application向ResourceManager请求可用的资源(CPU核数、内存等),并等待接收到资源

    2024年02月01日
    浏览(48)
  • Spark On Yarn的两种运行模式

    Spark On YARN是有两种运行模式:Cluster模式、Client模式 Cluster模式:Driver运行在YARN容器内部,和ApplicationMaster在同一个容器内。 Client模式即:Driver运行在客户端进程中,比如Driver运行在spark-submit程序的进程中。 Client模式详细流程 YARN Client模式下,Driver在任务提交的本地机器上运

    2024年02月02日
    浏览(50)
  • Spark on Yarn集群模式搭建及测试

    🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 点击传送:大数据学习专栏 持续更新中,感谢各位前辈朋友们支持学习~ Apache Spark是一个快速的、通用的大数据处理框架,它支持在各种环境中进行分布式数据处理和分析。在Yarn集群模式下搭建Spark环境可以充分利用Hadoop的资源

    2024年02月11日
    浏览(45)
  • Spark on YARN 部署搭建详细图文教程

    目录 一、引言  二、SparkOnYarn 本质 2.1 Spark On Yarn 的本质? 2.2 Spark On Yarn 需要啥? 三、配置 spark on yarn 环境 3.1 spark-env.sh  3.2 连接到 YARN 中 3.2.1 bin/pyspark 3.2.2 bin/spark-shell 3.2.3 bin/spark-submit (PI) 四、部署模式 DeployMode  4.1 Cluster 模式 4.2 Client 模式 4.3 两种模式的区别  4.4 测试

    2024年02月06日
    浏览(39)
  • Spark On YARN时指定Python版本

    坑很多,直接上兼容性最佳的命令,将python包上传到 hdfs 或者 file:/home/xx/ (此处无多余的 / ) 具体细节 关于 Python包 打包可以参考 https://www.jianshu.com/p/d77e16008957,https://blog.csdn.net/sgyuanshi/article/details/114648247 非官方的python,比如 anaconda的python可能会有坑 ,所以最好先用官方版本

    2023年04月18日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包