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

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

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

 

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

 

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

 

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

 

基于spark技术的新冠搜索关键词行为分析 spark搜索引擎_编程语言

 

 

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

 

  • 明明都是内存计算,为什么我用了 RDD/DataFrame Cache,性能反而更差了?
  • 网上吹得神乎其神的调优手段,为啥到了我这就不好使呢?
  • 并行度设置得也不低,为啥我的 CPU 利用率还是上不去?
  • 节点内存几乎全都划给 Spark 用了,为啥我的应用还是 OOM?

 

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

 

说到底,还是需要更多的学习案例与实操。我最近关注到 FreeWheel 机器学习团队负责人吴磊,总结了出一套关于「性能调优的方法论」。挺戳中我的,分享给大家????

 

基于spark技术的新冠搜索关键词行为分析 spark搜索引擎_编程语言_02

按图索骥开展性能调优