[0.0.0] 大型spark项目实战

参考

电商用户行为分析大数据平台 - 中华石杉
DT大数据梦工厂-王家林
spark官网文档

场景

在项目实战中理解:
1、spark core、sql、streaming以及机器学习与图计算相关的知识点
2、性能调优、troubleshooting与数据倾斜解决方案
当然,随便发发牢骚,关于生活。

前言

关于spark大型项目实战

话说Snail n个月前,因工作需要准备自学spark,走大数据开发之路。n个月后的今天,自我感觉该学的spark知识点都学的差不多了:scala编程语言从零基础到对其高级特性,比如,隐式转换、类型类有比较深刻的认识;基本从头至尾过滤了一遍spark官网相关文档;以相对真实的实验环境(2台阿里云主机)对spark官网以及《DT大数据梦工厂》王家林老师授课的案例进行了实验 - 当然,这其中遇到了不少问题 - 然而,“用蓬勃的生命力战胜人性的悲剧性”,人活着的意义,不就在于探索未知领域,不就在于瞎折腾,不就在于体验人生百态、世间冷暖吗?

现在,Snail急需要做一个大型spark项目来进一步巩固与理解前面所学的 - 当然,更重要的是,面试的时候的可以装逼,以精湛的spark技术直接kill面试官(注:snail一前同事堪称面霸,‘kill面试官’这个词语正是出自他那里)! 都是猿,大家静下心里讨论技术,互相学习多好啊,为何一定要‘编’项目经验,大谈各种自己都没有实际使用过的技术甚至一点都不了解的技术名字?其实,也挺好?!王教主说,I love pains 。

好的,反正在网上一顿乱搜索后,Snail最终找到了《Spark大型项目实战:电商用户行为分析大数据平台》这个项目,果断花几百大洋买下了整套视频,并且一口气学到了68课:中华石杉讲的确实很不错,相当不错,极有条例,深入浅出 ,特别是spark性能调优这一部分,结合项目全面解读了 spark Shuffle机制。 《大型spark项目实战》旨在以博文的形式记录与再现Snail所理解的《Spark大型项目实战:电商用户行为分析大数据平台》课程经典。废话先说到这里,本系列博文共分为三大部分:准备篇、开发篇与性能调优篇,let’s rock and spark !

一、准备篇

该部分主要解读项目开发流程、数据流转与公共组件的开发,旨在找准spark工程师在整个项目开发过程中的位置。具体包括配置管理组件、JDBC辅助组件、日志组件、异常处理组件,以及常用工具类(日期转换、字符串处理等)与测试环境数据模拟程序的开发以及项目开发流程、数据流转图。

二、开发篇

包括四大spark业务模块的开发:

  1. 用户访问session分析
  2. 页面单跳转化率
  3. 各区域热门商品统计
  4. 广告点击流量实时统计

按照中华石杉的说话,这四大模块用到了spark core、spark sql以及spark streaming 90%以上的知识点 ,至于spark其他子框架:机器学习,图计算并没有涉及到。Snail决定在以后的工作中为该项目加上机器学习,图计算等,以期完整。

三、性能调优篇

性能调优篇部分又包括性能调优、troubleshooting与数据倾向解决方案三大子模块

性能调优模块

以spark业务代码模块为背景,不止于通过配置各种参数让spark应用程序更快速的输出结果,而是详解性能调优背后的故事。Snail按其对性能影响的程度将其总结为调优三部曲:

  • 宏观调优
    包括分配更过资源,调节并行度,重构RDD架构以及RDD持久化三种手段;

  • Shuffle调优
    包括合并map端输出文件、调节map端内存缓冲与reduce端内存占比、权衡HashShuffleManager、SortShuffleManager与Tungsten-sort ShuffleManager。

  • 3、微观调优
    微观调优包括配置文件类调优与算子类调优。其中,配置文件类调优包括:广播大变量、使用Kryo序列化、使用fastutil优化数据存取格式、调节数据本地化等待时长、降低cache操作的内存占比、调节executor堆外内存与连接等待时长; 算子类调优包括:使用MapPartitions提升Map类操作性能、filter过后使用coalesce减少分区数量、使用foreachPartition优化写数据库性能、使用repartition解决Spark SQL低并行度的性能问题、reduceByKey本地聚合介绍。

