这年代,做数据的,没人不知道Spark是什么吧。作为最火的大数据计算引擎,现在基本上是各互联网大厂的标配了。

比如,字节跳动基于Spark构建的数据仓库,服务了几乎所有的产品线,包括抖音、今日头条、西瓜视频等。再比如,百度基于Spark推出BigSQL,为海量用户提供次秒级的即席查询。可以说,在海量数据处理上,Spark的角色至关重要。

想到我刚刚接触Spark那会儿,真心佩服它的开发效率,是真高啊!MapReduce上千行代码才能实现的业务功能,Spark几十行代码就搞定了。

现在就更牛了,去年6月,Spark直接从.4直接升级到了3.0,最大的亮点就在于性能优化,它添加了诸如自适应查询执行(AQE)、动态分区剪裁(DPP)、扩展的JoinHints等新特性。这估计会让Spark在未来5到10年继续雄霸大数据生态圈。

就目前来说,Spark有海量批处理、实时流计算、图计算、数据分析和机器学习这5大应用场景,不论你打算朝哪个方向深入,「性能调优」都是必须要跨越的一步。

原因很简单,对于这5大场景来说,提高执行性能是刚需。想要精通Spark,就得拿下“性能调优”这把万能钥匙。

很多开发者都意识到这一点,但难就难在,市面上关于Spark性能调优的资料,大都不系统,只是在讲一些常规的调优技巧和方法。而对于一些大神分享的调优手段,只是“照葫芦画瓢”做出来的东西,也总是达不到预期的效果,比如:

明明都是内存计算,为什么我用了RDD/DataFrameCache,性能反而更差了?

网上吹得神乎其神的调优手段,为啥到了我这就不好使呢?

并行度设置得也不低,为啥我的CPU利用率还是上不去?

节点内存几乎全都划给Spark用了,为啥我的应用还是OOM?

这些问题看似简单,但真不是一两句话就能说得清的。这需要我们深入Spark的核心原理,不断去尝试每一个API、算子,设置不同的配置参数,最终找出最佳的排列组合。

说到底,还是需要更多的学习案例与实操。我最近



转载请注明地址:http://www.qingyedana.com/qydpz/9505.html