温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Spark的核心调优参数是什么

发布时间:2021-11-30 17:54:39 来源:亿速云 阅读:185 作者:柒染 栏目:数据库

Spark的核心调优参数是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Spark的核心调优参数到都有哪些

  num-executors:

  该参数用于设置Spark作业总共要用多少个Executor进程来执行。Driver在向YARN集群管理器申请资源时,YARN集群管理器会尽可能按照你的设置来在集群的各个工作节点上,启动相应数量的Executor进程。这个参数非常之重要,如果不设置的话,默认只会给你启动少量的Executor进程,此时你的Spark作业的运行速度是非常慢的。(建议50~100个左右的Executor进程)

  executor-memory:

  该参数用于设置每个Executor进程的内存。Executor内存的大小,很多时候直接决定了Spark作业的性能,而且跟常见的JVMOOM异常,也有直接的关联。(根据作业大小不同,建议设置4G~8G,num-executors乘以executor-memory,是不能超过队列的最大内存量的)

  executor-cores:

  该参数用于设置每个Executor进程的CPUcore数量。这个参数决定了每个Executor进程并行执行task线程的能力。因为每个CPUcore同一时间只能执行一个task线程,因此每个Executor进程的CPUcore数量越多,越能够快速地执行完分配给自己的所有task线程。(建议设置为2~4个,且num-executors*executor-cores不要超过队列总CPUcore的1/3~1/2)

  driver-memory:

  该参数用于设置Driver进程的内存(建议设置512M到1G)。

  spark.default.parallelism:

  该参数用于设置每个stage的默认task数量。这个参数极为重要,如果不设置可能会直接影响你的Spark作业性能。(建议为50~500左右,缺省情况下Spark自己根据底层HDFS的block数量来设置task的数量,默认是一个HDFSblock对应一个task。Spark官网建议设置该参数为num-executors*executor-cores的2~3倍较为合适)

  spark.storage.memoryFraction:

  该参数用于设置RDD持久化数据在Executor内存中能占的比例,默认是0.6(原则上是尽可能保证数据能够全部在内存中,但如果发现作业发生频繁的GC,就该考虑是否调小)

  spark.shuffle.memoryFraction:

  该参数用于设置shuffle过程中一个task拉取到上个stage的task的输出后,进行聚合操作时能够使用的Executor内存的比例,默认是0.2。也就是说,Executor默认只有20%的内存用来进行该操作。shuffle操作在进行聚合时,如果发现使用的内存超出了这个20%的限制,那么多余的数据就会溢写到磁盘文件中去,此时就会极大地降低性能。(shuffle操作较多时,建议降低持久化操作的内存占比,提高shuffle操作的内存占比比例,避免shuffle过程中数据过多时内存不够用,必须溢写到磁盘上,降低了性能)

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI