更新时间: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)
云计算大数据培训之Hadoop组件:zookeeper(3)
2017-09-01云计算大数据培训之Hadoop组件:zookeeper(2)
2017-09-01云计算大数据培训之Hadoop组件:zookeeper(1)
2017-09-01云计算大数据培训之Spark-Streaming的基本原理以及预写日志机制和checkpoint(3)
2017-09-01云计算大数据培训之Spark-Streaming的基本原理以及预写日志机制和checkpoint(2)
2017-09-01云计算大数据培训之Spark-Streaming的基本原理以及预写日志机制和checkpoint(1)
2017-09-01