说说我对spark-sql的job的参数调优

Hdoop&Spark集群搭建——基于32个containers 背景: 已经获得一个Kubernetes集群,该集群包含1个master node和16个worker nodes。每个node拥有资源16 CPU, 32G memory 阅读详情

首先要说的是机器配置

namenode/datanode: 

cpu : 8core  memory: 56G

我现在是基于yarn+spark的架构来说。

现在设置

yarn.nodemanager.resource.memory-mb =51200 (50GB)  --每个node可以最多使用50GB作为 container 的分配

yarn.scheduler.minimum-allocation-mb =512  (0.5GB)      --分配的递增单位是 0.5GB

yarn.scheduler.maximum-allocation-mb =51200  ( 50GB)  --最大的container是50GB, 也就是说,可以从 0.5G  1G  1.5G  2G 一直到 50G 一个container

--===================================================
数据输入为 10个文件,大小总共10G txt非压缩

使用spark-sql,默认的numPartitions 是1 ,所以 desired partition size = 10GB / 1 = 10GB
spark 的 block size = 512MB (实践中观察到,但实际的dfs.blocksize = 128MB, 有待进一步查明真相) 
计算输入分区size公式= max(split size, min (desired partition size, block size))
默认的 mapreduce.input.fileinputformat.split.minsize=1 ( 1 byte)
所以 输入分区size= 512MB (如果需要解压的话,那么会变得更大)

现在需要计算 executor和container的大小.
executor大小 >= 输入分区的大小, 所以设置 512MB, 但需要考虑:
1)如果core资源较多,executor内设置多个线程(多个core分配给一个executor)的情况,那么GC的压力会比较大,如果GC time较长,那么需要考虑增加executor的内存;最好就是有多少个core就增加多少倍的输入分区大小。
2)如果需要cache数据的话,那么需要设置spark.storage.memoryFraction,默认值是0.6, 那么cache内存大小计算=executor*0.868*0.6
所以除去cache的内存,executor剩下0.4左右的大小。
所以 executor size * 0.868 * 0.4 = 512 MB * cores/executor (最小值 1 core,即单线程)
container size = executor size + max(executor size * 0.1, 384) = N * 512MB  (因为递增单位为512MB)

executor num = nodes * 50G / container size

这个executor num可以根据整个cluster可以允许该用户使用多少资源而定,还有core的分配。这样可以支持多用户共享整个cluster的资源。


接下来我还会给大家讲讲如何处理OOM的问题,还有如何处理我们的输入跟输出的调优。

Spark UI实战:从Jobs到SQL,手把手教你用Web界面定位性能瓶颈(附参数调优清单) 本文详细解析如何通过Spark WebUI从Jobs到SQL页面精准定位性能瓶颈,提供数据倾斜、内存优化及执行计划调优的实战指南。通过关键指标分析和参数调优清单,帮助开发者提升Spark作业效率,解决资源利用率低、任务延迟等常见问题。 阅读详情

相关推荐

spark SQL 参数调优

1 spark.sql.codegen 默认值为false,当它设置为true时,Spark SQL会把每条查询的语句在运行时编译为java的二进制代码。这有什么作用呢?它可以提高大型查询的性能,但是如果进行小规模的查询的时候反而会变慢,就是说直接用查询反而比将它编译成为java的二进制代码快。所以在优化这个选项的时候要视情况而定。2 spark.sql.inMemoryColumnStorage...

不管大小写的博客 1万+

Spark架构设计

spark架构设计 1 角色名称 Client,Driver program,cluster manager/Yarn,workerNode 2 角色作用 client:用户通过client提交application程序,shell命令等 Driver:启动sparkContext环境,将application程序转换成任务RDD和DAG有向图,与clustermanger进行资源交互,分配task给workerNode cluster manger:作为spark的资源管理者,存储所有工作节点的元数据,.

qq_32118757的博客 661

spark-sql调优技巧

sparkSQL概述 sparkSQL的前世今生 ==Shark是专门针对于spark的构建大规模数据仓库系统的一个框架== Shark与Hive兼容、同时也依赖于Spark版本 Hivesql底层把sql解析成了mapreduce程序,Shark是把sql语句解析成了Spark任务 随着性能优化的上限,以及集成SQL的一些复杂的分析功能,发现Hive的MapReduce思想限制了Shark的发展。 最后Databricks公司终止对Shark的开发 决定单独开发一个框架,不在依赖hive,

weixin_40035337的博客 2203

Yarn中container、mr内存的配置,控制container个数

最近项目在用kylin,在搭建开发环境和测试环境后,然后在kylin上建cube,kylin建cube实际就是调用集群的MR跑任务(也可以调用spark作为引擎),在数据量小或者维度(kylin里面的一个概念)少的时候没问题,后来数据量大或维度多了,就经常出现OOM的问题。

qq_32445015的博客 2342

