一、前言
本次预研Griffin版本为Griffin-0.5.0。
通过本文,各位看官可以了解到griffin搭建的一些细节,避免再去踩坑,最终更快的搭建出一套Griffin的环境。
话不多说,一切从编译开始。
二、Griffin编译
Apache Griffin是一个maven工程,整体上来看分为三个模块:measure、service、ui。其中,
Measure模块用来和spark进行交互,执行统计任务。
Service模块,一个spring boot的工程,用来提供griffin的后台服务接口,与数据库、livy等打交道。
Ui模块用来做界面展示,并向service模块发送http请求。
Griffin 的编译,整体来说还是比较简单的,分别对measure、service模块执行如下命令,即可拿到measure.jar和service.jar。
mvn -Dmaven.test.skip=true clean install
ui模块,是一个angular编写的项目,没有搞过angular的我完全不会编译,于是乎,请求专门的前端工程师协助编译该模块,我的同事并没有使用maven命令打包UI模块,而是直接使用"ng build"命令来打包,该命令定义在/griffin/ui/angular/package.json,该文件中还定义了其它命令,如本地启动UI模块。在打包结束后,将dist目录拷贝至安装服务器的tomcat webapp目录下,即可渲染成功。
这边需要说明的是:
按照官网的安装步骤,我们需要先修改如下几个配置文件:
service/src/main/resources/application.propertiesservice/src/main/resources/quartz.propertiesservice/src/main/resources/sparkProperties.jsonservice/src/main/resources/env/env_batch.json
再利用griffin源码提供的pom进行打包,最终这些配置文件打包到service.jar中。
刚开始看官网的安装文档,我还以为编译的时候会读取这些配置项,在mysql、es等组件中初始化一些元数据,后来一细想,再加上我编译结束后,再去es的索引中去查看索引里是不是有数据,结果根本就没有预写啥元数据。
这样的话,在编译前修改这些配置文件的意义就不太大了~因为换一个环境,我还是需要将jar包中的配置文件拿出来,在根据环境信息修改完配置文件后,再压缩回jar包中,这样用起来实在是太不方便。
因此,强烈建议Griffin团队把pom改一改,service可以编译成tar包,把这些配置文件用conf来存储。
三、Griffin依赖组件
Griffin依赖的组件较多,具体见如下表格。
依赖组件 |
实际版本 |
描述 |
JDK |
1.8.0_192 |
Griffin要求jdk版本不低于1.8 |
Scala |
2.11.7 |
Spark、livy、griffin都依赖了 |
MySQL |
Mysql-5.6.25-linux-x86_64 |
官网要求5.6以上版本 |
Hadoop |
Hadoop-2.6.0-cdh5.7.0 |
官方要求2.6.0以上版本 |
Hive |
Apache-hive-2.3.3-bin |
官方要求2.0以上版本 |
Spark |
Spark-2.4.4-bin-hadoop2.6 |
因为livy依赖spark环境变量,因此肯定在livy机器上肯定要有spark客户端。 |
Livy |
Apache-livy-0.7.0 |
用以提交spark任务,可以往yarn、mesos等资源管理器上提交。 |
ElasticSearch |
Elasticsearch-6.1.3 |
任务统计的结果,会存储在es索引中 |
Nodejs |
Node-v6.9.4-linux-64 |
解释Ui模块angular代码,地位等同于JDK对java |
Tomcat |
8.0.35 |
给ui提供一个容器 |
相比官网上的介绍,这边多加了Scala和T