数据治理核心保障数据质量监控开源项目Apache Griffin分享

news2024/11/25 3:41:30

文章目录

  • 概述
    • 定义
    • 为何要做数据质量监控
    • 基本概念
    • 特性
    • 架构
  • 安装
    • Docker部署
    • Docker 镜像批处理使用
    • Docker 镜像流处理使用
    • UI界面操作

概述

定义

Apache Griffin 官网地址 https://griffin.apache.org/ 源码release最新版本0.6.0

Apache Griffin 官网文档地址 https://griffin.apache.org/docs/quickstart.html

Apache Griffin 源码地址 https://github.com/apache/griffin

Apache Griffin是一个开源的大数据数据质量解决方案,它支持批处理和流模式两种数据质量检测方式,可以从不同维度(比如离线任务执行完毕后检查源端和目标端的数据数量是否一致、源表的数据空值数量等)度量数据资产,从而提升数据的准确度、可信度。

Apache Griffin提供了一套定义良好的数据质量领域模型,涵盖了一般情况下的大多数数据质量问题。它还定义了一组数据质量DSL来帮助用户定义他们的质量标准。通过扩展DSL甚至可以在Apache Griffin中实现自定义的特定特性/功能。

数据质量(DQ)是物联网、机器学习等许多数据消费者的关键标准,但如何确定“好”数据没有标准协议。Apache Griffin是一个模型驱动的数据质量服务平台,可以在其中按需检查数据。它提供了一个标准流程来定义数据质量度量、执行和报告,允许跨多个数据系统进行这些检查;当不信任自己的数据或者担心数据会对关键决策产生负面影响时则可以使用Apache Griffin来确保数据质量。

Apache Griffin支持两种类型的数据源:

  • batch数据:通过数据连接器从Hadoop平台收集数据。
  • streaming数据:可以连接到诸如Kafka之类的消息系统来做近似实时数据分析。

为何要做数据质量监控

  • 当数据从不同的数据源流向不同的应用系统的时候,缺少端到端的统一视图来追踪数据沿袭(Data Lineage)。这也就导致了在识别和解决数据质量问题上要花费许多不必要的时间。
  • 缺少一个实时的数据质量检测系统。从数据资产(Data Asset)注册,数据质量模型定义,数据质量结果可视化、可监控,当检测到问题时,可以及时发出警报。
  • 缺乏一个共享平台和API服务,让每个项目组无需维护自己的软硬件环境就能解决常见的数据质量问题。

基本概念

  • DQC:Data Quality Control,数据质量检测/数据质量控制,一般称为数据质量监控。

  • SLA:Service Level Agreement,也就是服务等级协议,指的是系统服务提供者(Provider)对客户(Costomer)的一个服务承诺,通常称为数据产出分级运维服务。

由定义可知,DQC关注数据口径,负责数据准不准的监测,而SLA关注产出及时性和稳定性,这两者有机结合共同保障了数据质量。在需求场景上DQC主要负责对数据资产质量和波动的监控,SLA主要负责对数据产出和任务调度结果和时长的监控。

特性

  • 度量:精确度、完整性、及时性、唯一性、有效性、一致性。
  • 异常监测:利用预先设定的规则,检测出不符合预期的数据,提供不符合规则数据的下载。
  • 异常告警:通过邮件或门户报告数据质量问题。
  • 可视化监测:利用控制面板来展现数据质量的状态。
  • 实时性:可以实时进行数据质量检测,能够及时发现问题。
  • 可扩展性:可用于多个数据系统仓库的数据校验。
  • 自助服务:Griffin提供了一个简洁易用的用户界面,可以管理数据资产和数据质量规则;同时用户可以通过控制面板查看数据质量结果和自定义显示内容。

架构

image-20230531164904597

Apache Griffin通过3个步骤来处理数据质量问题,步骤如下:

  • 定义数据质量:数据科学家/分析师定义他们的数据质量要求,如准确性、完整性、及时性、唯一性、有效性、一致性和分析等。
  • 测量数据质量:源数据将被摄取到Apache Griffin计算集群中,Apache Griffin将根据数据质量需求启动数据质量测量。
  • 度量结果:作为度量的数据质量报告将被发送到指定的地方。

此外Apache Griffin还为用户提供了一个前端层,用户可以轻松地将任何新的数据质量需求装载到Apache Griffin平台中,并编写全面的逻辑来定义他们的数据质量。

在Griffin的架构中,主要分为Define、Measure和Analyze三个部分

image-20230531171815533

各部分的职责如下:

  • Define:主要负责定义数据质量统计的维度,比如数据质量统计的时间跨度、统计的目标(源端和目标端的数据数量是否一致,数据源里某一字段的非空的数量、不重复值的数量、最大值、最小值、top5的值数量等)。
  • Measure:主要负责执行统计任务,生成统计结果。
  • Analyze:主要负责保存与展示统计结果。