Spark参数配置和调优,Spark-SQL、Config

Spark参数配置和调优,Spark-SQL、Config

Toby的博客 6701

Hive引擎替换为Spark(Hive on Spark)

Hive引擎替换为Spark(Hive on Spark)1、背景2、Hive引擎选择3、三种引擎如何切换引擎?4、hive on spark配置集群模式5、hive on spark参数调优6、结束语 1、背景 Hive on Spark是由Cloudera发起,由Intel、MapR等公司共同参与的开源项目,其目的是把Spark作为Hive的一个计算引擎,将Hive的 查询作为Spark的任务提交到Spark集群上进行计算。通过该项目,可以提高Hive查询的性能,同时为已经部署了Hive或者Spark的

weixin_41290471的博客 1万+

Spark源码精读之《容器分配策略》

Spark请求Yarn的容器,不论是Client模式还是Cluster模式,都是走的相同流程。为了简便,拿Client提交流程标识下。下图1,是Spark程序基于Client模式的提交总流程,容器分配就是在第4阶段, 获取Container后进行的。对Spark提交流程有兴趣的朋友可以浏览另一篇博文。

不积跬步无以至千里 367

大数据性能调优总结

目录 12.1配置原则 如何发挥集群最佳性能 影响性能的因素 12.2Manager 12.2.1提升Manager配置服务参数的效率 12.2.2根据集群节点数优化Manager配置 12.3HBase 12.3.1提升BulkLoad效率 12.3.2提升连续put场景性能 12.3.3Put和Scan性能综合调优 12.3.4提升实时写数据效率 ...

沧海一粟的博客 5972

spark源码跟踪(九)就近计算

就近计算一,实现二,过程 一,实现 YarnAllocator.scala // A map to store preferred hostname and possible task numbers running on it. private var hostToLocalTaskCounts: Map[String, Int] = Map.empty // Number of tasks that have locality preferences in active stages private[

weixin_43172032的博客 1309

从零到一:手把手教你用C# WinForms搭建工控上位机(含Panel控件布局与事件处理详解)

本文详细介绍了如何使用C# WinForms框架从零开始搭建工控上位机系统,重点讲解了Panel控件的布局技巧和事件处理机制。通过实战案例,帮助开发者掌握界面分区规划、动态窗体切换及数据通信等核心功能,适用于工业自动化监控系统的开发。

weixin_30321709的博客 607

【昇腾】用MindIE(服务化方式)拉起glm4-9b-chat模型问题解决

【昇腾】用MindIE拉起glm4-9b-chat模型问题解决: LLMInferEngine failed to init LLMInferModels ERR: Failed to init endpoint! Please check the service log or console output. Killed make sure the folder's owner has execute permission.

u014448841的博客 5116

spark工作的一些总结

请描述spark RDD原理与特征? spark RDD原理:是一个容错的、并行的(弹性分布式)数据结构,可以控制数据存储至磁盘或者内存,能够获取数据的分区。其具体特征,如下: 1)创建:rdd创建有2种方式,一种为从稳定存储中读取创建;另一种从父RDD转换得到新的RDD。...

chengujun7940的博客 463

从UART到RS485:手把手教你用SIT3485E收发器搞定工业级通信(含原理图与PCB布局要点)

本文详细解析了从UART到RS485的工业级通信转换,重点介绍了SIT3485E收发器的原理图设计、PCB布局要点及抗干扰技巧。通过差分信号传输和优化电路设计,实现长距离、多设备稳定通信,适用于工业自动化等复杂环境。

weixin_29169505的博客 345

Sql调优+Hive调优+Spark调优

select * from a join (select 列1,列2...,if(id is null,concat(10,rand()),id)id from b)b on a.id=b.id;3.桶表 join 桶表,且表A的桶的数量,是表B的桶的数量的整数值,则可以用分桶字段 替代 关联字段,即: on a.id=b.id=>on a.分桶字段=b.分桶字段;默认情况下,1个分区=1个ReduceTask任务=1个最终结果文件,如果要调整ReduceTask数量,就手动调整分区数量。

Taker256的博客 1363

