第17周
消息队列之Kafka从入门到小牛
Kafka是一个支持高吞吐、持久性、分布式的消息队列,非常适合海量数据的实时生产和消费,详细分析了Kafka的核心原理、代码实战、性能优化,以及Kafka的企业级应用。
课程安排:
1、什么是消息队列
2、什么是Kafka
3、Zookeeper安装部署之单机模式和集群模式
4、 Kafka安装部署之单机模式和集群模式
5、Kafka中的生产者和消费者
6、案例:QQ群聊天
7、Broker扩展内容
8、Producer扩展内容
9、Consumer扩展内容
10、Topic+Partition+Message扩展内容
11、Kafka中的存储策略
12、Kafka中的容错机制
13、Java代码实现生产者代码
14、Java代码实现消费者代码
15、消费者代码扩展
16、Consumer消费Offset查询
17、Consumer消费顺序
18、Kafka的三种语义
19、Kafka参数调忧之JVM参数调忧
20、Kafka参数调忧之Replication参数调忧
21、Kafka参数调忧之Log参数调忧
22、Kafka Topic命名小技巧
23、Kafka集群监控管理工具(CMAK)
24、实战:Flume集成Kafka
25、实战:Kafka集群平滑升级
【本周思考与讨论】
1、Kafka和ActiveMQ、RabbitMQ、RocketMQ这些MQ有什么区别?
2、如何使用Zookeeper实现分布式进程监控?原理是什么?
3、Zookeeper如何实现分布式共享锁?原理是什么?
4、如何保证Kafka数据不丢失?
5、kafka如何保证数据一致性和可靠性?
6、谈一谈你对Kafka中exactly-once语义的理解?
7、如何开发一个基于Kafka的Topic Offset变化智能监控工具?
8、如何开发一个基于Kafka的消费者待消费数据(lag)监控告警工具?
第18周
极速上手内存数据库Redis
Redis是一种面向键值对的NoSQL内存数据库,可以满足我们对海量数据的读写需求,在这里我们学习Redis中的五种常用数据类型以及Redis中的一些高级特性,达到快速上手使用。
课程安排:
1、快速了解Redis
2、Redis的安装部署
3、Redis基础命令
4、Redis多数据库特性
5、Redis常用数据类型之String
6、Redis常用数据类型之Hash
7、Redis常用数据类型之List
8、Redis常用数据类型之Set
9、Redis常用数据类型之Sorted Set
10、案例:存储高一班的学员信息
11、Java代码操作Redis之单连接
12、Java代码操作Redis之连接池
13、提取RedisUtils工具类
14、Redis高级特性之expire
15、Redis高级特性之pipeline
16、Redis高级特性之info
17、Redis持久化之RDB
18、Redis持久化之AOF
19、Redis的安全策略
20、Redis监控命令-monitor
21、Redis架构演进过程
【本周思考与讨论】
1、如何使用Redis实现一个带有优先级的先进先出队列?
2、如何使用Scala代码实现RedisUtils工具类?
3、如何使用Redis方便的获取前10名学生信息以及获取某一个学生的排名?
4、Redis中事务和管道的区别?
5、如何查看Redis中的数据使用了多少内存?
6、Redis的内存碎片问题如何解决?
第19周
Flink快速上手篇
快速了解Flink的基本原理和核心特点,掌握Flink中流数据和批数据的编程思路和代码实战,Flink中Standalone集群、ON YARN集群的安装部署,以及Flink中核心API的使用。
课程安排:
1、快速了解Flink
2、Flink Streaming程序开发
3、Flink Batch程序开发
4、Flink Standalone集群安装部署
5、Flink ON YARN的第一种方式
6、Flink ON YARN的第二种方式
7、向集群中提交Flink任务
8、Flink核心API介绍
9、DataStream API之DataSource
10、DataStream API之Transformation
11、DataStream API之分区规则介绍
12、DataStream API之分区规则的使用
13、DataStream API之DataSink
14、DataSet API之DataSource
15、DataSet API之Transformation
16、DataSet API之DataSink
17、Table API 和 SQL介绍
18、创建TableEnvironment对象
19、TableAPI和SQL的使用
20、使用DataStream创建表
21、使用DataSet创建表
22、将表转换成DataStream
22、将表转换成DataSet
【本周思考与讨论】
1、如何在Flink流计算中开发自定义Source?
2、如何在Flink流计算中开发自定义Sink?
3、如何在Flink批处理中创建自定义Source?
4、如何在Flink批处理中创建自定义Sink?
5、Flink中的哪些算子容易产生数据倾斜?
6、分析一下Flink SQL的执行流程?
第20周
Flink高级进阶之路
详细剖析Window和Time的使用,Watermark的实战应用,并行度的设置,Kafka Connector的具体应用,以及SparkStreaming的特性和使用。
课程安排:
1、Window的概念和类型
2、TimeWindow的使用
3、CountWindow的使用
4、自定义Window的使用
5、Window中的增量聚合和全量聚合
6、Flink中的Time
7、Watermark的分析
8、开发Watermark代码
9、通过数据跟踪观察Watermark
10、Watermark+EventTime处理乱序数据
11、延迟数据的三种处理方式
12、在多并行度下的Watermark应用
13、Watermark案例总结
14、并行度介绍及四种设置方式
15、并行度案例分析
16、KafkaConsumer的使用
17、KafkaConsumer消费策略设置
18、KafkaConsumer的容错
19、KafkaProducer的使用
20、KafkaProducer的容错
21、SparkStreaming的WordCount程序开发
22、SparkStreaming整合Kafka
【本周思考与讨论】
1、使用FlinkSQL对Kafka中的数据进行操作,如何通过DDL的方式集成Flink和Kafka?
2、如何在SparkStreaming中使用SparkSQL实现数据计算?
3、介绍一下 Flink中kafka 消费者的Exactly-Once是如何实现的?
4、介绍一下Flink中kafka 生产者的Exactly-Once是如何实现的?
5、介绍一下Flink的两阶段提交机制?
【福利加餐】
1、天猫双11大屏的由来
2、双11大屏需求分析及架构设计
3、双11大屏指标核心代码开发
4、双11大屏从0~1全流程跑通
5、疑难问题-课程内容典型疑难问题整理【第二弹】
6、面试题-课程内容常见面试题整理【第二弹】
理论和实践是好基友,学练结合,效果增倍!
第21周
Flink1.15新特性及状态的使用
基于Flink1.15版本进行更新迭代,快速掌握基于新版本的代码开发,并且对Flink中的State(状态)的使用与管理进行深度扩展。
课程安排:
1、Flink最近几个版本的新特性介绍
2、什么是State(状态)
3、离线计算是否需要State(状态)?
4、State相关概念整体概览
5、State(状态)的类型介绍(RawState和ManagedState)
6、托管状态(Managed State)的类型对比分析
7、Keyed State详解(包括原理、数据结构)
8、Keyed State的使用案例之温度告警-ValueState
9、Keyed State的使用案例之直播间数据统计-MapState
10、Keyed State的使用案例之订单数据补全-ListState
11、Operator State详解(包括原理、数据结构)
12、Operator State的使用案例之ListState的使用
13、Operator State的使用案例之UnionListState的使用
14、Operator State的使用案例之BroadcastState的使用
【本周思考与讨论】
1、针对单词计数案例,如果通过MapState维护单词出现的次数是否可行?
2、Keyed State和Operator State中的ListState,有哪些区别?
3、Flink流计算任务中使用State是否会导致内存溢出?
第22周
Flink1.15之状态的容错与一致性
基于Flink1.15版本深入剖析流式计算任务中状态的容错与一致性,包括State的快照生成和恢复,最后以Kafka+Flink+Kafka场景为例整体分析了Flink任务如何实现端到端的一致性!
课程安排:
1、State的容错与一致性介筛
2、流计算中Exactly-once语义的多种实现思路
3、如何实现Flink任务的端到端一致性?
4、Checkpoint(快照)机制详解
5、如何保存多个Checkpoint?
6、从Checkpoint进行恢复
7、Savepoint详解
8、Checkpoint VS Savepoint
9、Savepoint保证程序可移植性的前提条件
10、手工触发Savepoint并从Savepoint进行恢复
11、State Backend(状态的存储方式)
12、State的生存时间(TTL)
13、Window中的数据存在哪里?
14、Checkpoint的生成过程和恢复过程详解
15、Checkpoint Barrier详解
16、Kafka+Flink+Kafka实现端到端一致性
17、Flink-Kafka相关源码分析
【本周思考与讨论】
1、如何基于Mysql实现一个支持Exactly-once语义的Sink组件?
2、Checkpoint在什么时候会自动触发恢复?
3、在RocksDB中,针对key-value类型的数据,使用ValueState和MapState哪种数据类型效率高?
第23周
全文检索引擎Elasticsearch
Elasticsearch是一个基于Lucene的分布式全文检索引擎,解决了海量数据下数据多条件快速复杂查询的痛点。
课程安排:
1、Elasticsearch核心原理介绍
2、常见的全文检索引擎分析
3、Solr vs Elasticsearch
4、MySQL VS Elasticsearch
5、Elasticsearch核心概念剖析
6、ES集群安装部署
7、ES集群监控管理工具-cerebro的使用
8、使用REST API的方式操作ES
9、使用Java API的方式操作ES
10、ES分词功能介绍
11、倒排索引介绍
12、分词器的作用及工作流程
13、停用词(常见的中文和英文停用词)
14、中文分词方式及常见的中文分词器
15、ES集成中文分词插件(es-ik)
16、es-ik添加自定义词库(包括热更新词库)
17、ES Search查询详解
18、searchType查询类型详解
19、ES 查询功能扩展(包括过滤、分页、排序、高亮、评分依据等)
20、ES中分页的性能问题分析
21、ES aggregations聚合统计案例应用
22、ES中的settings和mapping详解
23、ES的偏好查询(分片查询方式)分析
24、ES中的routing路由功能详解
25、ES的索引库模板和索引库别名的使用
26、ES SQL的使用
27、ES性能优化策略分析
【本周思考与讨论】
1、ES适合存储海量数据吗?在快速复杂查询和海量数据存储上如何权衡?
2、ES如何对半结构化和非结构化数据(例如:Word、Excel、Pdf等)提供快速检索功能?
3、ES中的数据Schema到底是动态生成还是手工指定,哪种方案比较好?
4、ES是否可以替换掉大数据中的Hive?
5、ES整合HBase可以解决哪种场景下的问题?
第24周
Es+HBase仿百度搜索引擎项目
基于Elasticsearch+HBase实现仿百度搜索引擎的海量数据存储和检索功能,可以提供海量数据下的多条件快速复杂检索能力。
课程安排:
1、大数据领域海量数据存储现状
2、大数据领域常见的SQL分析引擎
3、目前常见的全文检索引擎
4、海量数据存储+快速复杂查询需求分析及解决方案
5、仿百度搜索引擎项目架构设计
6、项目整体架构流程分析
7、ES和HBase数据同步的三种方案
8、ES高级特性扩展之_source字段
9、ES高级特性扩展之index和store属性
10、开发仿百度搜索引擎项目
11、调用接口获取数据导入HBase和Redis
12、通过ES对HBase中的数据建立索引
13、对接Web项目,提供页面检索功能
14、从0~1运行项目
15、项目中遇到的典型问题
【本周思考与讨论】
1、为什么要基于Elasticsearch+HBase实现海量数据存储和建立索引,单独使用Elasticsearch不行吗?
2、Hive、Impala、Spark、Flink这些引擎为什么不适合海量数据检索需求?
3、Elasticsearch如果是存储商品数据,索引库的mapping信息该如何设计比较合理?
4、如何保证Elasticsearch和HBase中的数据一致性?