安装

Docker部署

Griffin docker镜像是预先构建在docker hub上的,可以通过docker方式试用体验Apache Griffin。

# 国外地址镜像下载安装
docker pull apachegriffin/griffin_spark2:0.3.0
docker pull apachegriffin/elasticsearch
docker pull apachegriffin/kafka
docker pull zookeeper:3.5
# 中国地址镜像下载安装
docker pull registry.docker-cn.com/apachegriffin/griffin_spark2:0.3.0
docker pull registry.docker-cn.com/apachegriffin/elasticsearch
docker pull registry.docker-cn.com/apachegriffin/kafka
docker pull zookeeper:3.5

docker映像是Apache Griffin环境映像,各镜像包含内容如下:

  • apachegriffin/griffin_spark2:该镜像包含mysql、hadoop、 hive、 spark、 livy、Apache Griffin服务、Apache Griffin度量,以及一些准备好的demo数据,它作为一个单节点spark集群,提供spark引擎和Apache Griffin服务。
  • apachegriffin/elasticsearch:此镜像基于官方的elasticsearch,添加了一些配置以启用cors请求,为指标持久化提供elasticsearch服务。
  • apachegriffin/kafka:此镜像包含kafka 0.8,以及一些演示流数据,以流模式提供流数据源。
  • zookeeper:3.5:此镜像为官方zookeeper,以流媒体模式提供zookeeper服务。

Docker 镜像批处理使用

  • 下载获取源码中docker/compose/docker-compose-batch.yml文件,Griffin源码目录主要包括griffin-doc、measure、service和ui四个模块
    • griffin-doc负责存放Griffin的文档
    • measure采用scala语言编写,负责与spark交互,执行统计任务
    • service采用java的SpringBoot作为服务实现,负责给ui模块提供交互所需的restful api,保存统计任务,展示统计结果。

image-20230601093104328

  • 通过docker-compose启动
# 启动
docker-compose -f docker-compose-batch.yml up -d
# 查看容器
docker container ls

image-20230601102503643

  • 可以通过使用任何http客户端来尝试Apache Griffin api,这里以postman为例,官方源码中准备了两个postman的json配置文件。

image-20230601103654339

在postman以文件导入上面两个json配置文件,在Griffin Environment配置BASE_PATH环境变量,端口为上面docker容器暴露的38080

image-20230601142613932

先通过调用api (Basic -> Get griffin version)以确保Apache Griffin服务已经启动。

image-20230601142925038

  • 通过api Measures -> Add measure添加一个精度度量,在Apache Griffin中创建一个度量。

image-20230601143424953

  • 通过api jobs -> Add job添加一个作业来调度一个作业来执行度量。在本例中,调度间隔为4分钟,measure.id填写为上一步返回的id值。

image-20230601143845048

  • 几分钟后,可以从elasticsearch获得度量
curl -XGET 'hadoop2:39200/griffin/accuracy/_search?pretty&filter_path=hits.hits._source' -d '{"query":{"match_all":{}},  "sort": [{"tmst": {"order": "asc"}}]}'
{
  "hits" : {
    "hits" : [
      {
        "_source" : {
          "name" : "metricName",
          "tmst" : 1509599811123,
          "value" : {
            "__tmst" : 1509599811123,
            "miss" : 11,
            "total" : 125000,
            "matched" : 124989
          }
        }
      },
      {
        "_source" : {
          "name" : "metricName",
          "tmst" : 1509599811123,
          "value" : {
            "__tmst" : 1509599811123,
            "miss" : 11,
            "total" : 125000,
            "matched" : 124989
          }
        }
      }
    ]
  }
}

Docker 镜像流处理使用

  • 下载获取源码中docker/compose/docker-compose-streaming.yml文件。
  • 通过docker-compose启动
# 启动
docker-compose -f docker-compose-streaming.yml up -d
# 查看容器
docker container ls

image-20230601154639542

  • 执行流测试
# 进入griffin容器
docker exec -it griffin bash
# 切换到measure目录
cd ~/measure
# 执行脚本进行流精度测量
./streaming-accu.sh
# 跟踪日志
tail -f streaming-accu.log
  • 执行流分析测量
# 先杀死上面进行进程
kill -9 `ps -ef | awk '/griffin-measure/{print $2}'`
# 然后清除上次流作业的检查点目录和其他相关目录
./clear.sh
# 执行脚本进行流分析度量
./streaming-prof.sh
# 跟踪日志
tail -f streaming-prof.log

UI界面操作

  • 访问UI http://hadoop2:38080,默认用户密码为griffin/griffin

