最近我发现,Apache已经成了解决问题的解决我们日常问题的首选宝藏之地。这几天在调研数据质量监控的东西时,无意中发现了Apache Griffin。
正验证了那句话,你遇到的问题,大部分别人都遇到过。我们来看看这个Griffin到底解决了哪些问题?
Apache Griffin定位为大数据的数据质量监控工具,支持批处理数据源hive、text文件、avro文件和实时数据源kafka,而一些以关系型数据库如mysql、oracle为存储的项目也同样需要可配置化的数据质量监控工具,所以扩展griffin的mysql数据源就可以为项目的数据质量监控提供多一种选择。
Griffin是属于模型驱动的方案,基于目标数据集合或者源数据集(基准数据),用户可以选择不同的数据质量维度来执行目标数据质量的验证。支持两种类型的数据源:
在Griffin的架构中,主要分为Define、Measure和Analyze三个部分,如下图所示:
各部分的职责如下:
Griffin 系统主要分为:数据收集处理层(Data Collection&Processing Layer)、后端服务层(Backend Service Layer)和用户界面(User Interface),如图:
系统数据处理分层结构图:
系统处理流程图:
基于以上功能,大数据平台可以考虑引入Griffin作为数据质量解决方案,实现数据一致性检查、空值统计等功能。Apache Giffin目前的数据源包括HIVE, CUSTOM, AVRO, KAFKA。Mysql和其他关系型数据库的扩展根据需要进行扩展。
Griffin的安装和部署需要以下环境:
具体的安装步骤可以参考官网:http://griffin.apache.org/docs/quickstart-cn.html
在这里我使用源码编译打包的方式来部署Griffin,Griffin的源码地址是:https://github.com/apache/griffin.git 这里我使用的源码tag是griffin-0.4.0,下载完成在idea中导入并展开源码的结构图如下:
Griffin的源码结构很清晰,主要包括griffin-doc、measure、service和ui四个模块,其中griffin-doc负责存放Griffin的文档,measure负责与spark交互,执行统计任务,service使用spring boot作为服务实现,负责给ui模块提供交互所需的restful api,保存统计任务,展示统计结果。
这里我们用官网的一个案例入门:
首先在hive里创建表demo_src和demo_tgt:
--create hive tables here. hql script
--Note: replace hdfs location with your own path
CREATE EXTERNAL TABLE `demo_src`(
`id` bigint,
`age` int,
`desc` string)
PARTITIONED BY (
`dt` string,
`hour` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION
'hdfs:///griffin/data/batch/demo_src';
--Note: replace hdfs location with your own path
CREATE EXTERNAL TABLE `demo_tgt`(
`id` bigint,
`age` int,
`desc` string)
PARTITIONED BY (
`dt` string,
`hour` string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION
'hdfs:///griffin/data/batch/demo_tgt';
然后生成测试数据:
从http://griffin.apache.org/data/batch/ 地址下载所有文件到Hadoop服务器上,然后使用如下命令执行gen-hive-data.sh脚本:nohup ./gen-hive-data.sh>gen.out 2>&1 & 注意观察gen.out日志文件,如果有错误,视情况进行调整。这里我的测试环境Hadoop和Hive安装在同一台服务器上,因此直接运行脚本。
最后通过UI界面创建统计任务,具体按照Apache Griffin User Guide 一步步操作,地址在这里:https://github.com/apache/griffin/blob/master/griffin-doc/ui/user-guide.md
此外,我还在其他博主的博客中看到一个更为复杂的案例如下,大家可以在参考链接中找到:
以检测供应商账单明细表的同步精确度为例,配置数据检测,如图:
创建了数据模型度量后,需要相应的spark定时任务来执行分析,接下来就是创建spark job和调度信息了
创建job界面中需要选择源表和目标表数据范围,如上图所示是选择t-1到当前的数据分区,即昨天的数据分区。设置定时表达式,提交任务后即可在job列表中查看:
到这里,数据验证度量和分析任务都已配置完成,后面还可根据你的指标设置邮件告警等监控信息,接下来就可以在控制面板上监控你的数据质量了,如图:
用好Griffin的前提是熟悉下面的技术栈,大家看到了基本都是Apache全家桶:
此外,在调研过程中也发现了一些已知的问题:
我们在后续的文章中会给出一篇使用Griffin的实战案例,欢迎关注。
https://blog.csdn.net/vipshop_fin_dev/article/details/86362706
https://blog.csdn.net/zcswl7961/article/details/101479637
版权声明:
本文为《大数据真好玩》原创整理,转载需作者授权。未经作者允许转载追究侵权责任。
责编 | 大数据真好玩
插画 | 大数据真好玩
微信公众号 | 大数据真好玩