@
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支援兩種型別的資料來源:
DQC:Data Quality Control,資料質量檢測/資料質量控制,一般稱為資料質量監控。
SLA:Service Level Agreement,也就是服務等級協定,指的是系統服務提供者(Provider)對客戶(Costomer)的一個服務承諾,通常稱為資料產出分級運維服務。
由定義可知,DQC關注資料口徑,負責資料準不準的監測,而SLA關注產出及時性和穩定性,這兩者有機結合共同保障了資料質量。在需求場景上DQC主要負責對資料資產質量和波動的監控,SLA主要負責對資料產出和任務排程結果和時長的監控。
Apache Griffin通過3個步驟來處理資料質量問題,步驟如下:
此外Apache Griffin還為使用者提供了一個前端層,使用者可以輕鬆地將任何新的資料質量需求裝載到Apache Griffin平臺中,並編寫全面的邏輯來定義他們的資料質量。
在Griffin的架構中,主要分為Define、Measure和Analyze三個部分
各部分的職責如下:
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環境映像,各映象包含內容如下:
# 啟動
docker-compose -f docker-compose-batch.yml up -d
# 檢視容器
docker container ls
在postman以檔案匯入上面兩個json組態檔,在Griffin Environment設定BASE_PATH環境變數,埠為上面docker容器暴露的38080
先通過呼叫api (Basic -> Get griffin version)以確保Apache Griffin服務已經啟動。
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-compose -f docker-compose-streaming.yml up -d
# 檢視容器
docker container ls
# 進入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
# 進入griffin容器
docker exec -it griffin bash
# 進入hive命令列
hive
建立度量標準
建立作業來定期處理度量,度量名稱選擇上面my_accuracy_measure,設定每五分鐘執行任務,點選提交按鈕確認資訊再點選儲存按鈕