Apache Griffin大数据的开源数据质量解决方案源码编译部署安装

分类: JAVA 评论(398) 197 阅读 2021-01-14 14:55 ZooM查看

摘要 Apache Griffin是开源数据质量解决方案,当前最新版本是0.6版本,采用源码编译方式进行部署在环境依赖、编译上踩过不少坑在网上也得到了很多帮助,在此记录一下,如果也你正好遇到希望对你有一些帮助。
JAVA

  Apache Griffin提供了一套定义明确的数据质量域模型,它涵盖了大多数数据质量问题。它还定义了一组数据质量DSL,以帮助用户定义他们的质量标准。通过扩展DSL,用户甚至可以在Apache Griffin中实现自己的特定功能/功能。

  官方地址:Apache Griffin  Github:Apache Griffin Github  并感谢这边博主的文章:Apache Griffin编译(这里面步骤很详细,给了很多帮助)

  通过浏览官方文档,Griffin运行需要依赖一些大数据组件:

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)

  假设这些组件都已拥有即可开始Griffin的编译安装。

第一步:克隆Git上代码,并切换到最新版本分支

第二步:创建 MySQL 数据库,库名称 quartz ,并在 griffin/service/ 模块 resource 目录下找到初始化脚本,执行数据库初始化 一般选择innodb的sql


第三步:将 hive-site.xml 上传到HDFS文件系统上,在配置文件 sparkProperties.json  中定义了上传路径


第四步:修改 service模块下 application.properties 资源配置文件 指定数据库、hive、livy、yarn地址等

注意:我用0.6版本时默认引入的数据库依赖是 postgres ,如果使用 MySQL ,在 pom 文件中需要把 MySQL 依赖打开并注释掉 postgres依赖


同时 profile 处也需要打开


第五步:修改 service 模块下 quartz.properties 主要是切换 driverDelegateClass 如果默认是使用 postgres 就不用切换了,因为用的是mysql 就需要更改

org.quartz.scheduler.instanceName=spring-boot-quartz
org.quartz.scheduler.instanceId=AUTO
org.quartz.threadPool.threadCount=5
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
# If you use postgresql as your database,set this property value to org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
# If you use mysql as your database,set this property value to org.quartz.impl.jdbcjobstore.StdJDBCDelegate
# If you use h2 as your database, it's ok to set this property value to StdJDBCDelegate, PostgreSQLDelegate or others
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=true
org.quartz.jobStore.clusterCheckinInterval=20000

第六步:修改配置文件中 地址信息 

sparkProperties.json
env_batch.json
env_streaming.json
config-streaming.json

第七步:创建ES索引,如果你的ES版本较新7+,那么官方文档或者网页上给出的创建索引模板你得改一改不然不能创建成功,会提示

Root mapping definition has unsupported parameters

原因:ElasticSearch7.X之后的版本默认不在支持指定索引类型,
默认索引类型是_doc(隐含:include_type_name=false),所以在mappings节点后面,直接跟properties就可以了。

那就去掉指定的索引名称:

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

由于我的ES是安装在CDH中的,当时创建索引还出现了

{ "error" : { "root_cause" : [ { "type" : "master_not_discovered_exception", "reason" : null } ], "type" : "master_not_discovered_exception", "reason" : null }, "status" : 503 }

需要在ES配置 elasticsearch.properties 的 Elastic Search Node 高级配置代码段(安全阀)添加

cluster.initial_master_nodes: ["iot-200.scy.com.cn","iot-201.scy.com.cn","iot-202.scy.com.cn"]

非CDH下直接在/etc/elasticsearch/elasticsearch.yml 修改对应host主机名称即可,修改后重启。

由于高版本不能指定索引名称,默认会使用 _doc 的默认索引,所以在设置ES地址时,

需要将 griffin/accuracy 替换为 griffin/_doc

使用IDEA工具匹配的全部替换。如下:

{
      "name": "elasticsearch",
      "type": "ELASTICSEARCH",
      "config": {
        "method": "post",
        "api": "http://iot-200.scy.com.cn:9200/griffin/_doc",
        "connection.timeout": "1m",
        "retry": 10
      }

第八步:到这里就可以编译打包了,首先UI 模块下的pom文件中 npm、node的版本先改成和自己电脑中安装版本一致

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <node.version>v10.16.0</node.version>
        <npm.version>6.9.0</npm.version>
    </properties>

这些国外的开源软件,在编译时问题最多的就是UI项目依赖下载不下来,当初编译Thingsboard 项目也是UI依赖下载不下来,所以将npm 设置为淘宝源

# 设置淘宝源
npm config set registry https://registry.npm.taobao.org npm config get registry
# 恢复官方 
npm config set registry https://registry.npmjs.org

然后项目根目录下执行:

mvn clean install -Dmaven.test.skip=true

UI 模块报错几率较大 会下载不下来,多试几次!!!后端编译一切正常并没有出现maven下载不下来的情况,

第九步:编译后 measure、service 两个模块下 target 包需要拷贝出来 

measure-0.6.jar 重命名为 griffin-measure.jar 并上传到 HDFS中,sparkProperties.json 文件中配置的路径

service-0.6.jar 重命名为 griffin-service.jar 

如果遇到 service jar 打包不正常,没有出现 .original 后缀的文件 请修改 pom

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>${spring-boot-maven-plugin.version}</version>
    <executions>
        <execution>
            <goals>
                <!--<goal>build-info</goal>-->
                <!--改成 repackage 否则打包出的jar找不到主类-->
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <executable>false</executable>
    </configuration>
</plugin>

第十步:启动 griffin-service.jar 根据 配置的port 端口进行访问


默认没有密码,登陆即可。

登陆进去什么都还没有,官方的测试用例还没有跑通,等流程都测试过后再更新一篇文章。




















评论398
评论已关闭