image-20230601160053592

  • 总体业务流程

image-20230601160024505

  • 当前docker镜像中默认有创建两个数据资产demo_src和demo_tgt可供测试。
# 进入griffin容器
docker exec -it griffin bash
# 进入hive命令行
hive

image-20230601161237157

  • 创建度量标准

    image-20230601155334764

    • 选择数据源,单一的真实来源与目标进行数据质量比较,目前只能从一个模式中选择属性。

    image-20230601164420574

    • 选择目标,以便与源进行数据质量比较。

    image-20230601164643592

    • 将目标数据字段映射到源字段

    image-20230601164849519

    • 完成demo_src和demo_tgt的分区配置

    image-20230601165043437

    • 填写度量的必要信息

    image-20230601165252504

    • 确保度量配置并保存

    image-20230601165604638

  • 创建作业来定期处理度量,度量名称选择上面my_accuracy_measure,设置每五分钟执行任务,点击提交按钮确认信息再点击保存按钮

image-20230601165859311

  • 热图和仪表板将显示度量的数据图。数据验证度量和分析任务都已配置完成,还可根据指标设置邮件告警等监控信息,等过一段时间后就可以在控制面板上监控的数据质量了。可以在Jobs中查看某个job的Metric可视化展示,也可以直接查看DQ Metrics和My Dashboard。

image-20230601175755447

  • 本人博客网站IT小神 www.itxiaoshen.com

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

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

相关文章

MySQL学习(联结,组合查询,全文本搜索)

联结 SQL最强大的功能之一就是能在数据检索查询的执行中联结表; 关系表 为什么要使用关系表? 使用关系表可以储存数据不重复,从而不浪费时间和空间;如果有数据信息变动,只需更新一个表中的单个记录,相关…

研发工程师玩转Kubernetes——Node失效后的Pod的调度实验

在《研发工程师玩转Kubernetes——多Worker Node部署》中,我们创建了Master Node: UbunutA,以及四个Worker Node:UbunutB、UbunutC、UbunutD和UbunutE。本节我们将使用Deployment创建只含有一个nginx的Pod,然后关掉它所在的主机以模拟Node失效…

使用Adobe Acrobat DC对.jpg和.png格式图片转换为.eps图片格式举例

使用Adobe Acrobat DC对.jpg和.png等格式图片转换为.eps图片格式举例 在进行有的文档排版编辑时候(比如使用winEdt进行排版CTEX文件时候),需要添加.eps格式的图片,然而电脑中的画图,word和ppt等中无法实现.eps格式图片…

centos7 glib2.0 arm版本的编译

最近在看bluez代码,想编译个例子来玩一下,然后bluez里的例子会用到 libglib-2.0 库里的接口,于是开始了漫长的编译 arm 版本的 libglib-2.0,Linux 系统有时就是很麻烦,要编译一个库,结果发现依赖一大堆库&a…

Linux命令学习之帮助命令man

cat /proc/version和uname -a可以查看CentOS内核使用版本。 我使用的Linux操作系统发行版本号是7.6.1810,可以通过cat /etc/redhat-release进行查看。 man man是manual的缩写,是操作说明的意思。 使用man touch想要看一下touch的使用帮助,…

OpenMMLab开营笔记

摘要 很高兴能加入OpenMMLab AI实战营,成为第二期4班的一名学员。OpenMMLab经过几年的发展和沉淀,其开源项目已经覆盖到计算机视觉的各个领域。OpenMMLab 为香港中文大学-商汤科技联合实验室 MMLab 开源的算法平台,不到两年时间,…

文件操作之文件包含全解(41)

<!#include file”1.asp”--> 作者&#xff1a;沙漠里的鲸 https://www.bilibili.com/read/cv14178731/ 出处&#xff1a;bilibili 文件包含的作用就是将这个文件包含进去之后&#xff0c;会调用指定文件的代码。先将文件包含才能执行里面的一些相关代码&#xff0c;比如…

SAP-MM-标准报表路径

一、SAP MM模块系统自带的标准报表很多&#xff0c;常见报表都放在每个主题的“清单显示”和“报表”文件夹下&#xff0c;如下图所示&#xff1a; 二、另外&#xff0c;还有一些报表&#xff0c;放在另外一个地方&#xff0c;需要时&#xff0c;可以随时进行查看&#xff0c;前…

陷入困境?Taos创建超表带来的错误!

