Hive on Spark调优(大数据技术3)

news2024/12/30 3:32:44

3.1 Executor配置说明

3.1.1 Executor CPU核数配置

      单个Executor的CPU核数,由spark.executor.cores参数决定,建议配置为4-6,具体配置为多少,视具体情况而定,原则是尽量充分利用资源。

      此处单个节点共有16个核可供Executor使用,则spark.executor.core配置为4最合适。原因是,若配置为5,则单个节点只能启动3个Executor,会剩余1个核未使用;若配置为6,则只能启动2个Executor,会剩余4个核未使用。

3.1.2 Executor内存配置

Spark在Yarn模式下的Executor内存模型如下图所示:

         Executor相关的参数有:spark.executor.memory和spark.executor.memoryOverhead。spark.executor.memory用于指定Executor进程的堆内存大小,这部分内存用于任务的计算和存储;spark.executor.memoryOverhead用于指定Executor进程的堆外内存,这部分内存用于JVM的额外开销,操作系统开销等。两者的和才算一个Executor进程所需的总内存大小。默认情况下spark.executor.memoryOverhead的值等于spark.executor.memory*0.1。

        以上两个参数的推荐配置思路是,先按照单个NodeManager的核数和单个Executor的核数,计算出每个NodeManager最多能运行多少个Executor。在将NodeManager的总内存平均分配给每个Executor,最后再将单个Executor的内存按照大约10:1的比例分配到spark.executor.memory和spark.executor.memoryOverhead。

根据上述思路,可得到如下关系:

(spark.executor.memory+spark.executor.memoryOverhead)= yarn.nodemanager.resource.memory-mb * (spark.executor.cores/yarn.nodemanager.resource.cpu-vcores)

经计算,此处应做如下配置:

spark.executor.memory    14G
spark.executor.memoryOverhead    2G

3.1.3 Executor个数配置

此处的Executor个数是指分配给一个Spark应用的Executor个数,Executor个数对于Spark应用的执行速度有很大的影响,所以Executor个数的确定十分重要。

一个Spark应用的Executor个数的指定方式有两种,静态分配动态分配

1)静态分配

可通过spark.executor.instances指定一个Spark应用启动的Executor个数。这种方式需要自行估计每个Spark应用所需的资源,并为每个应用单独配置Executor个数。

2)动态分配

动态分配可根据一个Spark应用的工作负载,动态的调整其所占用的资源(Executor个数)。这意味着一个Spark应用程序可以在运行的过程中,需要时,申请更多的资源(启动更多的Executor),不用时,便将其释放。

在生产集群中,推荐使用动态分配。动态分配相关参数如下:

#启动动态分配
spark.dynamicAllocation.enabled    true
#启用Spark shuffle服务
spark.shuffle.service.enabled    true
#Executor个数初始值
spark.dynamicAllocation.initialExecutors    1
#Executor个数最小值
spark.dynamicAllocation.minExecutors    1
#Executor个数最大值
spark.dynamicAllocation.maxExecutors    12
#Executor空闲时长,若某Executor空闲时间超过此值,则会被关闭
spark.dynamicAllocation.executorIdleTimeout    60s
#积压任务等待时长,若有Task等待时间超过此值,则申请启动新的Executor
spark.dynamicAllocation.schedulerBacklogTimeout    1s
#spark shuffle老版本协议
spark.shuffle.useOldFetchProtocol true

说明:Spark shuffle服务的作用是管理Executor中的各Task的输出文件,主要是shuffle过程map端的输出文件。由于启用资源动态分配后,Spark会在一个应用未结束前,将已经完成任务,处于空闲状态的Executor关闭。Executor关闭后,其输出的文件,也就无法供其他Executor使用了。需要启用Spark shuffle服务,来管理各Executor输出的文件,这样就能关闭空闲的Executor,而不影响后续的计算任务了。

3.2 Driver配置说明

Driver主要配置内存即可,相关的参数有spark.driver.memory和spark.driver.memoryOverhead。

spark.driver.memory用于指定Driver进程的堆内存大小,spark.driver.memoryOverhead用于指定Driver进程的堆外内存大小。默认情况下,两者的关系如下:

spark.driver.memoryOverhead=spark.driver.memory*0.1。两者的和才算一个Driver进程所需的总内存大小。

一般情况下,按照如下经验进行调整即可:假定yarn.nodemanager.resource.memory-mb设置为X。

若X>50G,则Driver可设置为12G,

若12G<X<50G,则Driver可设置为4G。

若1G<X<12G,则Driver可设置为1G。 

此处yarn.nodemanager.resource.memory-mb为64G,则Driver的总内存可分配12G,所以上述两个参数可配置为。

spark.driver.memory    10G
spark.yarn.driver.memoryOverhead    2G

3.3 Spark配置实操

1)修改spark-defaults.conf文件

(1)修改$HIVE_HOME/conf/spark-defaults.conf

spark.master                               yarn
spark.eventLog.enabled                   true
spark.eventLog.dir    hdfs://myNameService1/spark-history
spark.executor.cores    4
spark.executor.memory    14g
spark.executor.memoryOverhead    2g
spark.driver.memory    10g
spark.driver.memoryOverhead    2g
spark.dynamicAllocation.enabled  true
spark.shuffle.service.enabled  true
spark.dynamicAllocation.executorIdleTimeout  60s
spark.dynamicAllocation.initialExecutors    1
spark.dynamicAllocation.minExecutors  1
spark.dynamicAllocation.maxExecutors  12
spark.dynamicAllocation.schedulerBacklogTimeout 1s
spark.shuffle.useOldFetchProtocol    true

2)配置Spark shuffle服务

Spark Shuffle服务的配置因Cluster Manager(standalone、Mesos、Yarn)的不同而不同。此处以Yarn作为Cluster Manager。

(1)拷贝$SPARK_HOME/yarn/spark-3.0.0-yarn-shuffle.jar到

$HADOOP_HOME/share/hadoop/yarn/lib

(2)分发$HADOOP_HOME/share/hadoop/yarn/lib/yarn/spark-3.0.0-yarn-shuffle.jar

(3)修改$HADOOP_HOME/etc/hadoop/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>

(4)分发$HADOOP_HOME/etc/hadoop/yarn-site.xml文件

(5)重启Yarn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/535046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时尚达人的深度学习:非洲服装检测

介绍 时尚在医疗、教育和农业等不同领域的人工智能领域并没有受到太多关注&#xff0c;包括机器学习、深度学习。这是因为时尚不被认为是一个关键领域. 时尚和文化在 AI 中并没有得到公正的对待。这是一个令人兴奋的项目&#xff0c;我们将在 8 种当地非洲服装之间建立一个分类…

科大讯飞版ChatGPT,厉害了!

前几天科大讯飞的星火认知大模型发布了&#xff0c;我刚好有朋友在科大讯飞工作&#xff0c;于是就第一时间体验了一波。 一番体验下来确实比我预想的效果要好&#xff0c;没想到国产模型的效果还不错&#xff0c;我试了很多方面&#xff0c;比如通用常识功能、写作功能、学习能…

2023 开源之夏来啦!报名 MegEngine 项目,赢取万元奖金!

“开源软件供应链点亮计划-暑期2023”是一项面向高校学生的暑期活动&#xff0c;为高校学生提供了绝佳的、友好开放的交流平台。使学生可以真正投身于开源软件的开发维护&#xff0c;得到资深开源软件开发者指导的机会&#xff0c;获得丰硕的活动奖金&#xff0c;并帮助学生获取…

【送书】前端系列14集-Vue3-setup

送书活动&#xff1a;挑选1名粉丝同学哦 免费包邮送。截止时间&#xff1a;2023/5/18号 19 : 00参与底部评论区说说&#xff1a;请在评论中分享你的阅读收获。 前端工程化&#xff1a;基于Vue.js 3.0的设计与实践实战 页面浏览量&#xff08;Page View&#xff0c;PV&#xff…

【004】C++数据类型之字符类型(char)详解

C数据类型之字符类型详解 引言一、背景知识二、字符常量三、字符变量四、键盘&#xff08;输入设备&#xff09;给字符变量赋值五、字符常量和字符串常量的区别六、案例&#xff1a;字符大小写转换总结 引言 &#x1f4a1; 作者简介&#xff1a;专注于C/C高性能程序设计和开发&…

知识变现海哥|为什么你无法将学到的知识变现

秋叶大叔在公众号里发了这样一篇文章《为什么今天的年轻人更要读大学&#xff1f;》&#xff0c;文章里提到这样一个观点&#xff1a;一个人的专业能力要获得优质的回报&#xff0c;还需要学一样「变现技能」。 我不由得想问一个问题&#xff1a;你真的理解变现能力吗&#xf…

微信公众号服务号客服对接-唯一客服系统文档中心

微信公众号客服功能&#xff0c;需要公众号为认证的服务号&#xff0c;可以实现公众号模板消息提醒&#xff0c;网页授权获取到微信的昵称头像&#xff0c;机器人或AI自动回复功能等 微信公众号后台设置 【设置与开发】【基本配置】 设置好公众号的AppID AppSecret IP白名单 【…

亚马逊云科技助力默沙东,用数字化技术赋能医药市场营销

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 在全球药企中&#xff0c;默沙东是封神的存在。提及其明星药物&#xff0c;我们接种的乙肝疫苗、麻疹疫苗、宫颈癌九价疫苗、快速短效麻醉剂、抗生素青霉素钾等药物皆出自于默沙东。 2022年&#xff0c;全球药企TOP 10营业收…

ChatGPT国内免费使用方法有哪些?

