学习 Griffin(二):部署

Apache Griffin 版本:0.4.0

架构

Griffin 架构如下所示:

Tech Components

技术组件包括:

  • Apache Hadoop 批量数据源,存储指标数据
  • Apache Kafka 实时数据源
  • Apache Hive Hive Metastore
  • Apache Spark 计算批量、实时指标
  • Apache Livy 为服务提供 RESTful API 调用 Apache Spark
  • MySQL 服务元数据
  • ElasticSearch 存储指标数据

配置

MySQL

Griffin 使用了 Quartz 调度器调度任务,MySQL 需要执行 rersources/Init_quartz_mysql_innodb.sql SQL 脚本创建 Quartz 调度器依赖的表。

mysql -u griffin -e "create database griffin" -p  
mysql -u griffin -p quartz < Init_quartz_mysql_innodb.sql  

编辑 resources/application.properties 文件,修改数据源配置:

spring.datasource.url=jdbc:mysql://MYSQL_SERVER:3306/griffin  
spring.datasource.username=griffin  
spring.datasource.password=secret  
spring.jpa.generate-ddl=true  
spring.datasource.driver-class-name=com.mysql.jdbc.Driver  
spring.jpa.show-sql=true  

编辑 service/pom.xml 文件,移除 MySQL JDBC 依赖注释:

<dependency>  
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>${mysql.java.version}</version>
</dependency>  

ElasticSearch

Griffin 使用了 ES 存储指标数据。

创建 Griffin 索引:

curl -XPUT http://es: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": "3"
        }
    }
}
'  

编辑 resources/applicaton.properties 文件,修改 Elasticsearch 配置:

# elasticsearch
elasticsearch.host=ES_SERVER  
elasticsearch.port=9200  
elasticsearch.scheme=http  

修改 resources/env/env_batch.jsonresources/env/env_streaming.json 中 Elasticsearch 配置。

Hive

编辑 resources/applicaton.properties 文件,修改 Hive Metastore 配置:

hive.metastore.uris=thrift://HIVE_METASTORE_SERVER:9083  
hive.metastore.dbname=default  
hive.hmshandler.retry.attempts=15  
hive.hmshandler.retry.interval=2000ms  

Spark 配置

编辑 resources/sparkProperties.json 文件:

{
  "file": "hdfs:///tmp/griffin/app/griffin-measure.jar",
  "className": "org.apache.griffin.measure.Application",
  "name": "griffin",
  "queue": "default",
  "numExecutors": 2,
  "executorCores": 2,
  "driverMemory": "1g",
  "executorMemory": "4g",
  "conf": {
    "spark.yarn.dist.files": "hdfs:///tmp/griffin/conf/hive-site.xml"
  },
  "files": [
  ]
}

griffin-measure.jar 上传到 HDFS /tmp/griffin/app 目录下,将 hive-site.xml 上传扫 HDFS /tmp/griffin/conf 目录下。

Livy 配置

编辑 resources/application.properties 文件:

livy.uri=http://LIVY_SERVER:8998/batches  

构建和运行

为了支持 Log4j2 日志,编辑 service/pom.xml 文件,添加依赖:

<dependency>  
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>  

构建项目:

mvn clean install -DskipTests  

自己写了一个 Griffin 脚手架脚本,地址:griffin-scaffold - GitHub

克隆到本地:

git clone https://github.com/dyingbleed/griffin-scaffold.git  

service-0.4.0.jar 重命名为 griffin-service.jar,拷贝到本目录。

启动 Griffin:

sh bin/start-griffin.sh  

停止 Griffin:

sh bin/stop-griffin.sh  

参考