大数据工程师2023版
紧跟技术发展,对标高薪岗位技能模型,带你更快进阶合格的大数据工程师
java/Scala双语言教学,系统构建大数据技能体系
企业级案例驱动学习,还原真实业务场景
试看链接:
章节目录:
阶段一:走进大数据
第1周 学好大数据先攻克linux
在步入大数据殿堂之前,先带领大家快速掌握大数据的必备技能:Linux的操作使用,为后面学习大数据技术打下坚实基础。预习资料传送门:http://suo.im/613aVS 提取码:bbbb
课程安排:
1、掌握Linux虚拟机的安装和配置
2、使用ScecureCRT连接Linux虚拟机
3、掌握Linux中常见高级命令(vi、wc、sort、date、jps、kill等命令)的使用
4、掌握Linux中三剑客(grep、sed、awk)的常见用法
5、掌握Linux的高级配置(ip、hostname、防火墙)
6、掌握Shell脚本的开发
7、掌握Shell中变量、循环和判断的使用
8、掌握Shell中的扩展内容
9、掌握Linux中crontab定时器的使用
10、了解认识什么是大数据
11、大数据产生的背景
12、大数据的4V特征
13、大数据的行业应用
【本周思考与讨论】
1、结合自己的实际情况,明确学习目标、制定学习计划。有计划、有执行、有落实,必有收获!
2、利用学习的Linux高级技能实现论坛访问日志数据分析,看一下到底是谁在暴力攻击你的网站?
3、某云服务器被挖矿病毒程序侵入,病毒程序很顽强,如何开发一个脚本监控并杀掉此病毒程序?
4、手动安装JDK配置环境变量太繁琐了,如何开发一个一键安装配置JDK的程序?
5、为什么使用jps命令查看不到正在运行的Java进程?
6、在SecureCRT中按Ctrl+s会发生什么现象,尝试一下?
7、如何确认Crontab中的定时任务是否正常执行?
8、使用crontab -e 和 vi /etc/crontab配置的定时任务有什么区别?
9、谈一谈你眼中的大数据是什么样的?
学习贵在坚持,每天进步一点点!
第2周 大数据起源之初识Hadoop
Hadoop是大数据开创者,引领者,学习大数据必经之路,本周带领大家了解Hadoop,以及Hadoop集群的安装部署。预习资料:http://suo.im/5SMmAO 提取码:bbbb
课程安排:
1、什么是Hadoop
2、Hadoop发行版介绍
3、Hadoop版本演变历史
4、Hadoop3.x的细节优化
5、Hadoop三大核心组件介绍
6、伪分布集群安装部署
7、分布式集群安装部署
8、Hadoop的客户端节点
【本周思考与讨论】
1、如何让你对大数据平台进行技术选型,你是选择原生Hadoop还是CDH/HDP?这样选择的依据是什么?
2、谈一下你对Hadoop的认知,Hadoop的出现到底改变了什么?
3、你在安装Hadoop集群的时候都遇到了哪些坑?如何解决的?
4、动手配置一个Hadoop客户端节点,都有哪些注意事项?
5、Hadoop客户端节点是怎么识别Hadoop集群的?
6、如果让你规划一套大数据平台的部署方案,你会如何规划?
授人以鱼不如授人以渔,加油,打工人!
第3周 Hadoop之HDFS的使用
通过生活场景”小明租房”案例引入HDFS核心架构,掌握HDFS的常见Shell操作以及Java代码操作,对以后实现海量数据的存储打下基础。
课程安排:
1、生活场景引入:”小明租房”案例一步一步引入Hadoop中的分布式存储架构
2、HDFS的Shell介绍
3、HDFS的常见Shell操作
4、HDFS案例实操
5、Java代码操作HDFS
6、HDFS的高级Shell命令
7、HDFS读数据过程分析
8、HDFS写数据过程分析
9、HDFS写数据源码分析
【本周思考与讨论】
1、还有哪些和HDFS类型的分布式文件系统?它们都有什么特点?
2、如何实现大海捞针,从HDFS中揪出不经常使用并且占用空间的大文件?
3、如何获取指定的HDFS目录下所有文件的Block块信息?
4、在工作中最常用的是使用shell命名操作HDFS还是使用Java代码操作?
5、我们自己串联多块硬盘实现海量数据存储和使用HDFS有什么区别?
6、HDFS集群之间是否可以实现数据迁移?
7、如何通过JS代码(或者C++、php之类的代码)获取HDFS中的文件信息?
知其然也要知其所以然!
第4周 Hadoop之HDFS核心进程剖析
通过对HDFS中核心进程NameNode、SecondaryNameNode、DataNode进行详细分析,帮助大家更好的理解HDFS的底层原理
课程安排:
1、NameNode介绍
2、NameNode深入
3、SecondaryNameNode介绍
4、DataNode介绍
5、HDFS的回收站
6、HDFS的安全模式详解
7、实战:定时上传数据至HDFS
8、HDFS的高可用和高扩展机制分析
【本周思考与讨论】
1、HDFS中的回收站和windows中的回收站有什么区别?
2、Hadoop中必须要有SecondaryNameNode进程吗?
3、HDFS中NameNode内存将要耗尽,有什么解决方案?
4、一台128G内存的NameNode节点理论上可以存储多少文件的元数据?
5、HDFS中的安全模式是为了干什么?有什么意义?
6、HDFS的存储能力理论上来说是有极限的,如何扩容?
7、开发脚本实现定时向HDFS中上传内容和下载内容
动手一次胜过浏览万次,多做,多练!
第5周 Hadoop之初识MR
通过”计算扑克牌中的黑桃个数”案例引入MapReduce的思想,详细分析了MapReduce的执行流程,并且通过开发WordCount案例加深理解。
课程安排:
1、MapReduce介绍
2、 MapReduce执行原理
3、实战:WordCount案例图解
4、实战:WordCount案例开发
5、MapReduce任务日志查看
6、停止Hadoop集群中的任务
7、MapReduce程序扩展
【本周思考与讨论】
1、谈一下你对本地计算的理解?它的计算性能为什么这么高?
2、如何开发一个只有map阶段的MapReduce任务?这种任务的应用场景是什么?
3、使用MapReduce如何开发自定义二次排序Key?
4、使用MapReduce如何实现统计TopN的需求?
5、谈一谈你对源码分析的看法?如何快速高效分析项目源码?
6、如果MapReduce任务中没有shuffle过程会出现什么现象?
7、MapReduce中的Combiner阶段在什么场景下适合使用?
8、如何使用MapReduce对数据实现全局排序?
源码是解决一切问题的根源,一言不合,源码中见分晓!
阶段二:PB级离线数据计算分析存储方案
第6周 拿来就用的企业级解决方案
详细分析了小文件的解决方案、数据倾斜的解决方案、YARN调度器的使用、以及Hadoop在CDH和HDP中的使用。
课程安排:
1、小文件问题之SequenceFile
2、小文件问题之MapFile
3、案例:小文件存储和计算
4、 数据倾斜问题分析
5、数据倾斜案例实战
6、YARN的基本情况介绍
7、YARN中的调度器分析
8、案例:YARN多资源队列配置和使用
9、Hadoop官方文档使用指北
10、Hadoop在CDH中的使用
11、Hadoop在HDP中的使用
【本周思考与讨论】
1、在工作中如何遇到了小文件问题,都有哪些解决方法?你推荐是用哪种?理由是什么?
2、能不能使用zip或者rar文件解决HDFS中的小文件问题?
3、总结一下数据倾斜产生的原因,如何避免?如何解决?
4、如何从一批数据中找出倾斜的key?
5、分析一下Hadoop中的RPC框架?
6、想一下,如果给你一个10T内存、6400个CPU的大数据集群,你会如何在YARN中分配多个资源队列?
7、在MapReduce程序中使用gzip数据压缩方式对程序计算性能进行优化,对比一下性能提升了多少?
8、在MapReduce中如何实现多路输入(同时指定多个不同的输入目录)?
9、在MapReduce中如何实现多路输出(按照一定规则,将结果输出到多个不同的目录中)?
【福利加餐】
1、大数据技术揭开抖音推荐的真相
2、大厂资深HR教你如何准备简历和面试
3、扩展知识-Hadoop3.0新特性之纠删码技术
4、疑难问题-课程内容典型疑难问题整理【第一弹】
5、面试题-课程内容常见面试题整理【第一弹】
理论和实践是好基友,学练结合,效果增倍!
第7周 Flume从0到高手一站式养成记
Flume是一个分布式、高可靠、高可用的系统,能够有效的收集、聚合、移动大量的日志数据,在数据采集领域,属于中流砥柱,在这里通过原理、实战、监控、优化等层面对Flume进行学习。
课程安排:
1、快速了解Flume
2、Flume的三大核心组件
3、Flume安装部署
4、Flume的Hello World
5、案例:采集文件内容上传至HDFS
6、Flume高级组件之Source Interceptors
7、Flume高级组件之Channel Selectors
8、Flume高级组件之Sink Processors
9、各种自定义组件
10、Flume优化
11、Flume进程监控
【本周思考与讨论】
1、设想一下,给你几百台机器让你采集日志数据,你应该如何快速高效的实现?
2、和Flume类似的日志数据采集工具还有Logstash、Filebeat,他们有什么典型区别?如何进行技术选型?
3、如何开发一个通用的监控程序来监控Flume进程的运行情况,实现监控+预警+自动重启一条龙服务?
4、如何使用Flume中的自定义拦截器实现数据分目录存储?
5、如果Flume中内置的sink组件不够用,如何开发自定义的Sink组件实现数据存储?
6、 Flume中哪些地方用到了事务机制?
合适的才是最好的,技术选型的时候要坚持此原则!
第8周 数据仓库Hive从入门到小牛
频繁的开发MapReduce是非常繁琐的,并且很多业务人员是不懂代码的,如何让他们也可以很方便的操作HDFS中的海量数据呢?Hive的横空出世,解决了这一难题。
课程安排:
1、快速了解Hive
2、数据库和数据仓库的区别
3、Hive安装部署
4、Hive使用方式之命令行方式
5、Hive使用方式之JDBC方式
6、Set命令的使用
7、Hive的日志配置
8、Hive中数据库的操作
9、Hive中表的操作
10、Hive中数据类型的应用
11、Hive表类型之内部表+外部表
12、Hive表类型之内部分区表
13、Hive表类型之外部分区表
14、Hive表类型之桶表+视图
15、Hive数据处理综合案例
16、Hive高级函数之分组排序取TopN
17、Hive高级函数之行转列
18、Hive高级函数之列转行
19、Hive的排序函数
20、Hive的分组和去重函数
21、一个SQL语句分析
22、Hive的Web工具-HUE
【本周思考与讨论】
1、如何在Hive中开发自定义SQL函数实现单词首字母大写转换功能?
2、如何开发开发只产生一次shuffle且无子查询的SQL语句?
3、使用Hive SQL统计一份订单销售数据,计算出月环比
4、针对一个用到了union all和group by的SQL,在数据量很大的情况下,就会很慢,如何优化此SQL?
5、在一份海量数据中,如何使用HiveSQL发现倾斜的Key?
6、摘取自某同学工作中的实际需求:使用Hive加载指定复杂嵌套格式的数据
7、生产环境中为什么建议使用Hive外部表?
8、Hive分区表如何开启自动加载分区?
9、Hive中支持多种数据存储格式,默认是TextFile,还可以SequenceFile、RCFile、ORCFile等,这4种数据存储格式有什么优缺点?
第9周 Hive扩展内容
针对Hive中的数据压缩格式和数据存储格式进行扩展分析,进一步提高Hive的存储能力和计算性能。
课程安排:
1、常见的数据压缩格式介绍
2、数据压缩格式选择建议和压缩位置
3、数据压缩格式案例实战分析
4、默认未压缩格式演示
5、Deflate压缩格式演示
6、Gzip压缩格式演示
7、Bzip2压缩格式演示
8、Lz4压缩格式演示
9、Snappy压缩格式演示
10、Lzo压缩格式演示
11、数据存储格式之TextFile的原理及使用
12、数据存储格式之SequenceFile的原理及使用
13、数据存储格式之RCFile的原理及使用
14、数据存储格式之ORC的原理及使用
15、数据存储格式之Parquet的原理及使用
16、数据存储格式总结
17、数据压缩格式和存储格式在数仓中的应用
【本周思考与讨论】
1、为什么要在Hive中集成压缩格式?
2、如何在Hive中针对Map阶段的中间结果设置压缩?
3、针对小文件的问题,在Hive中应该如何解决?
4、在Hive数据仓库中应该如何选择合适的数据存储格式和压缩格式?
第10周 快速上手NoSQL数据库HBase
HBase是一个高可靠 、高性能 、面向列 、可伸缩的NoSQL数据库,解决了HDFS无法实现修改删除的问题,适合应用在高并发实时读写的应用场景中。
课程安排:
1、HBase核心原理介绍
2、列式存储简介及优点
3、HBase典型应用场景及应用案例分析
4、HBase的优缺点总结
5、HBase逻辑存储模型详解
6、HBase集群安装部署
7、HBase常用命令之基础命令和DDL命令
8、HBase常用命令之增删改查命令和命名空间的操作
9、HBase JavaAPI开发环境配置
10、HBase JavaAPI之增加和查询操作
11、HBase JavaAPI之查询多版本数据和删除操作
12、HBase JavaAPI之创建表和删除表
13、Region概念详解
14、HBase物理架构详解
15、HBase底层架构详解
16、WAL预写日志系统
17、HFile文件及布隆过滤器介绍
18、HFile的合并机制详解
19、Region的分裂机制详解
20、Region的负载均衡策略详解
21、列族高级设置
22、Scan全表扫描功能详解
23、HBase批量导入和批量导出功能详解
24、HBase链接池分析
25、HBase预分区、Rowkey列族的设计原则
26、HBase核心参数优化
27、HBase扩展内容(Hive+HBase、Phoenix、协处理器、Elasticsearch+HBase)
28、HBase常见问题总结
29、HBase实现分页功能
30、封装HBaseUtils工具类
【本周思考与讨论】
1、如果想支持海量数据读写需求和SQL查询分析需求,有哪些解决方案或技术组件可以实现?
2、HDFS是不支持修改删除的,为什么HBase是基于HDFS的,HBase却可以支持修改删除?
3、如果有固定多个字段组合查询的需求,应该对HBase做哪些设计?
4、为什么在大数据领域很多技术框架底层数据存储倾向于使用列式存储?
5、谈一谈你的HBase中的多数据版本特性的理解?
6、谈一谈你对HBase中列族的理解?
第11周 数据分析引擎之Impala
Hive的计算延迟比较高,不适合应用在即席查询需求中,因此Impala出现了,它是使用C++实现的基于内存的分布式计算引擎,可以提供低延迟,高性能的计算能力。
课程安排:
1、什么是Impala
2、Impala的优点和缺点
3、Impala + Hive架构分析
4、Impala三大核心组件详解
5、Impala的整体运行架构
6、基于CDH平台的Impala安装部署
7、impala-shell客户端命令行使用
8、Impala JDBC代码访问
9、Impala Hue页面访问
10、Impala中内部表的使用
11、Impala中外部表的使用
12、Impala中分区表的使用
13、Impala中refresh命令的原理及使用
14、Impala中invalidate metadata命令的原理及使用
15、Impala 的数据存储和数据压缩
16、Impala SQL VS Hive SQL
17、Impala 和 Hive的典型应用场景
18、Impala 集成HBase(包含Hive集成HBase)
【本周思考与讨论】
1、Impala是否可以完全取代Hive?
2、针对Hive中包含了Date字段的表,如何处理才能比较好的兼容ImpalaSQL?
阶段三:Spark+综合项目:电商数据仓库设计与实战
第12周 7天极速掌握Scala语言
Scala的函数式编程受到很多框架的青睐,例如Kafka、Spark、Flink等框架都是使用Scala作为底层源码开发语言,下面就带着大家7天极速掌握Scala语言。
课程安排:
1、快速了解Scala
2、Scala环境安装配置
3、Scala中的变量和数据类型
4、Scala中的表达式和循环
5、Scala集合体系之Set+List+Map
6、Scala中的Array和Tuple
7、Scala中函数的使用
8、Scala面向对象之类的使用
9、Scala面向对象之对象和伴生对象
10、Scala面向对象之apply和main的使用
11、Scala面向对象之接口的使用
12、Scala函数式编程之匿名函数和高阶函数的使用
13、Scala高级特性之模式匹配和隐式转换
【本周思考与讨论】
1、谈一下你对Scala语言的认知,Scala和Java有什么异同?Scala的语法格式和python有没有相似之处?
2、Scala中的匿名函数和Java中的匿名函数有什么区别?
3、如何使用Scala代码读取MySQL数据库中的数据?
4、如何使用Scala实现单例设计模式?Scala中不支持静态关键字,如何实现单例?
5、Scala中的数据类型和Java中的数据类型有什么区别?
6、Scala代码和Java代码可以无缝集成吗?
7、分析一下Scala中的map和tuple 的区别?
8、Scala中的下划线 _ 有哪些作用?
第13周 Spark快速上手
Spark是目前企业中应用最广泛的计算引擎,盘它!实际案例详细分析Spark中的Transformation算子和Action算子使用,RDD持久化,共享变量使用,最后通过一个综合案例加深理解。
课程安排:
1、快速了解Spark
2、Spark 集群安装部署(Standalone+ON YARN)
3、Spark工作原理分析
4、什么是RDD
5、Spark架构原理
6、Spark项目开发环境配置
7、WordCount代码开发(Java+Scala)
8、Spark任务的三种提交方式
9、Spark开启historyServer服务
10、创建RDD的三种方式
11、Transformation和Action介绍
12、Transformation操作开发实战
13、Action操作开发实战
14、RDD持久化原理
15、RDD持久化开发实战
16、共享变量之Broadcast Variable的使用
17、共享变量之Accumulator的使用
18、案例实战:TopN主播统计
19、面试题
【本周思考与讨论】
1、谈一下你对Spark的理解,Spark和Hadoop之间是什么关系?
2、按照你的理解,在工作中最常用的是Spark的哪一种任务提交方式?说出你的理由?
3、你们目前工作中开发Spark代码是使用scala语言还是java语言?你倾向于使用哪一种语言?
4、在Spark程序中将处理的结果数据按照一定的规则,输出到多个不同的目录中,实现多路输出
5、如何使用Spark程序实现对WordCount的结果排序输出?
6、如何使用Spark实现自定义二次排序Key的开发?
7、Spark中join和cogroup的区别?
8、Spark如何读取多个不同目录下的数据(多路输入)?
9、介绍一下Spark的远程进程通信机制?
第14周 Spark性能优化的道与术
通过对Spark中的宽依赖、窄依赖、Stage、Shuffle机制进行详细分析,加深对Spark的理解,以及对Spark中的checkpoint机制通过源码层面进行深度剖析。
课程安排:
1、宽依赖和窄依赖
2、Stage的理解
3、Spark任务的三种提交模式
4、Shuffle介绍
5、三种Shuffle机制分析
6、checkpoint概述
7、checkpoint和持久化的区别
8、checkpoint代码开发和执行分析
9、checkpoint源码分析之写操作和读操作
10、Spark程序性能优化分析
11、高性能序列化类库Kryo的使用
12、持久化或者checkpoint
13、JVM垃圾回收调忧
14、提高并行度
15、数据本地化
16、算子优化
17、SparkSql快速上手使用
18、实战:SparkSQL实现TopN主播统计
【本周思考与讨论】
1、谈一下你对宽依赖和窄依赖的理解,以及Stage的个数和宽依赖之间的关系?
2、谈一下你对Spark性能优化的总结,到底哪种优化策略的效果最明显?
3、想要在Spark中直接操作MySQL应该如何实现?
4、如何在SparkSQL中使用自定义函数(UDF)?
5、算子优化在优化方案中常见吗?都适合在哪些场景中使用?
6、Spark中的repartition和coalesce有什么区别?
7、谈一下你对SparkSQL和Hive的理解?
8、分析一下SparkSQL的执行流程?
第15周 Spark3.x扩展内容
基于Spark3.x版本进行更新迭代,重点分析Spark3.x中的新特性,并且扩展SparkSQL相关内容。
课程安排:
1、Spark 3.0.0版本介绍
2、基于Spark 3.x版本开发代码
3、在已有的大数据集群中集成Spark 3.x环境
4、向YARN中同时提交Spark 2.x和Spark 3.x的代码
5、Spark 1.x~3.x的演变历史
6、自适应查询执行之自适应调整Shuffle分区数量
7、自适应查询执行之动态调整Join策略
8、自适应查询执行之动态优化倾斜的 Join
9、Spark 3.x新特性之动态分区裁剪
10、Spark 3.x新特性之加速器感知调度
11、Spark 3.x新特性之Catalog 插件 API
12、Spark 3.x新特性之更好的 ANSI SQL 兼容性
13、在SparkSQL 命令行中集成Hive
14、在SparkSQL 代码中集成Hive
15、SparkSQL写入Hive表的几种方式
【本周思考与讨论】
1、禁用动态优化倾斜的 Join策略时,如何解决数据倾斜问题?
2、禁用动态调整Join策略时,如果实现Map端Join?
3、动态分区裁剪和SQL中的谓词下推有什么关系?
第16周 综合项目:电商数据仓库之用户行为数仓
整合各个业务线数据,为各个业务系统提供统一&规范的数据出口。通过对项目的由来,需求、技术进行分析和选型,实现用户行为数据数仓开发。
课程安排:
1、项目效果展示
2、项目的由来
3、什么是数据仓库
4、数据仓库基础知识
5、数据仓库分层
6、典型数仓系统架构分析
7、技术选型
8、整体架构设计
9、服务器资源规划
10、生成用户行为数据【客户端数据】
11、生成商品订单相关数据【服务端数据】
12、采集用户行为数据【客户端数据】
13、Sqoop安装部署
14、Sqoop之数据导入功能
15、Sqoop之数据导出功能
16、采集商品订单相关数据【服务端数据】
17、用户行为数据数仓开发之ods层开发
18、用户行为数据数仓开发之ods层脚本抽取
19、用户行为数据数仓开发之dwd层开发
20、用户行为数据数仓开发之dwd层脚本抽取
21、用户行为数据数仓需求分析
22、用户行为数据数仓需求开发
23、用户行为数据数仓表和任务脚本总结
【本周思考与讨论】
1、谈一下你对数据仓库分层的理解,如果分成3层或者5层可以吗?
2、谈一下你对数仓技术选型的看法,请提出你的思路?
3、如何使用Sqoop将MySQL表数据导入Hive表中?
4、如何使用Sqoop将Hive表数据导出到MySQL表中?
5、开发数仓的时候有哪些注意事项?什么时候容易掉坑里面?
6、针对数仓脚本的开发心得,交流一下
7、什么是数据湖?谈一下你的理解?
第17周 综合项目:电商数据仓库之商品订单数仓
基于商品订单数据开发数仓,详细分析了拉链表的由来和具体实现。使用数据可视化工具Zepplin实现数据展现,使用Azkaban调度器实现任务依赖调度。
课程安排:
1、商品订单数据数仓开发之ods层和dwd层
2、商品订单数据数仓需求分析与开发
3、什么是拉链表
4、如何制作拉链表
5、【实战】基于订单表的拉链表实现
6、拉链表的性能问题分析
7、商品订单数据数仓表和任务脚本总结
8、数据可视化之Zepplin的安装部署和参数配置
9、数据可视化之Zepplin的使用
10、任务调度之Crontab调度器的使用
11、任务调度之Azkaban的安装部署
12、任务调度之Azkaban提交独立任务
13、任务调度之Azkaban提交依赖任务
14、任务调度之在数仓中使用Azkaban
15、项目优化
【本周思考与讨论】
1、使用Hive SQL可以实现数据清洗,使用Spark代码也能实现数据清洗,有什么区别吗?
2、使用Spark代码实现ods层数据清洗工作,替换掉之前的Hive SQL
3、针对用户信息表,有必要制作成拉链表吗?说出你的理由?
4、Crontab和Azkaban都能实现任务调度,应该如何技术选型呢?
5、如何使用Azkaban实现调度漏斗分析需求相关任务?
6、Hive和Impala有什么异同?谈一谈你对Impala的理解?
7、Ooize和Azkaban都是大数据中常用的任务调度工具,谈一下你对Ooize的看法?
阶段四:高频实时数据处理+海量数据全文检索方案
第18周 消息队列之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)监控告警工具?
第19周 极速上手内存数据库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的内存碎片问题如何解决?
第20周 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的执行流程?
第21周 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、面试题-课程内容常见面试题整理【第二弹】
理论和实践是好基友,学练结合,效果增倍!
第22周 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是否会导致内存溢出?
第23周 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哪种数据类型效率高?
第24周 FlinkSQL(1.15)快速上手
基于Flink1.15版本,主要涉及Flink SQL中的表、列、数据类型、DML语句、滚动+滑动窗口、Watermark、Catalog、HiveModule、SQL Client等功能
课程安排:
1、Flink SQL快速理解(离线计算+实时计算)
2、Flink SQL解析引擎之Calcite分析
3、Flink SQL之DDL案例(FileSystem+Print)
4、Flink SQL之DDL案例(Kafka+Kafka)
5、Flink SQL中的静态表和动态表
6、Flink SQL中的连续查询概念解释
7、Flink SQL动态表转换为Append-only流
8、Flink SQL动态表转换为Retract流
9、Flink SQL动态表转换为Upsert流
10、Flink SQL中的版本表和时态表函数
11、Flink SQL常见的数据类型
12、Flink SQL中常规列和元数据列介绍
13、Flink SQL中元数据列的使用
14、Flink SQL中计算列介绍
15、Flink SQL中的DML语句介绍
16、Flink SQL滚动窗口和滑动窗口的使用
17、Flink SQL滚动窗口+Watermark的使用
18、Flink SQL中Catalog的原理及使用
19、Flink SQL如何兼容Hive SQL函数和Hive SQL语法
20、Flink SQL Client客户端工具的使用
21、Flink SQL Client直接执行SQL脚本文件
【本周思考与讨论】
1、Flink SQL开启Hive方言之后是否可以支持Hive中的函数?
2、Flink SQL如何支持自定义函数?
3、Flink SQL中的哪些功能会借助于State实现?
第25周 FlinkSQL双流JOIN详解
基于Flink1.15版本详细介绍双流JOIN的用法,主要涉及到普通Join、时间区间Join、快照Join、维表Join、数组炸裂、表函数Join、窗口Join等Join类型的原理及实战。
课程安排:
1、Hive SQL离线Join VS Flink SQL双流Join
2、Flink SQL双流Join底层原理
3、Flink SQL的Join类型之普通Join(Regular Join)
4、普通Join(Regular Join)之Inner Join(Left Join\Right Join\Full Join)的执行流程
5、普通Join(Regular Join)案例实战
6、upsert-kafka原理及源码分析
7、JOIN 执行流程源码分析
8、GROUP BY执行流程源码分析
9、SQL92与SQL99中JOIN的语法区别
10、Flink SQL的Join类型之时间区间Join(Interval Join)
11、时间区间Join(Interval Join)执行流程
12、时间区间Join(Interval Join)底层源码剖析
13、时间区间Join(Interval Join)左边界+右边界
14、时间区间Join(Interval Join)案例实战
15、Flink SQL的Join类型之时态/快照Join(Temporal Join)
16、时态/快照Join(Temporal Join)案例实战
17、两个普通动态表(仅追加)如何实现Temporal Join
18、Temporal Join核心源码分析
19、Flink SQL的Join类型之维表Join(Lookup Join)
20、维表Join(Lookup Join)案例实战
21、Flink SQL的Join类型之数组炸裂(Array Expansion)
22、数组炸裂(Array Expansion)案例实战
23、Flink SQL的Join类型之表函数Join(Table Function Join)
24、表函数Join案例实战
25、时态表函数Join案例实战
26、Flink SQL的Join类型之窗口 Join(Window Join)
27、Window Join VS Interval Join
28、窗口 Join(Window Join)案例实战
29、Flink SQL 双流JOIN总结
30、Flink SQL之State TTL
31、Flink SQL之Checkpoint
【本周思考与讨论】
1、Flink SQL多流Join和双流Join有什么区别吗?
2、Flink SQL如何向企业内部的存储系统中写入数据?
3、Flink SQL读写Kafka动态表是否可以实现仅一次语义?
第26周 实时OLAP引擎之ClickHouse
详细分析了目前业内常见的OLAP数据分析引擎,重点学习ClickHouse的核心原理及使用,包括常见的数据类型、数据库、MergeTree系列表引擎、分布式集群、副本、分片、分区等核心功能的使用。
课程安排:
1、OLAP引擎的起源
2、OLAP引擎的分类
3、大数据领域OLAP引擎典型应用场景及选型依据
4、ClickHouse的由来及概述
5、ClickHouse的优缺点
6、ClickHouse单机安装部署
7、ClickHouse节点基础环境修改及核心目录介绍
8、ClickHouse常见客户端的使用(Cli+JDBC+DBeaver)
9、ClickHouse中常见数据类型的使用(基础、复合、特殊数据类型)
10、ClickHouse中数据库的操作
11、ClickHouse中表的DDL和DML操作
12、MergeTree(合并树)系列表引擎介绍
13、MergeTree建表语句详解
14、MergeTree中的一级索引和二级索引
15、MergeTree中的数据分区特性
16、MergeTree中的数据副本及数据TTL特性
17、集群、副本、分片和分区概念解释
18、集群基础环境安装部署-1
19、副本特性的使用及副本写入流程
20、分片特性的使用
21、集群整体规划与配置
22、分布式DDL语句
23、Distributed表引擎的原理及实战
24、JDBC代码操作集群及集群的使用建议
25、ClickHouse完整查询语句介绍
26、ClickHouse中WITH、IN、JOIN语句的使用
【本周思考与讨论】
1、HBase是否可以替代ClickHouse?
2、ClickHouse在实时数据仓库中的定位?
3、谈一下你对ClickHouse中表引擎的理解?
第27周 全文检索引擎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可以解决哪种场景下的问题?
第28周 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中的数据一致性?
阶段五:综合项目:三度关系推荐系统+数据中台
第29周 实时数仓-Kafka Eagle+DS
针对实时数据仓库项目中需要用到的数据监控(Kafka Eagle)和任务调度(DolphinScheduler)技术组件进行扩展,为构建实时数据仓库提供底层技术支撑。
课程安排:
1、Kafka Eagle(EFAK)简介
2、Kafka Eagle(EFAK)安装部署
3、Kafka Eagle(EFAK)常见功能的使用
4、DolphinScheduler简介
5、DolphinScheduler基础环境配置
6、DolphinScheduler伪分布安装
7、DolphinScheduler常见功能介绍
8、案例实战-单个Shell任务调度
9、案例实战-调度已开发好的Shell脚本任务
10、案例实战-调度带依赖的Shell任务
11、案例实战-使用Shell插件调度HiveSQL
12、案例实战-使用HiveCli插件调度HiveSQL
13、案例实战-使用SQL插件调度HiveSQL
14、案例实战-使用Shell插件调度Spark任务
15、案例实战-使用Spark插件调度Spark任务
16、案例实战-使用Shell插件调度Flink任务
17、案例实战-使用Flink插件调度Flink任务
【本周思考与讨论】
1、如果需要自研一个Kafka监控平台,你希望如何设计?
2、谈一下你的主流分布式任务调度工具的理解?
第30周 实时数仓-Flink CDC数据采集
针对实时数据仓库项目中需要用到的数据库实时数据采集(Flink CDC)技术组件进行扩展,为构建实时数据仓库提供底层技术支撑。
课程安排:
1、Flink CDC 简介
2、Flink CDC生态概览
3、Flink CDC版本和Flink版本对应关系
4、MySQL CDC介绍
5、MySQL服务器基础环境配置要求
6、MySQL CDC快速上手使用
7、MySQL CDC之基于DataStream API实现数据采集和处理
8、MySQL CDC之基于Flink SQL实现数据采集和处理
9、MySQL CDC自定义反序列化类
10、MySQL CDC支持的高级特性
11、高级特性之启动模式(数据读取策略)原理及案例实战
12、高级特性之DataStream Source原理及案例实战
13、高级特性之全增量一体化原理及案例实战
14、高级特性之增量快照数据读取算法原理及案例实战
15、高级特性之Exactly-Once 语义原理及案例实战
16、高级特性之动态加表原理及案例实战
17、高级特性之分库分表原理及案例实战
18、高级特性之元数据列原理及案例实战
19、MySQL CDC使用中可能遇到的问题
20、MySQL和Flink SQL数据类型映射关系
【本周思考与讨论】
1、Flink CDC 2.x版本如何采集数据库中没有主键的表?
2、Flink CDC是否可以取代Sqoop这种采集工具?
第31周 直播平台三度关系推荐V1.0
构建直播平台用户三度关系推荐系统,详细分析数据采集/数据分发/数据存储/数据计算/数据展现等功能,完整复现互联网企业大数据项目从0~1,从1~N的开发过程。
课程安排:
1、项目介绍
2、项目需求分析
3、技术选型
4、整体架构设计
5、Neo4j快速上手使用
6、数据采集架构详细分析
7、数据来源分析
8、模拟产生数据
9、数据采集聚合
10、数据分发
11、数据落盘
12、数据计算核心指标详细分析与实现
13、三度关系推荐页面数据接入
14、三度关系推荐流程演示
15、项目代码双语支持
16、项目总结
【本周思考与讨论】
1、如果让你来设计这个项目的架构,你会如何设计?
2、如何使用SparkStreaming解决实时粉丝关注数据乱序的问题?不能借助于第三方工具。
3、如何使用Spark代码实现三度关系列表数据导出MySQL?目前课程中使用的是Sqoop实现的
第32周 直播平台三度关系推荐V2.0
分析V1.0架构存在的问题及弊端,重新设计整体架构方案,进行迭代优化,基于最新的架构方案重新实现核心功能代码,开发数据接口,优化数据传输逻辑,提高数据安全性。
课程安排:
1、现有V1.0技术架构分析
2、V2.0技术架构设计
3、数据计算核心指标详细分析
4、历史粉丝关注数据初始化
5、实时维护粉丝关注数据
6、每天定时更新主播等级
7、每天定时更新用户活跃时间
8、每周一计算最近一月主播视频评级
9、每周一计算最近一月主播视频评级
10、三度关系列表数据导出到Redis
11、数据接口定义与开发
12、项目代码双语支持
13、项目总结
【本周思考与讨论】
1、如果是你,你会如何优化此项目的架构?
2、如何使用Flink代码实现三度关系列表数据导出到Redis?目前课程中使用的是Sqoop实现的
3、针对目前Neo4j中的数据,还有哪些属性需要建立索引?
第33周 数据中台大屏
掌握一线互联网企业数据中台构建流程,了解巨头企业的项目架构,理解巨型项目的思想,掌握数据中台之数据加工总线子系统的底层实现。
课程安排:
1、什么是中台
2、中台化主要解决的问题
3、中台的延伸
4、什么是数据中台
5、数据中台演进的四个阶段
6、数据中台需要具备三大能力
7、企业级数据中台架构分析
9、目前大数据领域实时计算的现状
10、数据中台之数据加工总线介绍
11、数据加工总线架构图分析
12、开发数据加工总线计算引擎(基于SparkSQL)
13、开发数据加工总线计算引擎(基于FlinkSQL)
14、掌握如何在流式SQL中调用HTTP接口
15、支持流式SQL中的自定义函数返回多列字段
【本周思考与讨论】
1、谈一谈你对数据中台的理解?
2、课程中提供了基于Spark的通用实时计算引擎,如果想要开发基于SparkSQL+Spark Core的通用离线计算引擎的话,该如何实现?
3、课程中提供了基于Flink的通用实时计算引擎,如果想要开发基于FlinkSQL的通用离线计算引擎的话,该如何实现?