druid.io可视化调研

Druid可视化

在Druid.io可视化问题上,调研了几个druid官方推荐工具,都自己试验了一遍,最后选择superset。

name 描述 实现 其他
grafana grafana的druid插件,比较简陋,github一年不更新了 js image
Metabase 支持数据库种类多,启动方便,支持json查询。图形化查询,只能有一个聚合字段,两个维度 Clojure image
imply-pivot 基于Plywood,部署方便,能构造复杂的查询。目前已经闭源了,没法二次开发 js image
airbnb/superset 权限管理完善,图形可定制性也比较高,github持续更新,集合了metabase的Dashboard和pivot的查询可定制性优点,部署相对麻烦 python+js image

metabase使用

需要jdk1.6以上的环境,使用的jdk1.8

1
2
wget http://downloads.metabase.com/v0.19.3/metabase.jar
java -jar metabase.jar

然后就可以访问:
http://localhost:3000/

初始化步骤:

  • 填写个人基本信息和用户名密码
  • 连接数据库基本信息,数据库类型选druid,取数据库名字,填host和broker port。
  • 关闭收集数据选项(Allow Metabase to anonymously collect usage events)

    使用

  • 新建dashboards,可以把每个表新建一个dashboard
  • 新建question,每个question相当于一个查询语句,但是每个question只能选一个聚合字段,可以显示不同类型的图形

|image

imply-pivot使用

环境

node+npm环境

1
2
npm i -g imply-pivot
pivot --druid druid-broker:8080

然后就可以访问了:
http://localhost:9090/

使用

  • 左上角选择表名,右上角选择展示方式
  • 左上的Dimensions包括时间和维度,可以拖到filter为where条件,拖到split为group by
  • 查询之后的表结果,可以选择之后点右键,select可以添加查询条件;view raw data,相当于drill down

image

图中split条件为xxx_id,xxx_id,xxx_id,xx_id。
filter中条件为时间为1天内,网络类型为4G,xxx-id为2。
点击某xxx=221660,xxx_id=1340之后可以添加这些条件,点select为查询添加了这些条件之后的结果,点view raw data为查询添加了这些条件中所有的结果。

superset部署

部署

在公司集群上部署,系统依赖可能需要root权限,需要运维帮忙

安装Python

1
2
3
4
5
wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz --no-check-certificate
tar -zxvf Python-3.5.2.tgz
cd Python-3.5.2/
./configure --prefix=/global/exec/fangyeqing/python-3.5.2/
make&&make install

环境变量

环境变量添加,将刚才configure设置的地址添加到环境变量中:

1
vi ~/.bash_profile

内容:

1
2
#python
export PATH=/global/exec/fangyeqing/python-3.5.2/bin:$PATH

source之后测试是否安装成功:

1
2
source ~/.bash_profile
python3

部署SuperSet

python,安装pip等一堆东西,需要运维帮忙,rpm安装的可以用rpm -qa openssl-devel查询

1
2
sudo yum upgrade python-setuptools
sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel libsasl2-devel openldap-devel

虚拟环境

1
2
3
4
5
6
7
8
pip3 install virtualenv
mkdir superset
cd superset
virtualenv venv
source ./venv/bin/activate #进入虚拟环境,后续命令之前都会有(venv)
deactivate # 退出虚拟环境

安装superset

1
2
pip install --upgrade setuptools pip # 更新pip和setuptools
pip install superset # Install

建立软连接,防止在安装过程中卡死

1
2
ln -s /disk2/fangyq/install/.superset/ ~/.superset #superset/db,初始化卡死
ln -s /disk2/fangyq/install/.cache/ ~/.cache #pip安装路径,容易出现配额不足

安装ldap、mysql需要的包

1
2
pip install python-ldap==2.3.13 # ldap登录
pip install mysql-python # 将db由默认的sqlite改为mysql

修改配置文件config.py,初始化(可以跳过这步,直接拷贝已有的.superset/db)

1
2
3
4
5
fabmanager create-admin --app superset # 管理员用户名、密码:eadata-service,Eadata201611
superset db upgrade # Initialize the database
superset load_examples # Load some data to play with
superset init # Create default roles and permissions

启动

1
superset runserver -p 8088 # 启动,-p端口,-d打开调试模式

更新版本,最好先备份一个config.py文件

1
2
3
pip install superset --upgrade
superset db upgrade
superset init

数据库

对比着刚才的安装操作,可以看下数据库怎么存的

1
2
3
4
5
6
7
8
sqlite3 ~/.superset/superset.db
.help
.datatbase
.tables
.schema ab_user_role
select * from ab_user_role;
#修改为管理员用户
update ab_user_role set role_id=1 where user_id=8;

执行完fabmanager

1
2
3
4
5
6
7
8
9
10
11
12
+-------------------------+
| Tables_in_superset |
+-------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
+-------------------------+

ab_user为用户表
ab_user_role为用户权限表

