对于一个具备相当技术门槛与复杂度的平台,Spark从诞生到正式版本的成熟,经历的时间如此之短,让人惊诧。2009年,Spark诞生于伯克利大学AMPLab,于2010年正式开源,2013年成为了Apache基金项目,2014年成为Apache基金的较高级项目,整个过程不到五年时间。
2015年是Spark飞速发展的一年,Spark成为了现在大数据领域最火的开源软件,截止2015年,Spark的Contributor比2014年涨了3倍,达到730人;总代码行数也比2014年涨了2倍多,达到40万行,不但大量的互联网企业已经在使用或者者正准备使用Spark,而且大量的电信、金融、证券和传统企业已经开始引入了Spark。
学习它并掌握它,是大数据风口下IT人的必备技能。本课程全程将通过以下内容的实战演练,带你玩转Spark!
本课程将会结合精典案例讲解Spark Job的整个生命周期,以及如何划分Stage,如何生成逻辑执行计划和物理执行计划。从Hash Shuffle到Sort Shuffle再到Tungsten Sort Shuffle详细分析Spark Shuffle机制的原理与演进,同时结合Yarn分析Spark的内存模型以及如何进行相关调优,其中两节课主要详情Spark Streaming使用方式,分析通用流式解决系统的关键问题以及Spark Streaming对相应问题的处理方案,如窗口,乱序,Checkpoint等,并分析Spark Streaming与Storm和Kafka Stream各自的优缺点和适用场景。
最后将结合源码分析Spark SQL的原理,以及实现SQL引擎的一般方法,详情如何进行Spark SQL性能优化。并结合大量真实案例,分析如何处理数据倾斜问题从而提高应用性能。
课程大纲:
很多初学者,对大数据的概念都是模糊不清的,大数据是什么,能做什么,学的时候,该按照什么线路去学习,学完往哪方面发展,想深入理解,想学习的同学欢迎加入大数据学习企鹅群:458345782,有大量干货(零基础以及进阶的经典实战)分享给大家,并且有清华大学毕业的资深大数据讲师给大家免费授课,给大家分享目前国内最完整的大数据高端实战实用学习流程体系。
第一课. Spark背景详情与安装部署
? ? ? ? ? ? ?1.1 Spark在大数据生态中的定位
? ? ? ? ? ? ?1.2 Spark主要板块详情
? ? ? ? ? ? ?1.3 Spark部署模型详情
? ? ? ? ? ? ?1.4 Spark基于Ambari的安装
? ? ? ? ? ? ?1.5 Spark Standalone下的HA
第二课. 基于Java的Spark编程入门
? ? ? ? ? ? ?2.1 Spark应用中的术语详情
? ? ? ? ? ? ?2.2 交互式工具spark-shell
? ? ? ? ? ? ?2.3 从Word Count看Spark编程
? ? ? ? ? ? ?2.4 spark-submit的几种用法
第三课 Spark常用算子详情
? ? ? ? ? ? ?3.1 transform与action
? ? ? ? ? ? ?3.2 广播变量与累加器
? ? ? ? ? ? ?3.3 persist与checkpoint
? ? ? ? ? ? ?3.4 数据本地性(Data locality)
第四课. 一个Spark应用的一生
? ? ? ? ? ? ?4.1 Spark应用的Stage划分
? ? ? ? ? ? ?4.2 窄依赖 vs. Shuffle依赖
? ? ? ? ? ? ?4.3 Job逻辑执行计划
? ? ? ? ? ? ?4.4 Job物理执行计划
第五课. Shuffle机制变迁
? ? ? ? ? ? ?5.1 Hadoop Shuffle方案
? ? ? ? ? ? ?5.2 Spark Hash Shuffle
? ? ? ? ? ? ?5.3 Spark Sort Shuffle
? ? ? ? ? ? ?5.4 Spark Tungsten Sort Shuffle
第六课. Spark SQL实战
? ? ? ? ? ? ?6.1 Spark SQL前世今生
? ? ? ? ? ? ?6.2 RDD vs. Dataframe vs. Dataset
? ? ? ? ? ? ?6.3 使用外部数据源
? ? ? ? ? ? ?6.4 连接metastore
? ? ? ? ? ? ?6.5 自己设置函数
? ? ? ? ? ? ?6.6 spark-sql与Spark thrift server
第七课. Spark SQL原理
? ? ? ? ? ? ?7.1 Spark SQL执行过程解析
? ? ? ? ? ? ?7.2 Catalyst原理
? ? ? ? ? ? ?7.3 SQL引擎原理
? ? ? ? ? ? ?7.4 Spark SQL优化
第八课. 例讲数据倾斜处理方案
? ? ? ? ? ? ?8.1 为何需要解决数据倾斜
? ? ? ? ? ? ?8.2 调整并行度,分散同一Task的不同Key
? ? ? ? ? ? ?8.3 自己设置Partitioner,分散同一Task的不同Key
? ? ? ? ? ? ?8.4 Map Join代替Reduce Join消除数据倾斜
? ? ? ? ? ? ?8.5 为倾斜key添加随机前缀
? ? ? ? ? ? ?8.6 大表添加随机前缀,小表扩容
第九课. Spark Streaming上
? ? ? ? ? ? ?9.1 Spark Streaming示例
? ? ? ? ? ? ?9.2 流式系统关键问题分析
? ? ? ? ? ? ?9.3 Window操作
? ? ? ? ? ? ?9.4 如何在流数据上做Join
? ? ? ? ? ? ?9.5 Checkpoint机制
第十课. Spark Streaming下
? ? ? ? ? ? ?10.1 如何解决数据乱序问题
? ? ? ? ? ? ?10.2 Spark Streaming容错机制
? ? ? ? ? ? ?10.3 Spark与Kafka实现Exactly once
? ? ? ? ? ? ?10.4 Spark Streaming vs. Storm vs. Kafka Stream
? ? ? ? ? ? ?10.5 Spark Streaming性能优化
? ? ? ? ? ? ?10.6 Structured Streaming
第十一课. Spark MLlib
? ? ? ? ? ? ?11.1 Pipeline
? ? ? ? ? ? ?11.2 特征工程
? ? ? ? ? ? ?11.3 模型选择
? ? ? ? ? ? ?11.4 调优
第十二课. Spark优化
? ? ? ? ? ? ?12.1 应用代码优化
? ? ? ? ? ? ?12.2 Spark统一内存模型
? ? ? ? ? ? ?12.3 基于YARN的参数优化
? ? ? ? ? ? ?12.4 其它优化项
授课时间:
课程估计2017年10月26日开课,估计课程持续时间为14周
授课对象:
Java开发转大数据开发
具备肯定Hadoop或者其它分布式应用基础,转Spark开发
希望在Spark开发和原理上有所提升的大数据开发人员?
课程环境:
Spark 2.1、Hadoop 2.7.3+
收获预期:
1. 掌握Spark核心原理,包括但不限于Spark Job的执行过程,Shuffle机制
2. 理解如何对Spark Job进行性能优化,包括但不限于参数调优,数据倾斜优化,应用代码调优
3. 掌握Spark Streaming的原理及使用方式,并掌握如何结合Spark Streaming和Kafka实现正好一次解决语义
4. 理解流式解决系统的常见问题和处理方案?