Davinci安装
Davinci 源代码github地址:https://github.com/edp963/davinci
二次开发完全可以参考Davinci 的使用手册的文档说明介绍比较详细,这里只说几个注意点。
安装
1 环境准备
- Redis(可选)
2 配置部署
参考博客: https://edp963.github.io/davinci/docs/zh/1.1-deployment
2.1 初始化目录
将下载好的 Davinci 包(Release 包,不是 Source 包)解压到某个系统目录,如:~/app/davinci
mkdir -p /opt/apps/software/davinci
mkdir -p /opt/apps/software/phantomjs
mkdir -p /opt/apps/software/jars
cd /opt/apps/software/davinci
先创建 mkdir davinci-0.3.0 进入后解压
cd davinci-0.3.0
unzip davinci-assembly_3.0.1-0.3.1-SNAPSHOT-dist-beta.9.zip
cd /opt/apps
ln -s software/davinci/davinci-0.3.0 davinci
ln -s software/phantomjs/phantomjs-2.1.1 phantomjs
解压后目录结构如下图所示:
2.2 配置环境变量
将上述解压后的目录配置到环境变量 DAVINCI3_HOME
# ------------------------< Davinci>------------------------
export DAVINCI3_HOME=/opt/apps/davinci
export PATH=$PATH:$DAVINCI3_HOME/bin
2.3 初始化数据库
修改 bin 目录下 initdb.sh 中要的数据库信息为要初始化的数据库,如 davinci
# mysql -P 3306 -h IP地址 -u 用户名 -p密码 davinci(数据库) < $DAVINCI3_HOME/bin/davinci.sql
mysql -P 3306 -h localhost -u bigdata -pbigdata davinci < ./davinci.sql
运行脚本初始化数据库(注:由于 Davinci 系统数据库中包含存储过程,请务必在创建数据库时赋予执行权限)
sh bin/initdb.sh
2.4 初始化配置
Davinci 的配置主要包括:server、datasource、mail、phantomjs、cache 等配置
进入config目录,将application.yml.example重命名为application.yml 后开始配置
cd config
cp application.yml.example application.yml
注意:由于 Davinci 使用 ymal 作为应用配置文件格式,请务必确保每个配置项键后的冒号和值之间至少有一个空格
2.4.1 server 配置
### 注意: "context-path: /" 这个斜杠后面不能添加访问路径,不然web界面不显示内容
server:
protocol: http
address: 0.0.0.0
port: 19001
servlet:
context-path: /
# Userd for mail and download services, can be empty, careful configuration
# By default, 'server.address' and 'server.port' is used as the string value.
### 代理地址, 即:Web界面访问的地址(这是在idea中测试,设置本机地址,在服务中不是时设置服务器的IP地址即可), 如: 127.0.0.1:19001
access:
address: 127.0.0.1
port: 19001
- server 配置如上示例所示,server.access.address和server.access.port表示真实访问地址和端口,默认不开启,其值默认为server.address和server.port。
如你在虚拟主机上部署 Davinci,启动端口为8080,该主机真实访问IP地址为192.168.1.1,你将虚拟主机的8080端口映射到80端口,则需打开 access 配置项,否则将不能正常使用 Davinci 的部分功能,如激活账号、下载、分享等。
2.4.2 datasource 配置
这里的 datasource 配置指 Davinci 系统的数据源,配置如下:
### 配置MySQL的 url, username, password 信息
datasource:
url: jdbc:mysql://hadoop001:3306/davinci?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
username: bigdata
password: bigdata
driver-class-name: com.mysql.jdbc.Driver
initial-size: 2
min-idle: 1
max-wait: 60000
max-active: 10
将上一步初始化的数据库地址配置到url中,url 中的参数不要做任何修改,然后修改正确的数据库访问用户和密码即username和password。
initial-size、min-idle、max-wait、max-active是连接池参数,具体属性请参考DruidDataSource配置属性列表
2.4.3 mail 配置
注:0.3 版本用户采用注册激活的方式维护,所以 mail 配置是此版本必不可少的,且 mail 配置出错率较高,请务必注意
### Davinci 使用注册–邮件激活添加用户, 所以 mail 配置是必不可少的, 且 mail 配置出错率较高,请务必注意
### mail配置(这个最重要, 因为Davinci0.3 主要注册账号才能使用, 而注册账号只能是使用Email邮箱, 这里呢我们可以配置自己公司的公共邮箱,如果是一些大厂的邮箱,可以根据以下图片ip进行配置邮箱地址)
### 个人邮箱配置
# mail:
# # 邮箱host, 如果是公司内部邮箱的话, 可以找网管部门询问公司邮箱IP及段口
# host: smtp.163.com
# port: 465
# # 公共邮箱地址(username、password)
# username: xxxxxxxxxxxxx@163.com
# # fromAddress 为可选项, 默认为 username 的值, 其存在的意义在于部分邮箱服务可能在认证时 username 和 addresss 不同,这时需要配置 fromAddress 作为邮件真实发送地址,username 为连接邮箱服务认证使用
# fromAddress: xxxxxxxxxxxxx@163.com
# password: ****************************
# # 邮箱发件人名称
# nickname: Davinci
### 公司邮箱配置
mail:
# 邮箱host, 如果是公司内部邮箱的话, 可以找网管部门询问公司邮箱IP及段口
host: smtp.exmail.qq.com
port: 465
# 公共邮箱地址(username、password)
username: jira@joyshebao.com
# fromAddress 为可选项, 默认为 username 的值, 其存在的意义在于部分邮箱服务可能在认证时 username 和 addresss 不同,这时需要配置 fromAddress 作为邮件真实发送地址,username 为连接邮箱服务认证使用
fromAddress: jira@joyshebao.com
password: **********************
# 邮箱发件人名称
nickname: Davinci
properties:
smtp:
starttls:
enable: true
required: true
auth: true
mail:
smtp:
ssl:
### 这里必须设置true,不然登录界面为空
enable: true
mail 配置:
2.4.4 phantomjs 配置:
phantomjs 是用来定时发送报表截图的,只需要配置安装好的 phantomjs 可执行文件地址即可
### default_browser 为默认截图浏览器, 其值为PHANTOMJS或CHROME. 如果选择PHANTOMJS, 则只需配置 phantomjs_path; 否则只需配置 chromedriver_path
### 注意:phantomjs_path 需配置 PhantomJs 浏览器的可执行文件绝对地址, 而 chromedriver_path 需配置 Chromedriver (非Chrome)可执行文件绝对地址
screenshot:
default_browser: PHANTOMJS # PHANTOMJS or CHROME
timeout_second: 600
phantomjs_path: /opt/apps/phantomjs/bin/phantomjs
#chromedriver_path: $your_chromedriver_path$
#remote_webdriver_url: $your_remote_webdriver_url$
2.4.5 cache 配置(可选)
cache 这里用 redis 作为缓存服务,配置如下:
### Redis缓存
redis:
isEnable: false
host: 10.143.131.119
port: 6379
# cluster:
# nodes:
password:
database: 0
timeout: 1000
jedis:
pool:
max-active: 8
max-wait: 1
max-idle: 8
min-idle: 0
如果要开启 cache 服务,请将isEnable设为true,并要设置相关配置(单机方式请打开host和port,集群方式请打开cluster配置项,二者只能选择一种)。
2.4.6 其他配置
日志配置文件为config/logback.xml,如当前的日志配置不能满足你的要求,可自定义配置日志模式。
2.4.7 启动/停止
$DAVINCI3_HOME/bin/start-server.sh
$DAVINCI3_HOME/bin/stop-server.sh
$DAVINCI3_HOME/bin/restart-server.sh
访问地址: http://localhost:port
username: name@davinci.com
password: 123456
三、数据源配置
Davinci0.3 理论上支持所有有 JDBC 的数据源,我们默认支持的数据源有:
数据源名称 | 驱动类 |
mysql | com.mysql.jdbc.Driver |
oracle | oracle.jdbc.driver.OracleDriver |
sqlserver | com.microsoft.sqlserver.jdbc.SQLServerDriver |
h2 | org.h2.Driver |
phoenix | org.apache.phoenix.jdbc.PhoenixDriver |
mongodb | mongodb.jdbc.MongoDriver |
elasticSearch – presto | com.facebook.presto.jdbc.PrestoDriver |
moonbox | moonbox.jdbc.MbDriver |
cassandra | com.github.adejanovski.cassandra.jdbc.CassandraDriver |
clickhouse | ru.yandex.clickhouse.ClickHouseDriver |
kylin | org.apache.kylin.jdbc.Driver |
vertica | com.vertica.jdbc.Driver |
hana | com.sap.db.jdbc.Driver |
impala | com.cloudera.impala.jdbc41.Driver |
值得注意的是,Davinci 内部只提供了 MySql 的驱动包,也就是说,如果你要使用其他数据源,还需将对应驱动jar 包手动拷贝到lib目录并重新启动 Davinci 服务;Davinci 连接 ElasticSearch 目前使用 NLPchina提供的elasticsearch-sql,系统内部默认 ElasticSearch 版本为5.3.2,对应的 elasticsearch-sql 版本是5.3.2.0。
同理,如果你的 ElasticSearch 不是5.3.2,首先需要你手动下载 NLPchina 提供的对应版本的 jar,然后替换掉目前lib下的 jar,包括elasticsearch-xxx.jar、transport-xxx.jar、x-pack-api-xxx.jar、 x-pack-transport-xxx.jar、elasticsearch-sql-XXX.jar(xxx表示你的 ElasticSearch 版本号,XXX表示NLPchina 对应 elasticsearch-sql 版本号)。
另外值得注意的是,如果你的数据源不在以上列表中,也可以通过自定义配置注入数据源,否则没必要开启,除非你知道在做什么:
1)打开自定义数据源配置文件
mv datasource_driver.yml.example datasource_driver.yml
2)如下配置你的数据源,这里以 postgresql 为例
postgresql:
name: postgresql
desc: postgresql
driver: org.postgresql.Driver
keyword_prefix:
keyword_suffix:
alias_prefix: \"
alias_suffix: \"
注意
- keyword_prefix和keyword_suffix表示关键字前缀和后缀,假设使用 mysql 数据库,并将desc关键字作为字段使用,那么你的查询语句应该是:select desc from table 这里的 ‘`’ 就是前后缀,它们必须成对被配置,可以都为空。
- alias_prefix和alias_suffix表示别名前后缀,仍以 mysql 为例,假设你的 sql 语句如下:select column as '列' from table 。这里为 ‘column’ 起了别名为‘列’,那么‘’’将作为前后缀配置,前后缀必须成对被配置,可以都为空。
- 对于以上别名配置,你可以使用''将字符包起来,也可以使用转移符\,二者只能出现一种。
3)手动将相应的驱动 jar 包拷贝到lib目录下。
4)重启 Davinci 服务。
操作:
- 配置mysql数据源
- 连接 Hive
修改 $DAVINCI3_HOME/config/datasource_driver.yml.example文件名为 $DAVINCI3_HOME/config/datasource_driver.yml 使其生效,并在文件里配置 Hive 相关信息,如下:
在 datasource_driver.yml 中新增数据源配置,使用 version 字段标记数据源对应版本。version 字段为空时,默认读取 lib 目录下的驱动文件。这里以 hive 为例
- vim $DAVINCI3_HOME/config/datasource_driver.yml
### 注意这里的开头需要隔2个空格,按照yaml的文件格式书写 hive1.1.0: name: hive2 desc: hive version: 1.1.0 driver: org.apache.hive.jdbc.HiveDriver keyword_prefix: \` keyword_suffix: \` alias_prefix: \` alias_suffix: \`
在 $DAVINCI3_HOME/lib/ext 下创建相应数据库及其版本目录(如无 ext 目录,可自行创建) 如:$DAVINCI3_HOME/lib/ext/hive2/1.1.0
- 将对应数据源的驱动包放入步骤2 创建的目录
cd $DAVINCI3_HOME/lib/ext/hive2/1.1.0
# HiveServer2Auth.jar 这个身份认证的jar是自定义的,没有对hive做权限,就不需要
cp /opt/apps/software/jars/HiveServer2Auth.jar ./
cp /opt/apps/software/jars/commons-logging-1.2.jar ./
cp /opt/apps/software/jars/hadoop-common-2.6.0.jar ./
cp /opt/apps/software/jars/hive-common-1.1.0.jar ./
cp /opt/apps/software/jars/hive-cli-1.1.0.jar ./
cp /opt/apps/software/jars/hive-jdbc-1.1.0.jar ./
cp /opt/apps/software/jars/hive-metastore-1.1.0.jar ./
cp /opt/apps/software/jars/hive-service-1.1.0.jar ./
cp /opt/apps/software/jars/libthrift-0.9.3.jar ./
cp /opt/apps/software/jars/log4j-1.2.16.jar ./
cp /opt/apps/software/jars/slf4j-api-1.7.5.jar ./
cp /opt/apps/software/jars/slf4j-log4j12-1.7.5.jar ./
cp /opt/apps/software/jars/slf4j-simple-1.7.5.jar ./
cp /opt/apps/software/jars/velocity-engine-core-2.0.jar ./
- 重启服务器
- 在 source 新增或修改时选择数据源,详情参考 数据源 - 新增数据源
- 连接 Impala(建议用Impala查询Hive, 速度快)
在 $DAVINCI3_HOME/lib 下放置 Impala相关jar
注意: 添加Impala的jar按照连接hive的形式添加所有jar, 再额外添加 ImpalaJDBC.jar
ln -s /opt/apps/software/jars/ImpalaJDBC41-2.5.42.jar ImpalaJDBC41-2.5.42.jar
ln -s /opt/apps/software/jars/hadoop-common-2.6.0.jar hadoop-common-2.6.0.jar
ln -s /opt/apps/software/jars/hive-cli-1.1.0.jar hive-cli-1.1.0.jar
ln -s /opt/apps/software/jars/hive-jdbc-1.1.0.jar hive-jdbc-1.1.0.jar
ln -s /opt/apps/software/jars/hive-metastore-1.1.0.jar hive-metastore-1.1.0.jar
ln -s /opt/apps/software/jars/hive-service-1.1.0.jar hive-service-1.1.0.jar
ln -s /opt/apps/software/jars/libthrift-0.9.3.jar libthrift-0.9.3.jar
ln -s /opt/apps/software/jars/slf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar
ln -s /opt/apps/software/jars/slf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar
ln -s /opt/apps/software/jars/slf4j-simple-1.7.5.jar slf4j-simple-1.7.5.jar
ln -s /opt/apps/software/jars/velocity-engine-core-2.0.jar velocity-engine-core-2.0.jar
- 连接 Kylin
在 $DAVINCI3_HOME/lib 下放置 Kylin 相关jar
ln -s /opt/apps/software/jars/kylin-jdbc-2.6.6.jar kylin-jdbc-2.6.6.jar