前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >漫画全面解释Spark企业调优点

漫画全面解释Spark企业调优点

作者头像
Spark学习技巧
发布2021-03-05 15:48:14
3820
发布2021-03-05 15:48:14
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

一:资源配置

一般企业中,物理机器的cpu:内存基本上都是1:4+,比如机器24core,一般有128GB及以上内存;48core,一般有256GB及以上内存。

减去系统及hdfs所需core,2个吧;减去系统的2-4GB,减去存储hdfs的相关的假设20GB吧(hbase需要的更多点,但是一般hbase会有独立集群)。

24core,128GB的机器应该还剩还有20core,100GB。

这种情况下,很明显,你1core对应5GB内存才能最大化利用机器,否则往往cpu没了,内存还有大把,应用还容易出现gc问题。

所以,假设你的业务cpu确实消耗比较少,可以在配置yarn的时候虚拟cpu可以设置为物理cpu的n倍。这样才可以满足小白,1:1的分配cpu内存的需求。

代码语言:javascript
复制
yarn.nodemanager.resource.cpu-vcores 

二:数据倾斜

1.对于离线,任务生成文件的时候,可以采用支持分割的压缩算法。常见的压缩算法如下:

对于离线,任务生成文件的时候,也可以合理控制生成文件的大小,落地之前进行均衡。

2.对于实时,生产者生产数据到kafka的时候,进行均衡,一般可以采取随机或者轮训的生产。假设要保证相同用户的数据到相同的分区,也可以对实用hash的方式。

1.遇到shuffle过程中数据倾斜的时候,往往需要做的第一件事情就是增大shuffle并行度,只要不是key过于集中与某一个或者几个key都会有效。

2.假设key过于集中,有以下几个策略可以用来改善:

2.1 先跑采样wordcount,看看key的集中情况。

2.2 个别key特别大,可以拿出来单独处理。

2.2 一堆key特别大,可以如下操作:

key加随机后缀,分两次进行聚合,比如随机后缀的范围是0-100,相当于并行度扩大了100倍,最后再聚合一次即可。

2.3 join的时候key倾斜。

  • 大表 join 小表,广播小表。
  • 大表 join 大表,预先治理,采用相同分桶策略,使得同一个task完成join,减少数据shuffle传输。后面案例详解。

三:大状态

1.用户自己管理的大状态。

1.1 超时,可以使用具有超时功能的超时的map,如caffeine。

1.2 确认状态是不是可以进行分区缓存。

1.3 换外部内存存储,如redis,alluxio。

2.updateStateBykey等算子。

2.1 设置超时时间,spark新版本都支持了,之前版本需要自己维护超时时间。

2.2 换外部内存存储,如redis,alluxio。

四:大对象

如下面一段代码:

代码语言:javascript
复制
distData.foreach(each=>{
      val map = new mutable.HashMap[String,Int]();
      map.put("key",2)
      // 逻辑处理
      map.clear(); // 不要忘了哦
    })

假设处理的数据量大,每条数据区new map而不执行clear清空,等垃圾回收,数据量大的时候,就会超级耗费性能,java或者scala的集合都要排查下。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档