实时数仓-需求及架构设计—详

1序

1.1目标

1.2数仓概念

2项目需求及架构设计

2.1项目需求分析

项目需求:

1.业务数据传输通道搭建

2.数据仓库维度建模

3.任务调度

4.数据可视化

结合需求思考:

1.项目技术如何选型?

考虑因素:数据量大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算

数据采集传输:Kafka + Flink-CDC

数据存储:MySQL + HDFS + HBase

数据计算:Flink

数据查询:ClickHouse

可视化:Sugar

2.框架版本如何选型

EMR(EMR 提供了自动化的集群管理、调度和监控功能,用户无需关心底层的集群维护,只需专注于数据处理和分析任务。腾讯云 EMR 更类似于一种托管式的大数据服务,而不是传统意义上的云主机服务。)、Apache

3.服务器使用物理机还是云主机
4.如何确认集群规模

2.2项目框架

系统数据流程设计

框架版本选型

腾讯云EMR具体版本型号

服务器选型

集群规模

集群资源规划设计

3电商业务

同离线

4腾讯EMR选购

4.2购买-弹性MapReduce

4.2.1 软件配置

按量计费

4.2.2新建私有网络

4.2.3创建安全组

购买后查看集群创建相关信息

4.2.7节点管理

只有Master节点有公网IP,所以只允许连接Master节点

打开远程连接工具配置,此处以SecureCRT为例

新建一个session,填写hostname,主机填Master节点公网IP

4.3服务器环境准备

4.3.1配置主机名称

        所有jar包必须先上传至Master节点后再拷贝到core节点,每次登录集群时也都是先登录到Master节点

4.3.2修改服务器hosts文件

IP填写的是私有IP,每人不一样,做完后ping一下

4.2.3配置SSH无密登录(可选)

原理

5电商业务数据

分表及用MySQL完成模拟数据生生成同离线

6业务数据采集模块

6.1业务数据环境准备

6.1.1Kafka部署

1)将Kafka安装包上传到master节点

2)将Kafka安装包从master节点拷贝到core节点

3)进入core节点,解压安装包

4)在/opt/module/kafka_2.12-3.0.0目录下创建data文件夹

5)修改配置文件

注:ZooKeeper集群地址在腾讯云EMR可以查看

6)配置环境变量

7)分发kafka根目录到其他core节点

        1)编写xsync分发脚本

        2)vim以下内容

        3)分发kafka:要在其他机器配置环境变量

8)分别在其他core节点上修改配置文件

注:broker.id不能重复

9)启动集群

10)关闭集群

11)kafka群起脚本

在/use/local/bin目录vimkk.sh

6.2业务数据同步概述

6.2.1数据同步策略概述

实时数仓只需要增量同,就是每天只将业务数据中的新增及变化数据同步到数据仓库

6.2.3数据同步工具部署

1)简介

        CDC是ChangeDataCapture(变更数据获取)的简称,核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入、更新以及删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中共其他服务进行订阅及消费

        Flink社区开发了flink-cdc-connectors组件,这是一个可以直接从MySQL、PostgreSQL等数据库直接读取全量数据和增量变更数据的source组件,目前也已开源。

2)输出数据格式

        注:FlinkCDC输出的json字段说明:

3)开启bin-log

Flink-CDC同步MySQL数据是通过binlog实现的,MySQL服务的binlog默认是关闭的,需要在配置文件中开启。

        1打开MySQL的配置文件my.cnf

        2增加如下配置

其中binlog_format参数配置的是MySQL的binlog类型,共有如下3种可选配置。

        1 statement:基于语句。binlog会记录所有会修改数据的SQL语句,包括INSERT、UPDATE、DELETE等。

        优点:节省空间        

        缺点:可能会造成数据不一致,例如insert中包含now(),写入binlog和读取binlog时函数所得值不同

        2 row:基于行,binlog会记录每次写操作后,被操作行记录的变化

        优点:保持数据的绝对一致性

        缺点:占用空间较大

        3 mixed:混合模式,默认是statement,如果SQL语句可能导致数据不一致,就自动换成row

3 重启mysql生效

6.3 业务数据同步

6.3.1 Flink安装

1)将flink安装包上传至hadoop101的/opt/software目录

2)解压至/opt/module

6.3.2 FlinkCDC配置

我们要同步gmall数据库下的所有表,发送到kafka的topic_db主题

1)环境搭建

         在工程中新建模块 gmall-flink-cdc

        创建如下包结构

作用:

        修改配置文件,在pom.xml添加配置

        在resource目录创建log4.properties配置文件

2)代码实现
        1 KafkaUtil工具类

2 创建时间戳处理工具类

3 查询 HDFS URI

4 FlinkCDC采集数据示例

5 编写主程序,监控MySQL变化数据并将数据写入Kafka

3)打包部署

        1 将pom文件中服务器已有依赖的scope修改为provided

文件中修改举例对比:

修改 Maven 项目中已有依赖的 scope 为 provided 的作用主要有两个方面:

  1. 减少打包体积:将某些依赖的 scope 修改为 provided 可以减少最终打包的 WAR 文件或者 JAR 文件的体积。这些依赖项不会被打包到应用程序中,而是由容器(如 Tomcat、Jetty 等)在运行时提供,因此可以减少部署的时间和网络传输的成本。

  2. 避免冲突和版本不一致性:一些依赖项可能会与容器本身提供的库存在冲突,或者与其他依赖项版本不兼容。将这些依赖的 scope 设置为 provided 可以避免这些冲突和版本不一致性的问题,因为容器会使用自己提供的版本而不是应用程序中的版本。

总的来说,将一些依赖的 scope 修改为 provided 可以提高应用程序的部署效率、减少依赖冲突和版本不一致性的风险。

        2 打包

点击Maven Lifecycle中的clean清除历史编译文件和jar包,再点击package打包

        3 查看打包结果

        4 上传带有依赖的jar包

        5 提交job

        6 编写FlinkCDC启停脚本 flink-cdc.sh

4)通道测试

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值