课程简介
a) 鉴于一般Spark不会单独使用,而是与Hadoop一起使用,因此该课程首先简单阐述HDFS与Yarn的关键技术与高可用及水平扩展方案
b) 结合精典案例讲解一个Spark Job的整个生命周期,以及如何划分Stage,如何生成逻辑执行计划和物理执行计划
c) 从Hash Shuffle到Sort Shuffle再到Tungsten Sort Shuffle详细分析Spark Shuffle机制的原理与演进
d) 结合Yarn分析Spark的内存模型以及如何进行相关调优
e) 介绍Spark Streaming使用方式,分析通用流式处理系统的关键问题以及Spark Streaming对相应问题的解决方案,如窗口,乱序,Checkpoint等,并分析Spark Streaming与Storm和Kafka Stream各自的优缺点和适用场景
f) 结合源码分析Spark SQL的原理,以及实现SQL引擎的一般方法,并介绍如何进行Spark SQL性能优化
g) 结合电影推荐系统这一案例,介绍如何使用Spark MLlib解决机器学习问题
h) 结合大量真实案例,分析如何解决数据倾斜问题从而提高应用性能
目标收益
a) 熟悉HDFS与Yarn实现原理及最佳实践
b) 掌握Spark核心原理,包括但不限于Spark Job的执行过程,Shuffle机制
c) 了解如何对Spark Job进行性能优化,包括但不限于参数调优,数据倾斜优化,代码调优
d) 掌握Spark Streaming的原理及使用方式,并掌握如何结合Spark Streaming和Kafka实现正好一次处理语义
e) 掌握Spark SQL的使用和优化方式,了解SQL引擎的原理
f) 掌握使用Spark MLlib解决机器学习问题的一般方法
培训对象
a) 大数据产品开发工程师
b) 大数据运维工程师
c) 大数据架构师
课程大纲
大数据系统的基础Zookeeper |
1.1 Zookeeper原理 1.2 集群配置管理 1.3 服务发现 1.4 基于Zookeeper的领导选举 1.5 分布式锁 |
HDFS原理 |
2.1 HDFS架构 2.2 HDFS读写过程及优化 2.3 MR与Spark使用HDFS最佳实践 2.4 Name node高可用方案 2.5 Name node水平扩展方案 |
Yarn原理 |
3.1 Yarn架构分析 3.2 资源分配与隔离 3.3 资源调度与调优 3.4 基于标签的资源分配 3.5 Resource Manager高可用方案 |
Spark核心原理 |
4.1 Spark架构 4.2 Job逻辑执行计划 4.3 Job物理执行计划 4.4 Spark transform与action 4.5 Spark Job的一生 |
Spark Shuffle机制演进 |
5.1 Hadoop Shuffle 5.2 Hash Shuffle 5.3 Sort Shuffle 5.4 Tungsten Sort Shuffle |
Spark内存模型与调优 |
6.1 内存分配 6.2 堆外内存使用 6.3 Spark on Yarn内存分配最佳实践 |
Spark数据结构原理 |
7.1 RDD优劣势 7.2 DataFrame与Dataset 7.3 广播变量实现原理 7.4 累加器 |
Spark Streaming |
8.1 例讲Spark Streaming 8.2 流式系统关键问题分析 8.3 Window操作 8.4 如何在流数据上做Join 8.5 Checkpoint机制 8.6 如何处理数据乱序问题 8.7 Spark Streaming容错机制 8.8 Spark与Kafka实现Exactly once 8.9 Spark Streaming vs. Storm vs. Kafka Stream 8.10 Spark Streaming性能优化 8.11 Structured Streaming |
Spark SQL |
9.1 Spark SQL前世今生 9.2 例讲Spark SQL 9.3 Spark SQL数据源 9.4 Spark集成metastore 9.5 如何实现和使用自定义函数(UDF) 9.6 DataFrame vs. spark-sql vs. thrift server 9.7 Spark SQL实现原理(SQL引擎原理) 9.8 Spark SQL性能优化 |
例讲数据倾斜解决方案及案例 |
10.1 为何需要处理数据倾斜 10.2 调整并行度,分散同一Task的不同Key 10.3 自定义Partitioner,分散同一Task的不同Key 10.4 Map Join代替Reduce Join消除数据倾斜 10.5 为倾斜key增加随机前缀 10.6 大表增加随机前缀,小表扩容 |
Spark MLlib原理与应用 |
11.1 使用Spark MLlib开发机器学习应用的方法 11.2 Pipeline的使用方法 11.3 超参数调优 11.4 如何开发新的算法 11.5 如何使用Spark MLlib开发电影推荐系统 |
大数据系统的基础Zookeeper 1.1 Zookeeper原理 1.2 集群配置管理 1.3 服务发现 1.4 基于Zookeeper的领导选举 1.5 分布式锁 |
HDFS原理 2.1 HDFS架构 2.2 HDFS读写过程及优化 2.3 MR与Spark使用HDFS最佳实践 2.4 Name node高可用方案 2.5 Name node水平扩展方案 |
Yarn原理 3.1 Yarn架构分析 3.2 资源分配与隔离 3.3 资源调度与调优 3.4 基于标签的资源分配 3.5 Resource Manager高可用方案 |
Spark核心原理 4.1 Spark架构 4.2 Job逻辑执行计划 4.3 Job物理执行计划 4.4 Spark transform与action 4.5 Spark Job的一生 |
Spark Shuffle机制演进 5.1 Hadoop Shuffle 5.2 Hash Shuffle 5.3 Sort Shuffle 5.4 Tungsten Sort Shuffle |
Spark内存模型与调优 6.1 内存分配 6.2 堆外内存使用 6.3 Spark on Yarn内存分配最佳实践 |
Spark数据结构原理 7.1 RDD优劣势 7.2 DataFrame与Dataset 7.3 广播变量实现原理 7.4 累加器 |
Spark Streaming 8.1 例讲Spark Streaming 8.2 流式系统关键问题分析 8.3 Window操作 8.4 如何在流数据上做Join 8.5 Checkpoint机制 8.6 如何处理数据乱序问题 8.7 Spark Streaming容错机制 8.8 Spark与Kafka实现Exactly once 8.9 Spark Streaming vs. Storm vs. Kafka Stream 8.10 Spark Streaming性能优化 8.11 Structured Streaming |
Spark SQL 9.1 Spark SQL前世今生 9.2 例讲Spark SQL 9.3 Spark SQL数据源 9.4 Spark集成metastore 9.5 如何实现和使用自定义函数(UDF) 9.6 DataFrame vs. spark-sql vs. thrift server 9.7 Spark SQL实现原理(SQL引擎原理) 9.8 Spark SQL性能优化 |
例讲数据倾斜解决方案及案例 10.1 为何需要处理数据倾斜 10.2 调整并行度,分散同一Task的不同Key 10.3 自定义Partitioner,分散同一Task的不同Key 10.4 Map Join代替Reduce Join消除数据倾斜 10.5 为倾斜key增加随机前缀 10.6 大表增加随机前缀,小表扩容 |
Spark MLlib原理与应用 11.1 使用Spark MLlib开发机器学习应用的方法 11.2 Pipeline的使用方法 11.3 超参数调优 11.4 如何开发新的算法 11.5 如何使用Spark MLlib开发电影推荐系统 |