# gmall-flink-2021
**Repository Path**: tangsixiang/gmall-flink-2021
## Basic Information
- **Project Name**: gmall-flink-2021
- **Description**: Flink实时数仓项目
- **Primary Language**: Java
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 4
- **Created**: 2022-08-18
- **Last Updated**: 2022-08-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 项目顺序
## 1. 项目准备工作
1.1 伪分布式hadoop集群、hbase集群、zookeeper集群、kafka集群、nginx、MySQL数据库
| hostname| IP|
|---|---|
| hadoop200| 192.168.80.200 |
| hadoop201| 192.168.80.201 |
| hadoop202| 192.168.80.202 |
| hadoop203| 192.168.80.203 |
hadoop版本:3.1.3
hbase版本: 2.4
kafka版本: 3.0.0
1.2 在00_dbSQL文件夹中,找到对应的建表语句,在MySQL数据库中建表
## 2. gmall-mock
一共包含3个子项目,是模拟数据源的生成项目
### 2.1 gmall-mock-common
通用工具类
### 2.2 gmall-mock-db
用来随机生成业务数据
修改application.properties配置文件夹中的数据库配置。
运行GmallMockDbApplication生成业务数据。

### 2.3 gmall-mock-log
用来随机生成行为日志数据,存档日志,并发送到指定端口
如果发送到nginx,修改配置文件
如果发送到springboot程序,需要修改对应的端口。

**注意: 运行该程序前,需要先打包gmall-logger-kafka项目上传到服务器,并运行起来。**
## 2. nginx配置
用来接收mock的数据,实现负载,分流到gmall-logger-kafka项目

## 3. gmall-logger-kafka
根据实际情况配置多个节点,将nginx转发的消息发送到kafka节点
(kafka的生产者)
## 4. gmall-flink-cdc (练习CDC)
监控业务数据库MySQL的binlog日志,将业务数据实时写入到Kafka
(alibaba版本的flinkCDC)
```xml
com.alibaba.ververica
flink-connector-mysql-cdc
1.3.0
```
## 4. gmall-flink-cdc-ververica (练习CDC)
同上面4,只是版本用的是ververica,两个只需要选择一个使用即可。
```xml
com.ververica
flink-connector-mysql-cdc
2.1.1
```
## 5. gmall-phoenix
验证测试phoenix程序,测试用,可忽略。
## 6. gmall-realtime (实时数仓)
### 6.1 ods层
***com.king.app.ods.FlinkCDC***
监控业务数据库gmall-210325-flink的变化,发送到kafka的TOPIC:ods_base_db
### 6.2 dwd层
***com.king.app.dwd.BaseDBApp***
开发稍微复杂点,使用flinkCDC监控配置表table-process。
消费Kafka的TOPIC:ods_base_db,通过维度表table-process来做分流的判断:
如果sinkType是Hbase,则写入Phoenix,作为Dim层
如果sinkType是Kafka,则写入Kafka,作为dwm层
自动化写入Phoenix中的表:

自动化写入Kafka中的Topic:

### 6.3 dwm层
***com.king.app.dwm.OrderWideApp***
**知识点:双流Join**
通过消费dw_order_info和dwd_order_detail,然后双流join,
并且从phoenix中关联对应的维度表信息,完成订单的大宽表。
## 7. 其他
flinkcdc读取MySQL,并写入kafka:
https://www.cnblogs.com/30go/p/15824833.html
https://www.cnblogs.com/30go/p/15773357.html
mysql权限问题
https://www.cnblogs.com/30go/p/15808632.html
fllink大厂视频
https://www.cnblogs.com/30go/p/15857910.html
scala中JSON字符串转Class对象的问题
https://www.cnblogs.com/30go/p/15890329.html
双流join的测试案例
https://www.cnblogs.com/30go/p/15886547.html
状态的超时设置案例
https://www.cnblogs.com/30go/p/15868563.html