taos创建超表时报错 运行如下命令 let res await cursor.query("CREATE STABLE meters1 (ts TIMESTAMP, value FLOAT, slot INT,rack INT,nameId VARCHAR(32),adName VARCHAR(32),dbNumber INT,dataType VARCHAR(28), unit VARCHAR(28)) TAGS (location binary(64), gr…

2GT齿轮的齿形参数

文章目录 2GT齿轮的齿形参数概述笔记齿的种类方形齿半圆弧齿全圆弧齿精确圆弧齿修正圆弧齿梯形齿齿形参数用SW画一个2GT齿END 2GT齿轮的齿形参数 概述 零件上用到了2GT的同步轮和惰轮, 想在装配图上将2个齿轮皮带都画上, 看看有没有干涉. 整体修改是否合理. 在淘宝店家的主页…

Linux系统下imx6ull QT编程——开发环境及 U盘拷贝文件(十)

Linux QT编程 文章目录 Linux QT编程前言一、开发环境二、文件拷贝 前言 前面学习了一些基础&#xff0c;然后qt我也有学过&#xff0c;直接动手在开发板上进行编程吧&#xff0c;但是开发板需要安装环境&#xff0c;需要拷贝一些文件&#xff0c;我使用得是U盘。 一、开发环…

【C++进阶5-红黑树】噩梦般的存在?手提AVLTree暴揍红黑树!

今天&#xff0c;带来无数人的噩梦——红黑树的讲解。文中不足错漏之处望请斧正&#xff01; 如果还没看过AVLTree讲解的一定要去看看&#xff0c;看完才能更好理解红黑树&#xff01; 是什么 红黑树是自平衡的二叉搜索树。 红黑树的规则: 每个结点非黑即红 根结点为黑叶子…

程序设计综合实习(C语言):考勤管理系统

一、目的 1&#xff0e;调动创新能力的培养 二、实习环境 Visual Studio 2022 三、实习内容与步骤 问题描述&#xff1a; 每个员工信息包括工号、姓名、年龄、性别、部门等&#xff1b; 功能要求&#xff1a; &#xff08;1&#xff09;能够增加、删除、修改员工信息。 &…

[CTFTraining] ASIS CTF 2019 Quals Unicorn shop

​ 我们随便买一件商品&#xff0c;1~3都显示&#xff1a; ​ 只有第4个显示&#xff1a; ​ 只允许输入一个字符&#xff0c;题目叫Unicorn&#xff0c;猜测为Unicode。在Unicode - Compart搜索比千大的Unicode码&#xff1a; ​ 最后填进去买下商品得到flag。 另外&#…

CDGA 认证:第四章 数据架构(重点章节)习题集解析

1. 企业架构不包括哪项&#xff1f;&#xff08; &#xff09; A 业务架构 B 数据架构 C 系统架构 D 技术架构 【答案解析】DAMA-DMBOK2 P72 2. 关于架构设计生命周期描述错误的是&#xff1f;( ) A 可以是针对当前的 B 可以是面向未来的 C 可以是已实施完成的 D 可以是已经…

Flutter 对话框【代码实践】

Flutter 对话框【代码实践】 文章目录 Flutter 对话框【代码实践】一、普通对话框1、示例一&#xff1a;圆角、背景截图代码 一、普通对话框 1、示例一&#xff1a;圆角、背景 截图 代码 Center(child: ElevatedButton(onPressed: () {showDialog(context: context,builder:…

Spring Boot如何实现分布式系统中的服务发现和注册?

Spring Boot如何实现分布式系统中的服务发现和注册&#xff1f; 随着互联网的快速发展&#xff0c;越来越多的企业开始将自己的业务迁移到分布式系统中。在这种情况下&#xff0c;服务发现和注册变得尤为重要。对于分布式系统中的每个服务来说&#xff0c;它需要知道其他服务的…

数据可视化——使用echars图表展示

目录 1、前言 2、解决方案 2.1、echars&#xff08;前端等组件库&#xff09; 2.2、PPT等其他软件工具 2.3、使用flourish等在线数据可视化制作平台 2.4、自己用代码实现 1、前言 有一个小作业&#xff0c;需要自己收集一组数据&#xff0c;然后进行数据可视化&#xff0…

QListWidget和QListView的使用和item点击事件

QListWidget和QListView很常用&#xff0c;但是使用上功能类似&#xff0c;往往容易分不清区别&#xff0c;但是不知道如何选择。这里总结下二者之间的区别和使用&#xff0c;分享给有需要的人&#xff0c;有需要的可点击收藏。 QListView介绍 QListView是Qt中用于显示列表的一…

程序在内存中的分布

1. 具体分布细节由编译器决定 2. 分布图 3. 静态局部变量通常被存放在程序的.data段中。 一般地&#xff0c;静态局部变量定义在函数体内&#xff0c;在函数执行时&#xff0c;它会在静态存储区分配内存&#xff0c;并且只被初始化一次。因为静态局部变量是在编译阶段产生的&…