火山引擎DataLeap数据质量解决方案和最佳实践(二):解决方案

news2024/12/28 5:19:48

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群

DataLeap流批数据质量解决方案

产品功能架构

火山引擎DataLeap流批数据质量解决方案有 4 个大的功能:

  • 离线数据质量监控:解决批和微批监控场景,支持 Hive、ClickHouse、ES 等多种数据源,并有字段、唯一性等多种监控维度,允许通过 SQL 自定义维度聚合进行监控。

  • 流式数据质量监控:解决流式监控场景,支持 Kafka/BMQ 等数据源。

  • 数据探查:解决数据开发之前对数据内容存疑问题,支持 Hive 数据源。

  • 数据对比:解决新旧表数据一致性问题,支持 Hive/Hive SQL 数据源。

 

系统架构

 

上图是DataLeap数据质量平台的系统架构图,主要分为 5 个部分:

  • Scheduler:外部调度器,触发离线监控。主要分两种类型:

    • 对外提供 API 调用任务;

    • 定时调度,通过 calljob 调用数据。

  • Backend:后端服务,偏服务层,处理业务逻辑。主要负责:

    • 质量平台和外部的交互,所有 API 响应都是通过这一层进行;

    • 任务提交:用户在质量平台配置的规则会放到业务存储,Scheduler 被调用后,Backend 会将任务相关的参数配置进行任务提交;

    • 获取质量监控的结果并进行判断,然后和外部系统进行交互,在需要时发送警报通知用户。

  • Executor:平台核心的任务执行模块,集成了一些引擎,例如数据探查使用 OLAP 引擎。质量监控部分使用 Griffin 的 Measure 进行数据统计。

  • Monitor:是一个相对独立的模块,主要进行状态服务的流转,提供重复报警等功能。

  • Alert Center:质量平台强依赖于该平台。它是外部报警服务,接收各种报警事件。

离线数据检测流程

下面看一下离线数据的检测流程。

 

离线数据的监控、探查、对比的执行流程一致,主要分为 4 步:

  1. 监控触发:调度系统调用质量模块 Backend API;

  2. 作业提交:Backend 以 Cluster 模式提交 Spark 作业至 Yarn;

  3. 结果回传:作业结束 (成功、失败),Driver 将结果 sync 至 Backend;

  4. 消息触发:Backend 根据结果触发相应动作 (例如:报警、消息提示)。

我们总结了一下Dataleap数据质量平台的优势:

  • 调度系统低耦合:数据质量平台没有和调度系统强绑定,一般可以用业务系统的 API 实现互相调用。

  • 事件触发高效,Backend 水平扩展能力强:Backend 是无状态的实例服务,如果质量监控的业务系统较多,Backend 可以采用水平扩展的方式部署,接收请求并提交作业。

  • 没有 Quota 限制:平台本身没有维护数据质量监控单独需要的资源队列,而是把这个权限开放给用户,用他们自身的资源做资源监控。这样就把 Quota 问题转换成了用户资源问题。

当然任何一个工具都不可能是完美的,数据质量平台暂时还有一些待提升的地方:

  • 非 CPU 密集型查询较重:整个平台的设计是以任务提交的方式完成离线场景的需求。但是后来我们发现其实不需要启动 Spark 的作业仍然会启动一个 Spark 作业,如 ES SQL 查询,这个查询是很重的。

  • 依赖 Yarn 做调度稳定性不高:平台上的任务在资源不充足或被挤占的情况下,会出现任务运行或调用很慢。

流式监控执行

对于流式数据的监控,我们选择了 Flink 引擎,因为流式数据不同于离线数据,不能用快照的方式低成本拿到过程。所以我们要依赖一些外部的时序数据库再加规则引擎来展示对数据的监控。

 

平台上流式数据监控的流程为:

  1. 根据规则定义,创建 Flink 作业;

  2. 根据报警条件,注册 Bosun 报警事件;

  3. Flink 作业消费 Kafka 数据,计算监控指标写 Metrics;

  4. Bosun 基于 Metrics 的时序数据,定时检测,触发报警;

  5. Backend 接收报警回调,处理报警发送逻辑。

下面着重介绍两个模块的实现。

Executor 实现

 

