spark1.x-性能优化策略
来源:互联网 发布:二战法国 知乎 编辑:程序博客网 时间:2024/05/19 11:48
1、使用高性能序列化类库
SparkConf().set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")conf.registerKryoClasses(Array(classOf[Counter] ))java:conf.registerKryoClasses(Counter.class)spark.kryoserializer.buffer.mb 10
2、优化数据结构
/*避免Java语法特性中所导致的额外内存的开销,比如基于指针的Java数据结构,以及包装类型。有一个关键的问题,就是优化什么数据结构?其实主要就是优化你的算子函数,内部使用到的局部数据,或者是算子函数外部的数据。都可以进行数据结构的优化。优化之后,都会减少其对内存的消耗和占用。1、优先使用数组以及字符串,而不是集合类。也就是说,优先用array,而不是ArrayList、LinkedList、HashMap等集合。比如,有个List<Integer> list = new ArrayList<Integer>(),将其替换为int[] arr = new int[]。这样的话,array既比List少了额外信息的存储开销,还能使用原始数据类型(int)来存储数据,比List中用Integer这种包装类型存储数据,要节省内存的多。还比如,通常企业级应用中的做法是,对于HashMap、List这种数据,统一用String拼接成特殊格式的字符串,比如Map<Integer, Person> persons = new HashMap<Integer, Person()。可以优化为,特殊的字符串格式:id:name,address|id:name,address...。2、避免使用多层嵌套的对象结构。比如说,public class Teacher { private List<Student> students = new ArrayList<Student>() }。就是非常不好的例子。因为Teacher类的内部又嵌套了大量的小Student对象。比如说,对于上述例子,也完全可以使用特殊的字符串来进行数据的存储。比如,用json字符串来存储数据,就是一个很好的选择。{"teacherId": 1, "teacherName": "leo", students:[{"studentId": 1, "studentName": "tom"},{"studentId":2, "studentName":"marry"}]}3、对于有些能够避免的场景,尽量使用int替代String。因为String虽然比ArrayList、HashMap等数据结构高效多了,占用内存量少多了,但是之前分析过,还是有额外信息的消耗。比如之前用String表示id,那么现在完全可以用数字类型的int,来进行替代。这里提醒,在spark应用中,id就不要用常用的uuid了,因为无法转成int,就用自增的int类型的id即可。(sdfsdfdf-234242342-sdfsfsfdfd)*/
3、对多次使用的RDD进行持久化 / Checkpoint
4、使用序列化的持久化级别
5、Java虚拟机垃圾回收调优
--conf "spark.executor.extraJavaOptions=-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
降低RDD缓存占比
new SparkConf().set("spark.storage.memoryFraction", "0.5")
6、提高并行度
new SparkConf().set("spark.default.parallelism", 3*executor num*cpu core num)
7、广播共享数据
8、数据本地化
spark.locality.wait(3000毫秒)spark.locality.wait.nodespark.locality.wait.processspark.locality.wait.rack
9、reduceByKey和groupByKey的合理使用
10、Shuffle调优
阅读全文
0 0
- spark1.x-性能优化策略
- spark1.x-spark-sql性能优化
- java性能优化策略
- Hibernate性能优化策略
- Hibernate性能优化策略
- Hibernate性能优化策略
- Hibernate性能优化策略
- iOS性能优化策略
- iOS性能优化策略
- Java性能优化策略
- 代码性能优化策略
- ElasticSearch性能优化策略
- Android性能优化策略
- Android性能优化策略
- Android性能优化策略
- Android性能优化策略
- 数据库性能优化策略
- 系统性能优化策略
- Kali_msf
- 7. keypad调试日志
- echarts dataZoom与X轴的标签问题
- 网页上做一键分享按钮(2种,包括facebook和tw)
- 数据结构---图的邻接矩阵
- spark1.x-性能优化策略
- 2017-06-28 DBA日记,查询v$rman_status缓慢诊断与优化
- 通讯录上面有A- Z #的实现
- activiti并发多实例子流程任务处理
- LogMiner的使用
- 8. LED调试日志
- 547. Friend Circles
- abap开发常用表
- 数据结构---图的邻接表