执行完superset db upgrade

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
+-------------------------+
| Tables_in_superset |
+-------------------------+
| ab_permission |
| ab_permission_view |
| ab_permission_view_role |
| ab_register_user |
| ab_role |
| ab_user |
| ab_user_role |
| ab_view_menu |
| access_request |
| alembic_version |
| clusters |
| columns |
| css_templates |
| dashboard_slices |
| dashboard_user |
| dashboards |
| datasources |
| dbs |
| favstar |
| logs |
| metrics |
| query |
| slice_user |
| slices |
| sql_metrics |
| table_columns |
| tables |
| url |
+-------------------------+

这些信息也可以直接从SQL Lab–SQL Editor中直接看到。

superset配置

如果之前配置过,直接拷贝配置.superset/db也可

顶部选项卡

Dashboard:展示板,可以每张表建一个,展示这张表需要展示的
Slices:Dashboard中的分片,相当于一个查询语句
Source:数据源

Cluster配置

顶部选项卡Source-Druid Cluster-“+”新建

选项 填入内容
Cluster druid集群名,随意
Coordinator Host coordinator地址
Coordinator Port coordinator端口
Coordinator Endpoint 默认值:druid/coordinator/v1/metadata
Broker Host broker地址
Broker Port broker端口
Broker Endpoint 默认值:druid/v2
Cache Timeout 缓存时间:s

DataSource配置

Source-Refresh Druid MetaData

读取元数据,第一次可能会等待几分钟,开调试模式可以看到debug日志里自动同步了druid里的所有表。

日志输出内容:

1
2
3
4
2016-10-28 11:42:58,117:INFO:root:Syncing Druid datasource [x1_stat]
2016-10-28 11:43:00,313:INFO:root:Syncing Druid datasource [x2_stat]
2016-10-28 11:43:01,323:INFO:root:Syncing Druid datasource [x3_stat]
2016-10-28 11:43:02,065:INFO:root:Syncing Druid datasource [x4_stat]

Source-DataSource

在对应的dataSource处edit record

  • List Druid Column选项卡中,可以看到自动导入了column,但是metrix聚合字段并没有选择聚合方法,编辑选择SUM或者MIN,MAX之类的聚合方法。druid lookup也可以在本选项卡中配置。
  • Detail选项卡中,Time offset填入时区偏移,配置已配成本地时区。点save保存。
  • List Druid Metrix选项卡中,List Druid Column中刚才添加的聚合字段会看到。同时也可以通过“Metric”字段编辑自定义图中显示的中文或者post-agg。

post-agg示例:展示率=展示/竞价

1
2
3
4
5
6
7
8
9
10
11
12
{
"type": "arithmetic",
"name": "bid_rates",
"fn": "/",
"fields": [{
"type": "fieldAccess",
"fieldName": "展示"
}, {
"type": "fieldAccess",
"fieldName": "竞价"
}]
}

lookup示例:把sponsor_id对应到广告商名字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"type":"extraction",
"dimension":"sponsor_id",
"outputName":"sponsor广告商",
"extractionFn" : {
"type" : "lookup",
"lookup" : {
"type" : "namespace",
"namespace" : "sponsorId_name"
},
"retainMissingValue" : true,
"injective" : true
}
}

DashBoard添加

  • 步骤
    以Source-Druid DataSource做入口,选某个表进行编辑,然后保存成Slices,添加到DashBoard
  • 界面
    左边栏为查询条件,右边为查询结果。

Query为查询,Save为保存到Slices
Table View为结果显示样式(图,表类型),
查询出结果之后,左边栏可以对图形属性进行编辑

1
2
3
Legend:为显示或隐藏group by
Y Log:Y轴取对数,如果值相差特别大,可以勾上
X axis format:选Time Series时可以调整日期格式

角色权限配置

Admin新建用户时,有几种权限可以选择Admin、Alpha、Gamma、Public。

  • Admin:有所有权限,创建用户、权限管理、访问所有数据源、
  • Alpha:可以访问、添加、修改所有数据源。添加和修改面板和切面。
  • Gamma:访问dashboard需要添加访问datasource的权限。搜索:“datasource access on”。另外,配置时,可以搜索druid有关的权限,全部删掉。
文章目录
  1. 1. Druid可视化
  2. 2. metabase使用
    1. 2.1. 初始化步骤:
    2. 2.2. 使用
  3. 3. imply-pivot使用
    1. 3.1. 环境
    2. 3.2. 使用
  4. 4. superset部署
    1. 4.1. 部署
      1. 4.1.1. 安装Python
      2. 4.1.2. 环境变量
      3. 4.1.3. 部署SuperSet
      4. 4.1.4. 数据库
  5. 5. superset配置
    1. 5.1. 顶部选项卡
    2. 5.2. Cluster配置
    3. 5.3. DataSource配置
      1. 5.3.1. Source-Refresh Druid MetaData
      2. 5.3.2. Source-DataSource
      3. 5.3.3. DashBoard添加
      4. 5.3.4. 角色权限配置
|