Executor 是基于 Apache Griffin 的 Measure 模块改造的一个 Spark Application。功能包括:

  • 适配数据源

  • 数据转化为 DataFrame

  • 规则转化为 SQL 操作

  • 计算结果

Executor 的选型有以下几方面的考虑:

  • 扩展性要足够强,能够适配不同的数据源,如 Hive,MySQL 等等

  • 计算性能要较强

  • 支持的监控类型种类需要足够多

考虑到以上方面的信息,我们选用了 Apache Griffin 的 Measure 模块作为 Executor。它基于 Spark 开发,能够适配不同的数据源,并且对于 DSL 做了一系列拓展。基于平台的设计,我们需要和 Backend 进行较多的互动,并把数据进行回传。其实 Griffin Measure 本身就支持了一些基本的数据质量监控,比如重复值检测、自定义 SQL 等等,这里重点说明一下我们对 Measure 模块的改造:

  • 改造数据源、Sink 使其能够通过 HTTP 访问远程 API;

  • 部分功能增强、修改,例如:支持正则表达式;

  • 流式监控从 Spark Engine 切换为 Flink Engine,优化整体流式监控方案。Measure 本身是 Spark 生态的一部分,只能用 Spark Engine 做理线或者用微批模拟流式做监控。字节跳动内部本身有一定的 Flink 的能力,并且 Flink 对流式数据的处理能力比微批要好很多,所以我们就进行了这样的改造。

Monitor 实现

Monitor 模块主要是为了实现失败报警重试和重复报警功能,根据事件类型触发相应事件(重复报警、失败重试等)。因为业务数据全部存储在 MySQL,平台之前的 Monitor 重复报警做的也比较简单,即直接通过轮询的方式从 MySQL 中轮询拉起已报警实例,然后通过重复提交的方式进行报警。

点击跳转大数据研发治理套件 DataLeap了解更多 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot 中的 CD 工具

Spring Boot 中的 CD 工具 在现代软件开发中,持续交付(Continuous Delivery,简称 CD)已经成为了一个非常重要的开发模式。CD 工具可以帮助我们自动化构建、测试、部署和发布软件,提高软件交付的速度和质量。在 Spring…

接口增量改动,研发经常忘通知测试,如何解决?

不知道大家有没有同感,做接口测试麻烦的不是测试本身,而是接口它会变,更麻烦的不是接口变了,而是它变了而你不知道。等到你测完,开发才悠悠跟你说 ——“那个接口我改了点东西,你再看一眼哈”。 我那是看一…

el-menu嵌套路由高亮

1、配置路由 2、一级导航页面配置 计算属性定义方法 3、二级导航页面

mysql知识点总结

MySQL的binlog有有几种录入格式?分别有什么区别? 有三种格式,statement,row和mixed. statement模式下,记录单元为语句.即每一个sql造成的影响会记录.由于sql的执行是有上下文的,因此在保存的时候需要保存相关的信息,同时还有一些使用了函数之类的语句无法被记录复制. row级别…

环境变量编程

