说说我对spark-sql的job的参数调优
来源:互联网 发布:南京大汉网络做什么 编辑:程序博客网 时间:2024/06/14 06:39
首先要说的是机器配置
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-sql的job的参数调优
- 说说我对CSDN相册的意见
- 说说我对面对对象的理解
- 说说我的理解。
- 说说我的生活
- 说说我的工作
- 说说我的
- 说说我的男友
- 说说我的感想
- 说说我的体会
- 说说我的学习计划
- 说说我的离职
- 说说我的学习方法
- 我说说apache对数据库结果集的封装
- 说说我对各种SEO培训的看法
- 说说我对写技术博客的感受
- 说说我对AS(ActionScript)的一点简单理解
- 说说我对tomcat和servlet的理解
- rac初识之冷热信号
- 如何用剪切板实现数据传递(本文分字符串和对象)
- POJ 1523 SPF(Tarjan 求解连通分量)
- iOS学习笔记(一)---NSMutableString可变数组
- MySQL中一致性非锁定读
- 说说我对spark-sql的job的参数调优
- Toast源代码分析
- Linux CentOS系统启动时遇到的报错
- Innodb中的事务隔离级别和锁的关系
- EditText属性详解
- Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
- 冒泡排序Bubble Sort
- Machine Learning - Solving the Problem of Overfitting: Regularization
- Activity、Service、BroadCastReceiver之间的通信