【数据中台建设系列之二】数据中台-数据采集

​ 【数据中台建设系列之二】数据中台-数据采集

上篇文章介绍了数据中台的元数据管理,相信大家对元数据模块的设计和开发有了一定的了解,本编文章将介绍数据中台另一个重要的模块—数据采集。

一、什么是数据采集

数据采集简单来说就是从各种数据源中抓取、捕获和传输数据的一个过程。数据采集的质量和效率直接影响到数据的可用性和及时性,进而影响到组织的决策制定和业务运营,因此数据采集是数据中台建设的关键一环,也是数据中台建设不可或缺的一部分。

二、数据采集的基本架构设计

在讨论数据采集模块的架构设计时,我们需要清楚的了解公司的具体业务场景有哪些,数据来源有哪些,对数据的时效性要求有哪些。基于此,构建出来的数据采集架构才能符合每个公司降本增效的目标,毕竟数据采集是数据中台建设中资源开销很大的一块。因此,下图数据采集架构设计是基于本公司的实际生产场景来给大家展现的,供大家参考。
在这里插入图片描述
整体数据采集架构有点类Lambda架构,没有把离线和实时同步放在一起,而是单独来处理的。数据主要分为日志数据,埋点数据,业务数据库数据等,我们的数仓采用的是Apache Doris构建的实时数仓。

  • 针对日志数据,采用Flume的方式将数据Sink到Kafka
  • 针对埋点和一些其他业务数据,是直接让业务将数据写入到Kafka中;
  • 针对业务数据库增量数据,采用的是CanalFlinkCDC将数据写入到Kafka中;
  • 对于同步离线数据库数据,采用的利用DolphineSchedule里面的Datax来直接抽取,然后写入到Doris中;
  • 所有实时数据写入到Kafka以后,通过Flink-ETL来处理数据,最后再采用DorisStreamLoad将数据写入到Doris中;

看到这问题很多的小明可能会有疑问:

  • 为什么用把FlinkCDC采集到的数据写入Kafka中?

其实这样做的目的就是通过Kafka做一层缓冲,Flink消费Kafka中的数据,利用滚动窗口定期攒批,通过StreamLoad将数据写入Doris中。了解Doris的同学可能会知道这是因为Doris数据存储格式类似于LSM Tree结构,如果数据写入过于频繁,可能会引起文件频繁合并,导致机器CPU消耗过高,而通过攒批的方式,可以减少数据导入次数,增大导入条数,对Doris的稳定性有很大的提升。

看到这相信你对这个技术架构已经有了了解了,那整体的功能改怎么设计呢?请继续往下看。

三、基本设计流程

我们既然要设计数据采集模块,那终极目标肯定就是实现零代码入仓。下面就是一个零代码入仓功能设计方案:
在这里插入图片描述

  • 首先需要创建数据源,这个数据源在元数据管理模块创建,创建完成后,需要手动同步元数据,将元数据中的库表和字段信息全部同步到数据中台侧;

  • 新建接入任务时,首先选择数据源,数据库和数据表,选择完整之后再次选择目标数据源,目标数据库和目标数据表;

  • 当把源和目标都选择以后,点击表字段映射,字段会通过字段名相等的关系进行映射,如果源字段名和目标表字段名一致,且目标字段的字段长度大于源字段长度时,则会映射成功;如果源字段名和目标字段名不一致,则需要手动指定映射关系。如下图所示,一键映射后,只有dish_name自动映射成功,其他字段由于字段名不一致,无法成功映射;
    在这里插入图片描述

  • 字段映射完成以后,需要补充一点基本信息,比如子任务的任务名,注释信息,子任务的的Flink的窗口大小,窗口最大条数等,同时可以启动动态清洗功能,需要编辑动态清洗脚本,如下图所示:
    在这里插入图片描述

  • 子任务配置完成以后,可以创建一个组任务,将子任务添加到组任务下面,同时配置组任务中Flink的jobmanager和taskmanager的内存大小。合并任务的目的也是为了提高资源利用率,如下图所示:
    在这里插入图片描述

  • 当组任务创建成功以后,就可以提交任务了,我们采用的是FlinkYarn application模式,所有Flink相关的jar包和依赖都放在了HDFS上,当提交任务时,在页面的所有配置信息会生成一个JSON文件,发送给Flink的jar包,FlinkYarn集群上启动一个任务,开始实时同步任务;

