spark性能调优--jvm调优(转)
一.问题切入
调用spark 程序的时候,在获取数据库连接的时候总是报 内存溢出 错误
(在ideal上运行的时候设置jvm参数 -Xms512m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=1024M,不会报错)
二.jvm参数 和 saprk 参数 和内存四区 解读
1.内存四区
1、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
2、堆区(heap:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。
3、数据区:主要包括静态全局区和常量区,如果要站在汇编角度细分的话还可以分为很多小的区。
全局区(静态区)(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的 另一块区域。 程序结束后有系统释放
常量区:常量字符串就是放在这里的。 程序结束后由系统释放
4、代码区:存放函数体的二进制代码。
参考: http://blog.csdn.net/wu5215080/article/details/38899259
2.jvm 参数
-Xms512m -Xmx1024m-XX:PermSize=512m -XX:MaxPermSize=1024M
-Xms JVM初始分配的堆内存 默认是设备物理内存的 1/64
-Xmx JVM最大允许分配的堆内存,按需分配 默认是设备物理内存的 1/4
-XX:PermSize JVM初始分配的非堆内存 默认是设备物理内存的 1/64
-XX:MaxPermSize JVM最大允许分配的非堆内存 默认是设备物理内存的 1/4
参考: http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html
3.spark参数
-- driver-memory : driver运行的内存大小,默认1G driver:sparkcontext ,sqlContext等运行的地方, sparkcontext ,sqlContext 一般运行在栈内存
-- executor-memory : executor的内存大小,默认1G executor: rdd 等运行的地方 ,rdd 一般运行在栈内存
conf spark.storage.memoryFraction=0.3 spark用于缓存rdd的内存百分比(剩下的内存用来保证任务运行时各种其它内存空间的需要),默认0.6(和运行在堆或栈没有关系)
得出:
栈内存 正比于 driver-memory : 内存被 sparkcontext,sqlContext 等固定占用,和数据库连接没有多大关系
栈内存 正比于 executor-memory ; executor-memory 分两种: rdd 和其他(包含获取获取 数据库连接的内存)
三.问题分析和解决
方向:增大executor-memory 和减小 conf spark.storage.memoryFraction 的值 ,根据具体环境而定
命令方式:
nohup spark-submit \
--masteryarn \
--executor-memory 1024M \
--confspark.storage.memoryFraction=0.3 \
--classcom.xiaopeng.bi.gamepublish.GamePublishKpi \
/home/hduser/projs/xiaopeng_bi.jar60 >> /home/hduser/projs/logs/gamepublishkpi.log &
代码方式:
val sparkConf = newSparkConf().setAppName(this.getClass.getName.replace("$",""))
.set("spark.default.parallelism", "60") // 1. 调节并行度
.set("spark.serializer","org.apache.spark.serializer.KryoSerializer") // 3.序列化方式
.set("spark.shuffle.consolidateFiles", "true")// 4. shuffle 过程中 合并小文件
.set("spark.storage.memoryFraction", "0.4");// 5.cache占用的内存占比
.set("spark.sql.shuffle.partitions", "60")// 6.shuffle 时 partion的个数
---------------------
作者:kequanjade
原文:https://blog.csdn.net/keyuquan/article/details/72629605
spark性能调优--jvm调优(转)的更多相关文章
- Spark性能优化:开发调优篇
1.前言 在大数据计算领域,Spark已经成为了越来越流行.越来越受欢迎的计算平台之一.Spark的功能涵盖了大数据领域的离线批处理.SQL类处理.流式/实时计算.机器学习.图计算等各种不同类型的计算 ...
- spark调优——JVM调优
对于JVM调优,首先应该明确,(major)full gc/minor gc,都会导致JVM的工作线程停止工作,即stop the world. JVM调优一:降低cache操作的内存占比 1. ...
- (转)Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何 ...
- 【转载】 Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...
- Spark性能优化:资源调优篇(转)
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...
- Spark性能优化--数据倾斜调优与shuffle调优
一.数据倾斜发生的原理 原理:在进行shuffle的时候,必须将各个节点上相同的key拉取到某个节点上的一个task来进行处理,比如按照key进行聚合或join等操作.此时如果某个key对应的数据量特 ...
- Spark性能优化:shuffle调优
调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO.序列化.网络数据传输等操作.因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行 ...
- Spark性能优化:资源调优篇
在开发完Spark作业之后,就该为作业配置合适的资源了.Spark的资源参数,基本都可以在spark-submit命令中作为参数设置.很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置 ...
- java性能调优---------------------JVM调优方案
JVM的调优的主要过程有: 1.确定堆内存大小(-Xmx.-Xms) 2.合理分配新生代和老年代(-XX:NewRatio.-Xmn.-XX:SurvivorRatio) 3.确定永久区大小(-XX: ...
随机推荐
- 计算机学院大学生程序设计竞赛(2015’12)Happy Value
Happy Value Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- Microsoft.XMLHTTP基本用法
客户端调用XMLHTTP的过程很简单,只有5个步骤:1.创建XMLHTTP对象2.打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等.客户端通过Open命令打开与服务端的服务网页 ...
- SQL Server2005+、MySQL、Oracle 数据库字典生成工具
之前找的数据库字典生成工具基本上都依赖于 Office Com 组件,在不安装 Office的情况下无法使用.怒,于是自己用C# 写了一个. 特征如下: 一.支持的数据库 MS ...
- Java数据库操作类演示
只在mysql上测试过,不知道算不算好使1. [代码][Java]代码 package org.load.demo; import java.io.IOException;import ja ...
- 【JSOI 2009】 Count
[题目链接] 点击打开链接 [算法] 二维树状数组 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 300 # ...
- You can't specify target table 'xxx' for update in FROM clause
1.执行sql语句报上面的错误: DELETE FROM db_student WHERE RowGuid IN ( SELECT RowGuid FROM db_student WHERE age ...
- Gym 100299C && UVaLive 6582 Magical GCD (暴力+数论)
题意:给出一个长度在 100 000 以内的正整数序列,大小不超过 10^ 12.求一个连续子序列,使得在所有的连续子序列中, 它们的GCD值乘以它们的长度最大. 析:暴力枚举右端点,然后在枚举左端点 ...
- C++ STL自学总结,仅供参考
本文内容,为博主在网上看到资料总结整合而来 一.stl格式简介 .stl文件是在计算机图形应用系统,来表示封闭的面或者体,用来表示三角形网格的一种文件格式.为STereo Lithography的缩写 ...
- 20170407-ms
invoke v调用 dismiss v解雇 exclusive adj. 专用的; 高级的; 排外的; 单独的; n. 独家新闻; 专有物; 独家经营的产品(或项目.设计等); 排外者; ex ...
- 洛谷 - P2762 - 太空飞行计划问题 - 最小割
https://www.luogu.org/problemnew/solution/P2762 最小割对应的点,在最后一次更新中dinic的bfs会把他的dep重置掉.所以可以根据这个性质复原最小割. ...