我們面臨的問題
? ? ? 隨著接入產(chǎn)品的日益增多,以及數(shù)據(jù)倉庫表、字段的日益豐富,數(shù)據(jù)側(cè)和策略側(cè)對數(shù)據(jù)質(zhì)量的關(guān)注,越發(fā)的迫切;如何能夠快速、高效的對核心數(shù)據(jù)資產(chǎn),有一個清晰的認知和監(jiān)控,成為了數(shù)據(jù)側(cè)需要解決的難題。
我們的解決方案
? ? 首先考慮到團隊的實際情況,優(yōu)先考慮借鑒公司內(nèi)部或者開源的產(chǎn)品,避免人員的大量投入。最終經(jīng)過前期的調(diào)研, 我們選擇了Apach griffin。Apache griffin 是ebay中國開源的項目,2018年成為了Apache 下面的頂級開源項目。Apache griffin能解決哪些問題呢?
? ? ? ? ? 1. 數(shù)據(jù)的一致性檢測,例如兩張表內(nèi),相關(guān)字段的一致性問題
? ? ? ? ? 2. 數(shù)據(jù)的完整性,字段、取值是否有異常,比如過多的空值、或者枚舉值不在合法的范圍內(nèi)等問題
? ? ? ? ? 3. 數(shù)據(jù)的唯一性:其內(nèi)部定制化了一些常用的規(guī)則,如計算相關(guān)字段的去重個數(shù)
? ? ? ? ? 4. 有效性:用戶可以通過自定義規(guī)則,支持字段合法性的校驗,例如IMEI、安卓ID是否合規(guī)等
Apache griffin的搭建
在搭建過程中,可以參見Apache griffin相關(guān)的文檔,例如:
https://git.efivestar.com/projects/INFRA/repos/infra-bigdata/browse/doc/griffin/griffin.md?at=master
在此項目內(nèi),我們使用的Apache griffin的最新版本5.0,由于業(yè)務(wù)場景的要求,主要是對batch數(shù)據(jù)進行監(jiān)控;同時,在上述文檔的配置中,缺少了對measure項目相關(guān)配置,需要在源碼內(nèi),對src/main/resources下的env-batch.json進行配置,修改其中的spark.master方式為yarn,同時設(shè)置HDFS和ES的相關(guān)配置信息。
搭建過程中注意事項
1. ES的密碼問題;在搭建過程中,由于采用的公司ES集群,需要設(shè)置用戶的賬戶和密碼信息;在service/src/resources下,配置文件預(yù)留了相關(guān)的參數(shù),但是在measure項目中,卻沒有保留用戶名和密碼的相關(guān)參數(shù),會導(dǎo)致在spark寫入ES的過程中,由于授權(quán)問題,導(dǎo)致失敗;解決辦法比較簡單粗暴,在ElasticSearchSink類中,找到httpResult方法,在header參數(shù)中,增加Authorization頭,并加入對應(yīng)的參數(shù)值(此處為了快速嘗試,采用了硬編碼,后期可以從配置中讀?。蝗缦滤荆?/p>


? ? 2. 在創(chuàng)建measure時,需要從hive中讀取所有的DB和tables,加載任務(wù)過久
通過前端接口,查看頁面加載時調(diào)用的方法和對應(yīng)接口,并定位相關(guān)的函數(shù),修改一下兩個方法,讓其只加載配置文件中定義的DB,降低返回數(shù)據(jù)量;


Apache griffin的應(yīng)用
· 完事具備,只欠使用;griffin支持四中主要的任務(wù),在我們這里只關(guān)注前兩個,accuracy和profiling。首先,可以參照網(wǎng)上教程創(chuàng)建對應(yīng)的measure,其次創(chuàng)建對應(yīng)的Job信息;此處可以支持任務(wù)的例行化及指標的可視化等;



下一步的工作
監(jiān)控的核心訴求,還是在發(fā)生問題時,進行異常的報警周知;下一步工作會將公司統(tǒng)一的報警接口,集成到griffin平臺內(nèi),當數(shù)據(jù)有異常波動時,周知相關(guān)的負責(zé)人。