当任务停止后重启时,提供了"根据指定时间启动"和"从上次停止位置启动"两种方式:

在这里插入图片描述

  • 根据指定时间启动

选择指定时间后,你需要选择一个时间戳,Flink任务将会按照你选定的时间点重新消费Kafka中的数据,这主要是依赖于Flink Source 消费Kafka时,可以指定时间戳的功能来实现的;

  • 从上次停止位置启动

该功能依赖于Flink的 savepoint实现。当你上次停止任务时,通过yarncClient接口,获取到Flink任务的一个savepoint地址,下次再重新启动时,将savepoint地址传给Flink任务,Flink会自动从savepoint位置开始重新消费;

四、总结:

本篇文章主要介绍了数据采集功能的架构设计和功能设计,其实在实际开发过程中,远远比当前文档描述的要复杂的多,但大致思路就是这样,希望能够给大家提供一点灵感和思路。

功能的架构设计和功能设计,其实在实际开发过程中,远远比当前文档描述的要复杂的多,但大致思路就是这样,希望能够给大家提供一点灵感和思路。

最后,有兴趣的朋友,欢迎私信交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/106206.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

暄桐推荐|学书法的必读书目

在暄桐教室,写字之外,读书、静坐也是桐学们修习的功课。今天,便向你推荐,关于学习书法,暄桐教室的那些必读书目:    暄桐推荐学书法必读书之初阶书目:      对零基础的小白同学或刚入门…

FL Studio21最新中文汉化解锁版,2024怎么激活FL Studio

FL Studio2024最新中文汉化解锁版是一款功能强大的数字音频工作站(DAW),它广泛应用于音乐创作和音乐制作领域。在使用FL Studio时,购买正版软件是否有必要呢?本文将详细探讨FL Studio的功能特点以及正版软件的重要性。…

防雷接地检测方法应用方案

防雷接地是指为了保护建筑物、设备和人员免受雷电危害而采取的将雷电电流导入地面的措施。 地凯科技防雷接地的测试方案一般包括以下几个方面: 测试目的:明确测试的对象、范围、要求和依据。 测试内容:根据不同类型的防雷接地装置&#xf…

【OpenCV实现图像的几何变换】

文章目录 概要:OpenCV实现图像的几何变换、图像阈值和平滑图像变换小结 概要:OpenCV实现图像的几何变换、图像阈值和平滑图像 使用OpenCV库进行图像处理的三个重要主题:几何变换、图像阈值处理以及图像平滑。在几何变换部分,详细…

threejs(4)-纹理材质高级操作

一、纹理重复_缩放_旋转_位移操作 // 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; // 导入lil.gui import { GUI } from "three/examples/jsm/l…

JavaScript进阶 第四天笔记——深浅拷贝、this绑定、防抖节流

JavaScript 进阶 - 第4天 深浅拷贝 浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝:拷贝的是地址 常见方法: 拷贝对象:Object.assgin() / 展开运算符 {…obj} 拷贝对象拷贝数组:Array.prototype.concat() 或者 […arr] 如…

软考系统架构师知识点集锦四:信息安全技术基础知识

一、考情分析 二、考点精讲 2.1信息加解密技术 2.1.1对称加密 概念:对称加密(又称为私人密钥加密/共享密钥加密) : 加密与解密使用同一密钥。特点:加密强度不高,但效率高;密钥分发困难。 (大量明文为了保证加密效率一般使用对称加密) 常见对称密钥加密算法:DES:…

Spring MVC 执行流程

前言 Spring MVC 是一个非常强大的框架,它能够帮助开发人员快速构建高效的 Web 应用程序。然而,要理解 Spring MVC 的执行流程并不容易,因为它涉及到多个组件和模块。在本文中,我们将介绍 Spring MVC 的执行流程,帮助…

