Spark特别适用于多次操作特定的数据,分mem-only和mem & disk。当中mem-only:效率高,但占用大量的内存,成本非常高;mem & disk:内存用完后,会自己主动向磁盘迁移,攻克了内存不足的问题,却带来了数据的置换的消费。Spark常见的调优工具有nman、Jmeter和Jprofile,下面是Spark调优的一个实例分析:

1、场景:精确客户群

对一个容量为300g的客户信息表在spark上进行查询优化,该大宽表有1800多列。有效使用的有20列。

2、优化达到的效果:查询由原来的40.232s减少为2.7s

3、优化过程分析

第一步:首先发现磁盘存在大量的iowait,通过查看相关日志文件,发现一个block的大小进而推算出整个数据文件大小为300G整个内存无法容纳,採用压缩的方法实现优化。结合本数据文件的特点。存在大量的0和1,选 Gzip算法进行压缩。压缩后的大小为1.9G,该步使得查询从40.232降为了20.12s。

第二步:大宽表存在1800多列。而有效使用的仅仅有20多列,故通过RCFILE仅仅将有效的列载入。该步使得查询从20s降为12s。

第三步:通过Jprofile分析出CPU的负载过高,究竟是什么原因造成的,细致发现序列化机制有问题。Spark的serialization框架有两种:java自身的和kryo的。当中kryo 是一个高速高效的Java对象图形序列化框架,主要特点是性能、高效和易用,换成kryo后,查询从12s降到7s。

第四步:进一步分析CPU各核负载量非常不均匀。内存也没实用满,系统的资源没有得到充分利用,该怎样利用? (1)Spark的RDD的partition个数创建task的个数是相应的;(2)Partition的个数在hadoop的RDD中由block的个数决定的,内存:系统总内存数=work内存大小*work数=SPARK_WORKER_MEMORY*SPARK_WORKER_INSTANCES;

CPU:系统总的task数=work数×work所占的cores数=SPARK_WORKER_INSTANCES*SPARK_WORKER_CORES,计算task并行度。内存分配情况,调优參数:

SPARK_WORKER_INSTANCES=4

SPARK_WORKER_CORES = 3

SPARK_WORKER_MEMORY = 6G

Cpu(12core)  mem(24G),通过这几个參数的优化,查询由7s降到5s。

第五步:进一步发现Sharkserver端出现明显的fullGC,通过调优參数

Export SHARK_MASTER_MEM=2g,该步由6s降到3sl;

第六步:又发现当两表关联时,cpu 出现瓶颈,分析原因是日表做了gzip压缩,优化方法:日表不使用gzip压缩。将日表做成内存表。查询从3s降到2s。

4、总结

优化是一个逐步求精的过程,回想该优化过程,主要是从下面几个因素考虑:(1)mem;(2)cpu;(3)dis;(4)网络IO;(5)序列化机制。

认真这些因素为主线,挖掘与其相关的内容时行大胆尝试。

Sparkamp;Spark性能调优实战相关推荐

  1. Spark商业案例与性能调优实战100课》第16课:商业案例之NBA篮球运动员大数据分析系统架构和实现思路

    Spark商业案例与性能调优实战100课>第16课:商业案例之NBA篮球运动员大数据分析系统架构和实现思路 http://www.basketball-reference.com/leagues ...

  2. Spark商业案例与性能调优实战100课》第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析

    Spark商业案例与性能调优实战100课>第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析 package com.dt.spark.coresimport org.apa ...

  3. 《Spark商业案例与性能调优实战100课》第17课:商业案例之NBA篮球运动员大数据分析系统代码实战

    <<<Spark商业案例与性能调优实战100课>第17课:商业案例之NBA篮球运动员大数据分析系统代码实战

  4. 《Spark商业案例与性能调优实战100课》第18课:商业案例之NBA篮球运动员大数据分析代码实战之核心基础数据项编写

    <Spark商业案例与性能调优实战100课>第18课:商业案例之NBA篮球运动员大数据分析代码实战之核心基础数据项编写

  5. 《Spark商业案例与性能调优实战100课》第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解

    <Spark商业案例与性能调优实战100课>第15课:商业案例之纯粹通过DataSet进行电商交互式分析系统中各种类型TopN分析实战详解

  6. 《Spark商业案例与性能调优实战100课》第25课:Spark Hash Shuffle源码解读与剖析

    <Spark商业案例与性能调优实战100课>第25课:Spark Hash Shuffle源码解读与剖析

  7. 《Spark商业案例与性能调优实战100课》第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较

    <Spark商业案例与性能调优实战100课>第9课:商业案例之通过Spark SQL 下两种不同方式实现口碑最佳和最热门电影比较

  8. Spark商业案例与性能调优实战100课》第20课:大数据性能调优的本质和Spark性能调优要点分析

    Spark商业案例与性能调优实战100课>第20课:大数据性能调优的本质和Spark性能调优要点分析 基于本元想办法,大智若愚,大巧若拙!深入彻底的学习spark技术内核!

  9. 《Spark商业案例与性能调优实战100课》第27课:彻底解密Spark Shuffle令人费解的6大经典问题

    <Spark商业案例与性能调优实战100课>第27课:彻底解密Spark Shuffle令人费解的6大经典问题

最新文章

  1. HBase-1.3.1 集群搭建
  2. 全了!从Python入门到精通
  3. Linux kdb命令
  4. 不用IIS运行ASP.Net网站
  5. 1至m为PQ节点,m+1至n-1为PV节点,n为平衡节点
  6. 性能测试四十八:Jenkins+Ant+Jmeter系统部署
  7. 学习分布式不得不会的CAP理论
  8. 业界首发丨网易云信虚拟人解决方案,首创客户端+云端双渲染技术
  9. vscode 标准库位置_如何在VSCode中使用标准
  10. 系统性能信息模块--psutil
  11. 【Python爬虫】一个简单的网络爬虫
  12. android 判断service是否开启
  13. 【剑指offer】面试题17、合并两个排序的链表
  14. Linux基础命令---cat
  15. centos5.5和6.5中vncservervncviewer最基本配置
  16. 网站服务器 南阳,河南南阳DNS服务器地址
  17. Java项目:博客系统西瓜社区(springboot+mybatis-plus+thymeleaf)
  18. 论文中常见的argmin,argmax是什么意思?
  19. 微信小程序开发手记1.0
  20. 智能玩具存在的安全隐患须知

热门文章

  1. 电脑不能上网之硬件故障
  2. Java 高级算法——数组中查询重复的数字
  3. 阿里云飞天技术出海 eWTP落地马来西亚
  4. SAP卢东明:大数据同样需要小身材
  5. 实例讲解-单向列表的实现(1)
  6. [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3
  7. javascript创建对象的三种方式
  8. 明白了最基本的压缩原理
  9. H3C   ISIS与BGP 路由配置
  10. c# winform编程之多线程ui界面资源修改总结篇