spark调优篇(充分利用集群资源)

资源利用角度

- 基本概念:

这里先简单介绍一下partition与core的概念。
core为最小的计算单元,partition为最小的文件对象,一个core处理一个partition
cores = num-executors * executor-cores
输入RDD的partition数目取决于上游文件在hdfs上的part数目

- 原因:

在计算过程中如果分区数太小不能充分利用计算资源
分区数太多则会很多小tasks, 会增加管理任务的开销(1000分区以下不太有感觉,但是如果part数上万的话就会非常慢)

- 建议:

在执行action计算的时候partition的数目为cores数目的3~4倍比较好。
如果cores的数目与partitions的数目一样多,执行过程中任务挂掉重启或者有数据倾斜的情况下任务最终的完成时间会较长。而设成3~4倍话相对来说会使得数据更加均匀,能够更好的平衡最快task与最慢task。

- 操作:

使用coalesce()与reparation()方法,在计算流程中手工调整partition的数目,同时注意spark.sql.shuffle.partitions这个参数的配置,它代表这咱在shuffle之后的输出数目。
[coalesce()与reparation的区别 ]:(https://medium.com/@mrpowers/managing-spark-partitions-with-coalesce-and-repartition-4050c57ad5c4)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-...
    CoderJed阅读 592评论 0 1
  • 1. 概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-...
    数据萌新阅读 481评论 0 0
  • 1. 概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-...
    piziyang12138阅读 499评论 0 0
  • 调优之前是将功能实现...然后算法优化,设计优化,再是spark调优!,需得一步一步来,不得直接越过,直接调优! ...
    终生学习丶阅读 5,595评论 0 12
  • 犁式 辜静 2019.1.17 距离 辅具曲腿 抬腿 理背 肩放松 臀放松 髋放松 侧卧休息 背部放松
    静子的进口商品店阅读 222评论 0 0