CAD二次开发(C#版):从零搭建开发环境与核心DLL引用指南

本文详细介绍了使用C#进行CAD二次开发的环境搭建与核心DLL引用指南,涵盖Visual Studio配置、AutoCAD插件项目创建、DLL引用技巧及调试方法。通过实战示例和常见问题排查,帮助开发者快速掌握CAD二次开发的核心技术,提升开发效率。

weixin_28837817的博客 727

告别里程焦虑:手把手教你用MATLAB/Simulink仿真电动车AMT换挡规律(附代码)

本文详细介绍了如何使用MATLAB/Simulink仿真电动车AMT换挡规律,帮助解决里程焦虑问题。通过搭建完整的仿真系统,包括电机MAP图处理、Stateflow逻辑实现和动力性与经济性换挡曲线生成,优化电动车换挡策略以提升续航与性能。附带的代码示例和实用技巧使开发者能够快速上手并验证仿真结果。

weixin_26757925的博客 306

Spark之数据倾斜调优

数据本身问题(1)、key本身分布不均衡(包括大量的key为空)(2)、key的设置不合理spark使用不当的问题(1)、shuffle时的并发度不够(2)、计算方式有误数据倾斜调优的场景和解决方式,也适用于SparkStremaing中去Shuffle调优面试题:你在工作当中遇到哪些数据倾斜的场景,你是如何处理的?你在工作当中调过优吗?怎么处理的?效果怎么样?Spark Shuffle的发展过程。

我的博客 1336

低功耗 AI 人体存在检测系统:智能照明与安防的高效解决方案

低功耗 AI 人体存在检测系统通过 “ESP32-C3 主控 + HX7110 AI 模块” 的硬件组合,搭配双重检测算法与深度睡眠机制,既解决了传统检测方案的误报问题,又满足了长时间低功耗运行需求。系统接线简单、代码可直接移植,可快速集成到智能照明、安防监控等物联网设备中,具备广泛的应用前景。

weixin_42300449的博客 224

Spark-SQL常用调优参数汇总

写在前面的话:因为本人在职,所以没有充分的时间写博客,所以经常是写好整个框架,再陆陆续续的补充修改。所以如果发现什么错误请留言。 本文主要是日常工作的积累,主要是简单罗列了常见的spark SQL的参数及其含义。 #Job ID /Name spark.app.name=clsfd_ad_attr_map_w_mvca_ins #yarn 进行调度,也可以是mesos,yarn,以及standa...

三米学习笔记杂货铺 3845

Windows服务器环境下 OpenCode Skill 下载与运行全流程实战指南(小白版)

Windows服务器环境下 OpenCode Skill 下载与运行全流程实战指南(小白版),OpenCode技能安装与使用指南,分为四个步骤:1)准备Windows服务器环境并确认OpenCode可用;2)通过Git或直接下载方式获取Skill;3)配置技能路径至.opencode/config.json;4)运行测试技能。关键点包括路径配置必须使用双反斜杠、确保Python环境正确安装、管理员权限运行等。文中提供了文本总结技能的完整案例,从创建skill.yaml和main.py到注册运行的全流程,并针

专注于编程、AI、人工智能等多个领域内容研究和分析 1079

13、网络通信中的字节序与内存测试

本文主要探讨了网络通信中的字节序问题以及嵌入式系统中内存测试的相关内容。在网络通信部分,重点分析了大端序和小端序的差异,以及TCP/IP协议中字节序的转换机制,并介绍了相关的宏定义和实现方法。在内存测试部分,详细阐述了内存测试的目的、常见问题以及具体的测试策略,包括数据总线测试、地址总线测试和设备测试。通过这些内容,嵌入式程序员可以更好地理解并解决实际开发中可能遇到的字节序和内存问题,从而提高系统的稳定性和可靠性。

mmm90的博客 110

Spark SQL调优

1 spark.sql.codegen 默认值为false,当它设置为true时,Spark SQL会把每条查询的语句在运行时编译为java的二进制代码。可以提高大型查询的性能,但是如果进行小规模的查询的时候反而会变慢,就是说直接用查询反而比将它编译成为java的二进制代码快。所以在优化这个选项的时候要视情况而定。 2 spark.sql.inMemoryColumnStorage.compressed 默认值为false 它的作用是自动对内存中的列式存储进行压缩 3 spark.sql.inMemoryC

ThreeAspects的博客 1705

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Spark Sql 调优

思路:SparkSql转化为MR任务,充分利用硬件资源 利用好分布式系统的并行计算 1.提交查询任务的并行度 集群的处理能力 SPARK_WORKER_INSTANCES参数、SPARK_WORKER_CORES参数决定 total_executor_cores集群的有效处理能力 SparkSql的查询并行度主要和集群的core数量有关,合理配置每个节点的core可以提高集群的并行度,提高...

Mirror_w的博客 780

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Spark SQL调优实战

spark sql参数调优

u013984781的博客 2019

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

所有的性能调优

目 录12 性能调优12.1 配置原则12.2 Manager12.2.1 提升Manager配置服务参数的效率12.2.2 根据集群节点数优化Manager配置12.3 HBase12.3.1 提升BulkLoad效率12.3.2 提升连续put场景性能12.3.3 Put和Scan性能综合调优12.3.4 提升实时写数据效率12.3.5 提升实时读数据效率12.3.6 JVM参数优化12.4 ...

lvbiao_62的博客 1万+
上一篇: 性能测试 hive Use ANALYZE table columns
下一篇: impala+hue
Kelvin-Liang
博客等级 码龄18年 9粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值