问题 main 函数 (默认进程入口) int main(int argc, char* argv[], char* env[]) argc - 命令行参数个数argv[] - 命令行参数数组env[] - 环境变量数组 (最后一个元素为 NULL) 什么是环境变量? 环境变量是进程运行过程中可能用到的 "键值对" (NAME VA…

使用Bert,ERNIE,进行中文文本分类

GitHub - 649453932/Bert-Chinese-Text-Classification-Pytorch: 使用Bert,ERNIE,进行中文文本分类使用Bert,ERNIE,进行中文文本分类. Contribute to 649453932/Bert-Chinese-Text-Classification-Pytorch development by creatin…

centos通过源文件的方式安装node-red

centos通过源文件的方式安装node-red 一、下载源文件1.1 查看系统信息1.2 下载 二、安装配置2.1 安装nodejs2.2 安装node-red 三、pm2管理node-red进程3.1 pm23.2 node-red设置开机自启动 四、更多 [回到目录] 一、下载源文件 1.1 查看系统信息 查看你的Linux系统是32位还是6…

三、1如何运用设计原则之SOLID原则写出高质量代码?

你好我是程序员雪球。接下来我们学习一些经典的设计原则。其中包括SOLID,KISS,YAGNI,DRY,LOD等。其实这些设计原则从字面意思理解并不难。但是“看懂”和“会用”是两回事,而“用好”就难上加难了。 先来了解SOLID原则…

EMC学习笔记(十三)背板的EMC设计

背板的EMC设计 1.背板槽位的排列1.1 单板信号的互联要求1.2 单板板位结构1.2.1 板位结构影响1.2.2 板间互联电平、驱动器件的选择 2.背板的EMC设计2.1 接插件的信号排布与EMC设计2.1.1 接插件的选型2.1.2 接插件模型与针信号排布 2.2 阻抗匹配2.3 电源、地分配 1.背板槽位的排列…

深度学习的技术原理

目录 人工智能 深度学习的应用场景 神经网络 卷积神经网络(CNN) 一个神经网络运行的可视化展示 人工智能 信息技术是人类历史上的第三次工业革命, 计算机、 互联网、智能家居等技术的普及极大地方便了人们的日常生活。 通过编程的方式&…

xshell安装jdk1.8环境

xshell安装jdk1.8环境 大家好,今天我们来学习一下xshell安装jdk1.8环境,好好看,好好学,超详细的 第一步 进入xshell官网下载 第二步 打开xshell新建一个会话,如下图: 第三步 输入你的名称、主机ip、端口号(…

Nginx负载均衡与动静分离

一、Nginx负载均衡: 1.概述: Nginx是一款http服务器软件,支持高达50000个并发连接数的响应。 (1)拥有强大的处理静态资源的能力。 (2)运行稳定。 (3)CPU&#xff0c…

nginx+tomcat负载均衡和动静分离

目录 1.部署nginx 2.部署两台tomcat 3.配置nginx 1.部署nginx vim /vim/lib/systemd/system/nginx.service 2.部署两台tomcat 进入第一台装第一个tomcat vim /etc/profile vim /usr/local/tomcat/webapps/test/index.jsp 重启 进入第二台安装第二台tomcat vim /usr/local/tom…

【电路原理学习笔记】第2章:电压、电流和电阻:2.1 原子结构

第2章:电压、电流和电阻 2.1 原子结构 元素:不能用化学方法分解成更简单形式的物质称为元素。原子:原子是体现元素特性的最小粒子。原子核:原子核由质子和中子组成,质子带有正电荷,中子呈中性。电子带有负…

原型模式的学习与使用

1、原型模式的学习 当我们需要创建一个对象,并且该对象的创建过程比较复杂或者耗时时,可以使用原型模式。原型模式通过复制现有对象的属性来创建新的对象,而不是从头开始创建。   在原型模式中,我们定义一个原型接口或抽象类&am…

CMU 15-445 -- Buffer Pool - 03

CMU 15-445 -- Buffer Pool - 03 引言Buffer PoolsBuffer Pool ManagerLock 和 Latch 的区别PAGE TABLE 和 PAGE DIRECTORYMultiple Buffer PoolsPrefetchingScan SharingBuffer Pool BypassOS Page Cache Buffer Replacement PoliciesLRUClockLRU 与 Clock 的问题LRU-KLocaliz…

如何优雅的将 Docker 镜像从 1.43G 瘦身到 22.4MB

Docker 镜像的大小对于系统的 CI/CD 等都有影响,尤其是云部署场景。我们在生产实践中都会做瘦身的操作,尽最大的可能使用 Size 小的镜像完成功能。下文是一个简单的 ReactJS 程序上线的瘦身体验,希望可以帮助大家找到镜像瘦身的方向和灵感。 …

Helm之深入浅出Kubernetes包管理工具使用

Chart 使用 作者:行癫(盗版必究) 一:Chart 模板使用 1.创建chart ​ templates目录包括了模板文件;当Helm评估chart时,会通过模板渲染引擎将所有文件发送到templates目录中;然后收集模板的结果并发送给Kubernetes ​ values.yaml 文件也导入到了模板;这个文件包含了c…

北京大学2016计算机学科夏令营上机考试

目录 A:分段函数【水题】 B:单词翻转【暴力不水】 C:反反复复【字符串】 D:文件结构“图”【图】 E:Exchange Rates【这不是我能做的】 F:Dungeon Master【没看懂题目什么意思】 G:重建二叉树【树】 A:分段函数【水题】 #include<iostream> using namespace std;…

如何自学入门网络安全/黑客?【建议收藏】

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…