spark 性能优化
2016-04-24 23:10
197 查看
1、内存
spark.storage.memoryFraction:很明显,是指spark缓存的大小,默认比例0.6
spark.shuffle.memoryFraction:管理executor中RDD和运行任务时的用于对象创建内存比例,默认0.2
关于这两个参数的设置,常见的一个场景就是操作关系数据库
spark 可以通过jdbc操作关系数据库,但是若是没有分散数据的依据,则将所有数据都读到driver节点上时,这时,强烈建议先看一下表的数据量和集群中对spark的内存设置参数
假设 executor memory 大小设置为2G,也就是说,spark.shuffle.memoryFraction可用内存为2G*0.2=400M,假设5W条数据大小为1M,也就是说可以读取400*50W=2000W条
当你在单节点上读取数据超过2000W而不能及时处理时,就有极大的可能oom
内存设置
spark.shuffle.memoryFraction 0.4 #适当调高
spark.storage.memoryFraction 0.4 #适当调低
2、开启外排序
spark.sql.planner.externalSort true
3、修改序列化工具
spark.serializer org.apache.spark.serializer.KryoSerializer
4、限制应用申请内核数
spark.cores.max 15
5、并行数
spark.default.parallelism 90
6、加入第三方常用类库
spark.executor.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar
spark.driver.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar
spark.storage.memoryFraction:很明显,是指spark缓存的大小,默认比例0.6
spark.shuffle.memoryFraction:管理executor中RDD和运行任务时的用于对象创建内存比例,默认0.2
关于这两个参数的设置,常见的一个场景就是操作关系数据库
spark 可以通过jdbc操作关系数据库,但是若是没有分散数据的依据,则将所有数据都读到driver节点上时,这时,强烈建议先看一下表的数据量和集群中对spark的内存设置参数
假设 executor memory 大小设置为2G,也就是说,spark.shuffle.memoryFraction可用内存为2G*0.2=400M,假设5W条数据大小为1M,也就是说可以读取400*50W=2000W条
当你在单节点上读取数据超过2000W而不能及时处理时,就有极大的可能oom
内存设置
spark.shuffle.memoryFraction 0.4 #适当调高
spark.storage.memoryFraction 0.4 #适当调低
2、开启外排序
spark.sql.planner.externalSort true
3、修改序列化工具
spark.serializer org.apache.spark.serializer.KryoSerializer
4、限制应用申请内核数
spark.cores.max 15
5、并行数
spark.default.parallelism 90
6、加入第三方常用类库
spark.executor.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar
spark.driver.extraClassPath /opt/spark/current/lib/sqljdbc41.jar:/opt/spark/current/lib/postgresql-9.4-1202-jdbc41.jar:spark-cassandra-connector-full.jar
相关文章推荐
- Linux系统时间和硬件时间设置
- Swift爬坑记-CAKeyframeAnimation略解
- Android系统内核引导流程梳理
- LeetCode 136
- iOS自定义控件的封装细节
- Android成长之路(3)——Activity的生命周期(1)
- 20145335郝昊《java程序设计》第8周学习总结
- 20145129实验报告(三)
- 数据库特性
- Dell T3610 台式工作站UEFI模式安装Win7系统
- 异常(Exception)
- 个人炉石进展
- 第八周进度条
- Thinkphp3.2.3中的RBAC权限验证
- C++实现最小二乘法对y=exp(x)的二次拟合
- 1017 非常可乐
- LeetCode 122
- opencv_traincascade训练haar时Error: Insufficient memory等问题
- python爬虫实现----github地址
- nc suapUI 破解