Troubleshooting模块

主要包括控制shuffle reduce端缓冲大小以避免OOM、JVM GC导致的shuffle文件拉取失败、YARN队列资源不足导致的application直接失败、各种序列化导致的报错、算子函数返回NULL导致的问题、yarn-client模式导致的网卡流量激增问题、yarn-cluster模式的JVM栈内存溢出问题、持久化方式以及checkpoint的使用等生产环境常见问题的解决方案。

数据倾斜部分

旨在分析数据倾斜解决方案的原理以及现象,解读提高shuffle操作reduce并行度、使用随机Key实现双重聚合、将reduce join转换为map join、sample采样倾斜key单独进行join、使用随机数以及扩容表进行join等数据倾斜问题的解决方案。

总结

不知不觉到了 00:04 该洗洗碎了
good night , spark

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
上百节课详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程介绍: 讲解一个真实的、复杂的大型企业级大数据项目,是Spark大型项目实战课程。 通过本套课程的学习,可以积累大量Spark项目经验,迈入Spark高级开发行列。 课程特色: 1、项目中全面覆盖了Spark Core、Spark SQL和Spark Streaming这三个技术框架几乎全部的初级和高级的技术点和知识点, 让学员学以致用,通过一套课程,即掌握如何将Spark所有的技术点和知识点应用在真实的项目中,来实现业务需求! 2、项目中的4个功能横块,全郃是实际企业项目中提取出来的,并进行技术整合和改良过的功能模块.全都是企业级的复杂和真实的需求,业务模块非常之复杂,绝对不是市面上的Dem级别的大数据项目能够想比拟的,学习过后,真正帮助学员增加实际 企业级项目的实战经验。 3、项目中通过实际的功能模块和业务场景,以及讲师曾经开发过的处理十亿、甚至百亿以上数据级别的SparK作业的经验积累,贯穿讲解了大量的高级复杂的性能调优技术和知识、troubleshooting解决线上报错和故障的经验、高端的全方位数据倾斜处理和解决方案.真正帮助学员掌握高精尖的Spark技术! 4、项目中采用完全还原企业大数据项目开发场景的方式来讲解,每一个业务模块的讲解都包括了需求分析、方案设计、数据设计、编码实现、功能测试、性能调优等环节,真实还原企业级大数据项目开发场景。 模块简介: 1、用户访问session分析,该模块主要是对用户访问session进行统计分析.包括session的聚合指标计算、 按时间比例随机抽取session、获取每天点击、下单和购买排名前10的品类、并获取top10品类的点击量排名前10的session.该模块可以让产品经理、数据分析师以及企业管理层形象地看到各种条件下的具体用户行为以及统计指标.从而对公司的产品设计以及业务发展战略做出调整.主要使用Spark Core实现. 2、页面单跳转化率统计,该模块主要是计算关键页面之间的单步跳转转化率,涉及到页面切片算法以及页面流匹配算法.该模块可以让产品经理、数据分析师以及企业管理层看到各个关键页面之间的转化率.从而对网页布局,进行更好的优化设计。主要使用Spark Core实现. 3、热门商品离线统计,该模块主要实现每天统计出各个区域的top3热门商品.然后使用Oozie进行离线统计任务的定时调度,使用Zeppeline进行数据可视化的报表展示.该模块可以让企业管理层看到公司售卖的 商品的整体情况,从而对公司的商品相关的战略进行调螫.主要使用Spark SQL实现。 4、广告流量实时统计.该模块负责实时统计公司的广告流量.包括广告展现流量和广告点击流量,实现动态黑名单机制以及黑名单过滤,实现滑动窗口内的各城市的广告展现流立和广告点击流直的统计,实现 每个区域诲个广告的点击流置实时统计,实现每个区域top3点击量的广告的统计,主要使用Spark Streaming实现.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值