课程大纲
1. Flink 入门
1. Flink 本地开发环境
2. DataSet 与 DataStream
3. 数据类型
4. 几种 Key 选择方法性能比较
5. Accumulator 与 Counter
2. Flink 核心原理
1. Flink 架构
2. Flink 资源分配
3. Flink 任务调度
4. 性能调优实践
3. Flink 流式计算之时间
1. 处理时间、事件时间与摄取时间
2. Watermark
3. 如何处理乱序
4. 典型的窗口
4. Flink 流式计算之状态与容错
1. 几种典型的状态类型
2. Asynchronous Barrier Snapshot
3. Flink 状态使用最佳实践
4. Side outpus
5. Flink 流式计算之数据处理
1. Transformation
2. Join
3. Process Function
4. Async I/O
6. Flink Table API & SQL
1. 静态表与动态表
2. 连续查询中的 Join
3. UDF / UDAF / UDTF
7. HDFS原理
1. HDFS架构
2. HDFS读写过程及最佳实践
3. MR与Spark使用HDFS最佳实践
4. Name node高可用方案
5. Name node水平扩展方案
8. Yarn原理
1. Yarn架构分析
2. 资源分配与隔离最佳实践
3. 资源调度与调优
4. 基于标签的资源分配
5. Resource Manager高可用方案
9. Kafka架构
1. Kafka整体架构
2. Topic & Partition
3. Producer最佳实践
4. 消息路由之自定义Partitioner
5. 两种不同的Consumer用法
10. Kafka高可用原理
1. Kafka面临的CAP问题
2. 高可用下的数据分发
3. 动态平衡策略ISR
4. 基于Zookeeper的领导选举方案(Controller)
5. Failover原理
11. Consumer Rebalance方案演进
1. 为什么需要Rebalance
2. Rebalance实现的效果
3. 自治式Rebalance原理及问题
4. 集中式Rebalance实现原理(Consumer Coordinator)
5. 应用程序如何处理Consumer Rebalance
12. Kafka Stream
1. Kafka Stream架构
2. Kafka Stream并发模型
3. 实现Topology的两种方式
4. 窗口和Join原理与可恢复性保障
5. 适用场景
13. Kafka运维与如何实现正好一次
1. 重新分配Replica
2. Preferred Replica Leader Election
3. 两阶段提交实现正好一次
4. 幂等操作实现正好一次
5. 数据处理与offset管理放在同一事务实现正好一次
14. Kafka事务机制
1. 幂等Producer原理
2. Kafka事务原理(Transaction Coordinator)
3. Kafka Stream中的事务
15. Spark原理(包含源码调试)
1. Spark架构
2. Job逻辑执行计划
3. Job物理执行计划
4. Spark transform与action
5. Spark Job的一生
16 Spark内存模型与调优
1. 内存分配
2. 堆外内存使用
3. Spark on Yarn内存分配最佳实践
17. Spark数据结构原理
1. RDD优劣势
2. DataFrame与Dataset
3. 广播变量实现原理
4. 累加器
18. Spark SQL
1. Spark SQL前世今生
2. 例讲Spark SQL
3. Spark SQL数据源
4. Spark集成metastore
5. 如何实现和使用自定义函数(UDF)
6. DataFrame vs. spark-sql vs. thrift server
7. Spark SQL实现原理(SQL引擎原理)
8. Spark SQL性能优化
19. Spark Streaming
1. 例讲Spark Streaming
2. 流式系统关键问题分析
3. Window操作
4. 如何在流数据上做Join
5. Checkpoint机制
6. 如何处理数据乱序问题
7. Spark Streaming容错机制
8. Spark与Kafka实现Exactly once
9. Spark Streaming vs. Storm vs. Kafka Stream
10. Spark Streaming性能优化
11. Structured Streaming
20. Structured Streaming
1. Structured Streaming vs. Spark Streaming
2. 如何处理Event Time
3. 如何实现Fault Tolerant
4. Watermark实现原理
5. 三种输出模式及适用场景
21. 如何使用Spark解决机器学习问题
1. 使用MLlib实现基本统计
2. 如何使用ML Pipeline
3. 如何使用MLlib进行特征工程
4. 模型选择与调优
5. 超参数调节
22. 例讲数据倾斜解决方案及案例
1. 为何需要处理数据倾斜
2. 调整并行度,分散同一Task的不同Key
3. 自定义Partitioner,分散同一Task的不同Key
4. Map Join代替Reduce Join消除数据倾斜
5. 为倾斜key增加随机前缀
6. 大表增加随机前缀,小表扩容