当前位置:   article > 正文

Spark----关于数据倾斜_以下关于spark的数据倾斜描述正确的是?( )

以下关于spark的数据倾斜描述正确的是?( )

如何定位数据倾斜

数据倾斜一般会发生在shuffle过程中。很大程度上是你使用了可能会触发shuffle操作的算子:distinct、groupByKey、reduceByKey、aggregateByKey、join、cogroup、repartition等。

spark 调优:
调优工具:
1、Spark Web UI       Spark内置应用运行监控工具
2、Ganglia            分析集群的使用状况和资源瓶颈
3、Nmon               主机CPU、网络、磁盘、内存
4、Jmeter              系统实时性能监控工具
数据倾斜问题(key值太多导致分区不均匀,使整个spark运行缓慢,类似于水桶效应,并且造成内存溢出的问题):某些task 执行任务过大,如100亿数据,某个task执行80亿条
定位:通过spark history 定位

缓解数据倾斜 - 避免数据源的数据倾斜

实现原理:通过在Hive中对倾斜的数据进行预处理,以及在进行kafka数据分发时尽量进行平均分配。这种方案从根源上解决了数据倾斜,彻底避免了在Spark中执行shuffle类算子,那么肯定就不会有数据倾斜的问题了。

方案优点:实现起来简单便捷,效果还非常好,完全规避掉了数据倾斜,Spark作业的性能会大幅度提升。

方案缺点:治标不治本,Hive或者Kafka中还是会发生数据倾斜。      

适用情况:在一些Java系统与Spark结合使用的项目中,会出现Java代码频繁调用Spark作业的场景,而且对Spark作业的执行性能要求很高,就比较适合使用这种方案。将数据倾斜提前到上游的Hive ETL,每天仅执行一次,只有那一次是比较慢的,而之后每次Java调用Spark作业时,执行速度都会很快,能够提供更好的用户体验。

缓解数据倾斜 - 调整并行度

reducebykey(100) groupbykey(12) 增加并行度
方案实现原理:增加shuffle read task的数量,可以让原本分配给一个task的多个key分配给多个task,从而让每个task处理比原来更少的数据。举例来说,如果原本有5个key,
每个key对应10条数据,这5个key都是分配给一个task的,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/751103
推荐阅读
相关标签
  

闽ICP备14008679号