【数据结构】数组和字符串(七):特殊矩阵的压缩存储:三元组表的转置、加法、乘法操作

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表4.2.3三元组表的转置、加法、乘法、操作转置加法乘法算法测试实验结果代码整合 4.2.1 矩阵的数组表示 【数据结构】数组和字符串…

nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS

1.nginx控制浏览器缓存是针对于静态资源[js,css,图片等] 1.1 expires指令 location /static {alias/home/imooc;#设置浏览器缓存10s过期expires 10s;#设置浏览器缓存时间晚上22:30分过期expires @22h30m;#设置浏览器缓存1小时候过期expires -1h;#设置浏览器不缓存expires …

python+requests接口自动化测试框架

1、首先,我们先来理一下思路。 正常的接口测试流程是什么? 脑海里的反应是不是这样的: 确定测试接口的工具 —> 配置需要的接口参数 —> 进行测试 —> 检查测试结果(有的需要数据库辅助) —> 生成测试报…

新版yolov8添加注意力机制(以NAMAttention注意力机制为例)

1.引言 之前写过yolov8如何添加注意力机制,可以看此贴 【YOLOv8添加注意力机制(ShuffleAttention为例)】 但是最近yolov8的代码结构有了一些改动,因此,这里使用较新的代码重新写一篇 此外,不同的注意力机制添加方法基本相同&am…

SpringCloud Alibaba【一】简单介绍

SpringCloud学习笔记 SpringCloud-Alibaba Nacos学习笔记 SpringCloud-Alibaba Gateway学习笔记 其他组件的内容,会随着工作需要补充上去。 目录 SpringCloudSpringCloud Alibaba二者对比 SpringCloud 提起微服务,不得不提 Spring Cloud 全家桶系列&…

『第七章』翩翩起舞的雨燕:顺序与并发执行

在本篇博文中,您将学到如下内容: 1. 顺序执行2. 主线程 Main Thread 的秘密3. 并发执行:GCD 与分发队列(DispatchQueue)4. 延时执行5. 数据竞争(Data Race)6. 线程间的同步7. 避免线程爆炸8. RunLoop 与定时器总结楚客自相送,沾裳春水边。 晚来风信好,并发上江船。 花映…

无法查看 spring-boot-starter-parent的pom.xml

1. idea版本:2022.3 2. 使用Spring Initializr创建一个简单的spring-boot项目,发现无法查看 spring-boot-starter-parent的pom.xml ctrl鼠标左键 和 ctrl B 都无法进入 3. 解决:清除缓存重启(🤧😰&#…

一文解决:Swagger API 未授权访问漏洞问题

Swagger 是一个用于设计、构建、文档化和使用 RESTful 风格的 Web 服务的开源软件框架。它通过提供一个交互式文档页面,让开发者可以更方便地查看和测试 API 接口。然而,在一些情况下,未经授权的访问可能会导致安全漏洞。本文将介绍如何解决 …

机器学习——正则化

正则化 在机器学习学习中往往不知道需要不知道选取的特征个数,假如特征个数选取过少,容易造成欠拟合,特征个数选取过多,则容易造成过拟合。由此为了保证模型能够很好的拟合样本,同时为了不要出现过拟合现象&#xff0…

react-组件间的通讯

一、父传子 父组件在使用子组件时&#xff0c;提供要传递的数据子组件通过props接收数据 class Parent extends React.Component {render() {return (<div><div>我是父组件</div><Child name"张" age{16} /></div>)} }const Child …

设计模式(12)状态模式

参考【设计模式】用Java实现状态模式_java 状态模式_卷帘的博客-CSDN博客 一、介绍&#xff1a; 1、状态模式&#xff1a;是一种行为设计模式&#xff0c;它允许对象在内部状态发生改变时改变其行为。该模式将对象的行为包装在不同的状态类中&#xff0c;使得对象的行为可以根…

RabbitMQ-死信交换机和死信队列

1. 简介 DLX: Dead-Letter-Exchange 死信交换器&#xff0c;死信邮箱 2.代码示例 Configuration public class RabbitConfig {final static String exchangeNormalName "exchange.dlx.normal";final static String queueNormalName "queue.dlx.normal"…