目錄
一、Griffin簡介
數據質量模塊是大數據平臺中必不可少的一個功能組件,Apache Griffin(以下簡稱Griffin)是一個開源的大數據數據質量解決方案,
它支持批處理和流模式兩種數據質量檢測方式,可以從不同維度(比如離線任務執行完畢後檢查源端和目標端的數據數量是否一致、源表的數據空值數量等)
度量數據資產,從而提升數據的準確度、可信度。
在Griffin的架構中,主要分爲Define
、Measure
和Analyze
三個部分,如下圖所示:
各部分的職責如下:
- :主要負責定義數據質量統計的維度,比如數據質量統計的時間跨度、統計的目標(源端和目標端的數據數量是否一致,數據源裏某一字段的非空的數量、不重複值的數量、最大值、最小值、top5的值數量等)
- :主要負責執行統計任務,生成統計結果
- :主要負責保存與展示統計結果
基於以上功能,大數據平臺計劃引入Griffin作爲數據質量解決方案,實現數據一致性檢查、空值統計等功能。以下是安裝步驟總結:中文版Quick Start
二、安裝部署
2.1 依賴準備
- 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)
- Scala(2.x or later versions)
依賴於 Ambari 安裝 Griffin ,所以目前來說只需要安裝ES,Scala,初始化Griffin元數據庫即可。
1、初始化
初始化操作具體請參考Apache Griffin Deployment Guide,Hadoop集羣、Hive安裝步驟省略。
在MySQL中創建數據庫quartz,然後執行Init_quartz_mysql_innodb.sql腳本初始化表信息。
create database quartz character set utf8; CREATE USER 'quartz'@'%' IDENTIFIED BY 'L1234567'; GRANT ALL PRIVILEGES ON . TO 'quartz'@'%'; FLUSH PRIVILEGES; use quartz; |
---|
2、Hadoop和Hive
在Hadoop服務器上創建/home/spark_conf目錄,並將Hive的配置文件hive-site.xml上傳到該目錄下:
3、Scala 安裝
下載安裝包:https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
## 解壓到 /usr/scala/ 目錄下 export SCALA_HOME=/usr/scala/scala-2.11.8 export CLASSPATH=$SCALA_HOME/lib/ export PATH=$PATH:$SCALA_HOME/bin ## 設置環境變量 export SPARK_HOME=/usr/hdp/3.1.4.0-315/spark2 export LIVY_HOME=/usr/hdp/3.1.4.0-315/livy2/bin export HADOOP_CONF_DIR=/usr/hdp/3.1.4.0-315/hadoop/conf |
---|
4、 ES的安裝與啓動
tar包下載鏈接:ElasticSearch5.5.2.tar
1.兩臺創建一個es專門的用戶(必須)
useradd es passwd es 密碼 es |
---|
2.兩臺機器使用root用戶執行visudo命令然後爲es用戶添加權限
root ALL=(ALL) ALL es ALL=(ALL) ALL |
---|
3.解壓 es到 /usr/ 目錄下
scp -r /usr/elasticsearch-5.5.2/ hdp02:/usr/ chown -R es /usr/elasticsearch-5.5.2/ 斷開連接linux的工具,然後重新使用es用戶連接上兩臺linux服務器 |
---|
4、修改配置文件
cd /usr/elasticsearch-5.5.2 mkdir data mkdir log rm -rf elasticsearch.yml vim elasticsearch.yml
vim elasticsearch.yml cluster.name: hdp_es node.name: hdp01 path.data: /usr/elasticsearch-5.5.2/data path.logs: /usr/elasticsearch-5.5.2/log network.host: 10.168.138.188 http.port: 9200 discovery.zen.ping.unicast.hosts: ["hdp01", "hdp02"] bootstrap.system_call_filter: false bootstrap.memory_lock: false http.cors.enabled: true http.cors.allow-origin: "*"
hdp02 cluster.name: hdp_es node.name: hdp02 path.data: /usr/elasticsearch-5.5.2/data path.logs: /usr/elasticsearch-5.5.2/log network.host: 10.174.96.212 http.port: 9200 discovery.zen.ping.unicast.hosts: ["hdp01", "hdp02"] bootstrap.system_call_filter: false bootstrap.memory_lock: false http.cors.enabled: true http.cors.allow-origin: "*" |
---|
後臺啓動, 也可以先 在前臺 啓動看看報錯信息。
nohup /usr/elasticsearch-5.5.2/bin/elasticsearch 2>&1 & |
---|
- 報錯:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
兩臺機器執行以下命令,注意每次啓動ES之前都要執行
sudo sysctl -w vm.max_map_count=262144 [es@hdp01 bin]$ sudo sysctl -w vm.max_map_count=262144 vm.max_map_count = 262144 [es@hdp01 bin]$ nohup /usr/elasticsearch-5.5.2/bin/elasticsearch 2>&1 & |
---|
訪問兩臺機器的 9200 出現以下面的信息則安裝成功。
5.在ES裏創建griffin索引
curl -H "Content-Type: application/json" -XPUT http://10.168.138.188: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" } } }' |
---|
出現下面紅色框框的信息則安裝成功。
2.2 源碼打包部署
在這裏我使用源碼編譯打包的方式來部署Griffin,Griffin的源碼地址是:https://github.com/apache/griffin.git,這裏我使用的源碼tag是griffin-0.6.0,
下載完成在idea中導入並展開源碼的結構圖如下:
Griffin的源碼結構很清晰,主要包括griffin-doc、measure、service和ui四個模塊,其中griffin-doc負責存放Griffin的文檔,measure負責與spark交互,執行統計任務,service使用spring boot作爲服務實現,負責給ui模塊提供交互所需的restful api,保存統計任務,展示統計結果。
1、service/src/main/resources/application.properties
- 說明 applicatoin.properties 將 SpringBoot 默認的 8080 設置爲 8090,因爲 我們的Ambari 使用的也是 8080 端口
|
---|
因爲 我們將 數據庫的驅動,修改 service/pom.xml 將此處的註釋放開(140行左右)
<groupId>mysql</groupId> |
---|
2、service/src/main/resources/quartz.properties
|
---|
3、service/src/main/resources/sparkProperties.json
|
---|
4、service/src/main/resources/env/env_batch.json
|
---|
配置文件修改好後,在idea裏的terminal裏執行如下maven命令進行編譯打包:
|
---|
- 問題:此處有常見的 Jar 包下載不下來的 依賴包錯誤
- Griffin編譯失敗,kafka-schema-registry-client-3.2.0.jar下載地址
下載地址:https://github.com/Xiwu1994/griffin-kafka-schema-registry-client
mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-schema-registry-client -Dversion=3.2.0 -Dpackaging=jar -Dfile=kafka-schema-registry-client-3.2.0.jar |
---|
SparkSQL2.2.1 依賴下載問題,下載tar包手動導入
https://archive.apache.org/dist/spark/ mvn install:install-file -DartifactId=spark-sql_2.11 -Dversion=2.2.1 -Dpackaging=jar -DfileG:\software\Ambari安裝包\spark2.21\spark-2.2.1-bin-hadoop2.7\jars\spark-sql_2.11-2.2.1.jar |
---|
- 說明:下載不到的Jar 包可以按照這種方式處理。
5、修改 Jar包名稱 將measure-0.6.0.jar這個jar上傳到HDFS的/griffin文件目錄裏
# Hadoop需要的路徑 hadoop fs -mkdir -p /griffin/persist hadoop fs -mkdir /griffin/checkpoint |
---|
6、運行griffin-service.jar,啓動Griffin管理後臺
sysctl -w vm.max_map_count=262144 nohup java -jar griffin-service.jar>service.out 2>&1 & |
---|
查看日誌報錯信息
訪問Apache Griffin的默認UI(默認情況下,spring boot的端口是8080),我們之前改爲了 8090 ,能訪問則表示安裝成功。
參考文檔:
Apache Griffin 入門指南:http://griffin.apache.org/docs/quickstart-cn.html
Apache Griffin入門指南:https://www.jianshu.com/p/9e4067b3e2dd
Apache Griffin 5.0 編譯安裝和使用:https://blog.csdn.net/github_39577257/article/details/90607081