目录 ChatGPT介绍:一、ChatGPT是什么?二、ChatGPT发展:三、ChatGPT 优点:四、国内使用ChatGPT方法五、结语: ChatGPT介绍: 一、ChatGPT是什么? ChatGPT 是一个基于语言模型 GPT-3.5 的聊天机器人&#xff0c;ChatGPT模型是Instruct GPT的姊妹模型&#xff08;siblingmodel&a…

Lighttpd服务器安装

目录 >1服务器安装配置 1.解压 2.进入源码目录&#xff0c;创建文件夹web 3.执行configure脚本文件 4.执行Makefile文件 >2目录创建及文件移动 1.将源码目录lighttpd-1.4.54下web文件夹移动到某个路径下 2.在web目录下创建文件夹&#xff08;config、log、run、www&#…

jsp+springboot酒店客房管理系统 i59uz

&#xff08;1&#xff09;管理员模块&#xff1a;系统记录管理员号以及密码&#xff0c;以及对权限的设置&#xff0c;对酒店进行信息管理&#xff0c;对房客进行信息的登记和修改&#xff0c;以及对酒店的信息进行维护。 Spring Boot 是 Spring 家族中的一个全新的框架&#…

【JVM】2. 类加载子系统

文章目录 2.1. 内存结构概述&#x1f352;2.2. 类加载器与类的加载过程&#x1f352;2.2.1 加载阶段&#x1f353;&#x1f353;2.2.2 链接阶段&#x1f353;&#x1f353;2.2.3 初始化阶段&#x1f353;&#x1f353; 2.3. 类加载器分类&#x1f352;2.3.1. 虚拟机自带的加载器…

基于自适应特征融合网络的地铁OD流预测

1 导读 本论文于2023年发表于交通领域顶刊《IEEE Transactions on Intelligent Transportation Systems》。文章针对OD流预测中存在的三点问题&#xff0c;即复杂动态的时空依赖性、数据稀疏性和不完整性以及容易受到外部因素影响展开研究&#xff0c;提出了一个自适应特征融合…

遇到一个同事,喜欢查其他同事的BUG,然后截图发工作大群里,还喜欢甩锅,该怎么办?...

职场上都有哪些奇葩同事&#xff1f; 一位网友吐槽&#xff1a; 遇到一个同事&#xff0c;喜欢查同级别同事的bug&#xff0c;截图发工作群&#xff0c;甚至发大群里&#xff0c;还喜欢甩锅&#xff0c;该怎么办&#xff1f; 职场工贼&#xff0c;人人喊打&#xff0c;网友们纷…

LCHub:网易数帆汪源:低代码仍然被“误会”,市场明年会迎拐点

LCHub:2023年四月底,在北京见到网易副总裁、网易杭州研究院执行院长、网易数帆总经理汪源,他展现出对于低代码、生成式AI技术非常开放的分享状态。汪源是网易杭州研究院执行院长,他负责的研究院在2006年已经成立,早期的网易数帆就是研究院的技术团队,支撑网易公司的数个主…

【MySQL聚合查询】轻松实现数据统计

1、聚合查询 聚合查询&#xff1a;行和行之间的运算 1.1 聚合函数 常见的聚合函数&#xff1a; count&#xff1a;数量 sum&#xff1a;求和 avg&#xff1a;求平均值 max&#xff1a;最大值 min&#xff1a;最小值 1.2 聚合函数的使用 1.2.1 count 函数 现在有一个 class 表&a…

【Python每日一练】总目录(2023.2.18~5.18)共90篇

2023.2.18~2023.5.18 连载三个月共90篇&#xff0c;暂停更 Python 2023.05 2023.05.11-2023.05.18 20230518 20230517 1. 最大连续1的个数 I Max Consecutive Ones &#x1f31f; 2. 最大连续1的个数 II Max Consecutive Ones &#x1f31f;&#x1f31f; 3. 最大连续1的个…

什么是K-近邻算法?

一、什么是K-近邻算法&#xff1f; K近邻算法&#xff08;K-Nearest Neighbors&#xff0c;简称KNN&#xff09;是一种基本的分类和回归算法。它的基本原理是通过测量样本之间的距离来对未知样本进行分类或预测。KNN算法被归类为一种“懒惰学习”&#xff08;lazy learning&am…

【K8s】安全认证与DashBoard

文章目录 一、概述1、客户端2、认证、鉴权与准入控制 二、认证管理1、认证方式2、HTTPS证书认证 三、授权管理1、授权与RBAC2、Role 与 ClusterRole3、RoleBinding 与 ClusterRoleBinding4、案例&#xff1a;创建一个只能管理dev空间下Pods资源的账号 四、准入控制五、DashBoar…

【ARMv8 编程】A64 流控制指令

A64 指令集提供了许多不同种类的分支指令。对于简单的相对分支&#xff0c;即那些从当前地址偏移的分支&#xff0c;使用 B 指令。无条件简单相对分支可以从当前程序计数器位置向后或向前分支最多 128MB。 有条件的简单相对分支&#xff0c;其中条件代码附加到 B&#xff0c;具…