首页技术文章正文

云计算大数据培训之Spark调优(1)

更新时间:2017-09-01 来源:黑马程序员云计算大数据培训学院 浏览量:

一,分配更多的资源

1,在哪里分配 
在提交任务时,在这三个参数上分配(–total-executor-cores –executor-memory –driver-memory) 
2,分配那些资源 
CPU core 和 memory 
3,怎么分配

4,分配之后有什么效果 
A, 给executor分配更多的内存,能够减少executor频繁的GC,因为发生频繁的GC,会导致spark性能立马下降 
B, 给executor分配更多的内存,那么就会将尽量多的RDD的数据保存在内存中,可以避免磁盘IO(频繁的IO会使spark性能下降) 
C, 给executor分配更多的内存,可以减少任务在拉取上一个stage数据时,将数据存入磁盘(即,减少shuffle阶段数据落地) 
D, 分配更多的CPU core,意味着同一时间执行任务的数量就会提高(即,任务的并行度提升)

二,调节任务的并行度 
我们在给任务分配更多资源的时候,就意味着任务能够具备更多的资源来执行,但是我们需要考虑一点,例如:给任务分配了5个executor,每个executor有10 个core,那么整个任务就会有5*10=50 个核,也就意味着同一时间能够并行执行的任务是50个,当我们的任务只有20个时,那么还有30个core是空闲的,浪费了,即,任务的数量不能满足并行度,针对这种情况,我们应该调节任务的数量,提高任务的并行度

怎么提高任务的并行度? 
1,调节shuffle阶段任务的并行度,一般那些shuffle算子,有两个参数,后面一个参数就是用来调节任务的并行度的,例如:reduceByKey(+,500) 
2,调节任务的分区数,可以使用这个算子,coalesce(500,true) 
3,可以通过这个参数来调节任务的并行度 spark.default.parallelism ==> sparkConf.set(“spark.default.parallelism”,5)



本文版权归黑马程序员云计算大数据培训学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:黑马程序员云计算大数据培训学院
首发:http://cloud.itheima.com/ 
分享到:
在线咨询 我要报名
和我们在线交谈!