1. 需求背景
1.1 大数据可视化面临的挑战
??大数据的兴起,关于数据的存储、计算技术层出不穷,但是最终的数据可视化呈现,数据的探索,也成为颇为重要的一环,这一块并没有像存储、计算技术栈那么百花齐放,大家在做大数据可视化时是否也曾有这些困惑呢?
- 传统的可视化对接传统数据库,对大数据组件的hive,spark,presto、elasticsearch、clickhouse等兼容性差,甚至不兼容,每次还需要多一道将大数据集群数据分发到传统数据库的冗余操作;
- 商用产品昂贵、甚至产品设置技术壁垒,很多甚至要求对接该商家的自己的大数据技术方可对接;
- 群众基数大的Excel拖来拽习惯、SQL操作的方便性,排斥自成一派的新技术,网页版账号登录优于用户下载客户端登录;
- 公司开发人员配置紧张,没有多余的人力自研大数据可视化平台,但是决策层希望有一个统一的可视化平台。
??诸如此类,确实令人头疼,现在就推荐一款解药metabase ——开源的大数据分析探索、可视化报表的神器。
1.2 大数据数据可视化的目标架构

图1.2 大数据数据可视化架构
??做事还是需要立一个目标架构,最后所有的事情都是围绕目标架构展开,才能越做越轻松,如图1.2,可是架构分为三个梯队;
- 第一梯队:ClickHouse、DorisDB、Kylin等优秀OLAP技术做存储,利用自带的连接引擎,快速响应,同时支持实时数据和离线数据的接入,外接可视化平台,通过权限管控后呈现给用户;
- 第二梯队:数据存在数据仓库Hive内或者NoSQL的Hbase,再通过较为优秀且高效的引擎Presto、Flink、Spark等接入可视化平台,通过权限管控后呈现给用户;
- 剩下就是一个特殊的,如MySQL,临时文件等文件的接入;
??注意:常用的也还有其它技术架构,如ELK架构,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。 kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。这个后续再讲,这里书归正传,先讲讲metabase。
2. metabase简介
2.1 metabase是什么?
??metabase 是一款开源的简易但强大同时又无缝兼容大数据和传统数据库的分析工具,帮助公司每一个人对企业数据的学习挖掘,进而达到更好的数据化运营和决策。
Metabase is a simple and powerful analytics tool which lets anyone learn and make decisions from their company’s data. No technical knowledge required! We hope you love it.
??官网 :https://www.metabase.com/
??所有版本下载 :Available Versions
??githup :https://github.com/metabase/metabase
??开发语言 :Clojure ,但是官网被封装编译成了一个Jar包,非常方便。
2.2 metabase能做什么?
- 连接不同数据库进行数据可视化;
- 数据分析,看板展示;
- 数据报表;
2.3 支持的数据源(大家最关心的)

图2.3 metabase支持的数据源列举
??目前自带不支持ClickHouse,需要自己加入ClickHouse的Jar驱动,该驱动Jar需要手动加载,在GitHub有同步更新,只是相比于Metabase有一定的滞后性,具体操作请参考后续的与clickhouse对接 对接章节。
3. 快速上手

图3.0 托拉拽零代码生成各类产品销售额及占比
??这里先展示下metabase 的最牛逼功能,托拉拽零代码生成各类产品销售额及占比,并保存在仪表盘内,可定时刷新,可分享他人等,这也是博主最喜欢的一个牌面,更多更刺激的体验,请跟随博主细细道来。
4. 部署安装
4.1 部署方式及版本
??metabse 支持部署方式也是非常丰富的,具体可参考官网的Installing and Running Metabase ,常用的部署如下:
在具有JRE的环境下直接运行Jar包 - 在Mac上作为App运行
- 在Docker上运行
- 在K8s上运行
- 在云平台运行,如AWS的 Elastic Beanstalk
- 其他
??博主就选了一个最简单的 在具有JRE的环境下直接运行Jar包 。 ??版本选择稍微有点讲究,如果觉得没必要集成ClickHouse的数据库连接,可以选择release的最新版本或者倒退1,2个版本;如果需要集成ClickHouse的数据库连接,因为Metabase自身是不支持的ClickHouse连接的(起码目前20210722不支持),所以需要下载适合的驱动包;
??github metabase-clickhouse-driver :metabase-clickhouse-driver;
??版本适配,目前20210723支持ClickHouse的最新版本是Metabase-0.38.1。
4.2 配置需求
??原则上只要能跑Jar包的JDK的平台即可,博主的配置如下:
4.3 下载安装
??进入metabase首页,然后如图4.3的操作,将metabase.jar下载下来,注意,选择你需要的版本,默认是最新的版本。
??所有版本下载 :Available Versions

图4.3 官网下载
??安装就更简单了,将下载的metabase.jar 上传到其中一台装有JDK的服务器,博主就放在了/data/metabase/metabase-0.38.1 ;
cd /data/metabase/metabase-0.38.1
mv metabase.jar metabase-0.38.1.jar
java -jar ./metabase-0.38.1.jar
??正常启动后,默认端口是3000 ;在能访问该服务器3000的机器上,打开浏览器,输入安装服务器的IP:3000(如10.215.23.506:3000) 即可跳出注册界面,填写登录名(邮箱),密码,然后就可以跳转图4.3.1的web首页,然后就可以实操下快速上手的案例。 
图4.3.1 网页登录
4.3 启动与关闭
??将日志打印收集到文件,后台启动进程;
cd /data/metabase
ln -sf metabase-0.38.1 current
cd /data/metabase/metabase-0.38.1
mkdir log
nohup java -jar ./metabase-0.38.1.jar >> ./log/metabase.log 2>&1 &
./log/metabase.log 在log文件夹下的创建metabase.log文件,并把日志追加进去 2>&1 0 表示stdin标准输入,用户键盘输入的内容 1 表示stdout标准输出,输出到显示屏的内容 2 表示stderr标准错误,报错内容 2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。 &为后台运行
??关闭服务;
jps
2578 Jps
2523 metabase-0.38.1.jar
kill -9 2523
5. 用户手册
5.1 与clickhouse对接
??先在github 下载ClickHouse的驱动包metabase-clickhouse-driver,注意下版本,选择的ClickHouse驱动要适配对应的metabase版本,同时ClickHouse版本只要通用能适配的JDBC版本一般都问题不大,博主的ClickHouse是20.8.12.2-1.el7.x86_64.rpm ,截至目前20210723,适配版本如下: 
图5.1 metabase-clickhouse-driver适配版本
??下载好驱动包clickhouse.metabase-driver.jar 后,再上传到/data/metabase/metabase-0.38.1/plugins ,该文件夹在第一次启动后初始化的时候生成的,专门存储和各大数据库的驱动。 ??然后再重启下metabase ,就可以看到如图5.1.2新建连接的时候多出了ClickHouse,一定要自己先配置下,看看能否正常连接到ClickHouse集群,因为这个受版本兼容,有一些坑。

图5.1.2 metabase-clickhouse-driver适配版本
??注意:metabase没有Test Connection 这样的按钮,添加数据库时直接点保存 即可,如果连接有误,保存会出错,提示连接超时等异常。 ??温馨提醒:如果要兼容ClickHouse,建议使用天生自带兼容ClickHouse的SuperSet,Metabase接ClickHouse容易有异常。
5.2 新建数据库连接
??主页点击右上角的设置 —>跳转图5.2—>管理员 —>菜单栏数据库 或者开始向导里面的添加一个数据库 —>跳转到添加数据库的配置也,然后配置好数据库实例,用户名,密码,点击保存 即可。

图5.2 metabase新建数据库连接
5.3 创建问题、可视化、保存、分享、删除图表(重点)

图5.3 创建问题
??metabase的核心就是帮助你解答关于数据层面的疑问,所以操作理念就是先
创建问题 ;
针对创建的问题有三种解答模式
原生查询 ,
自定义查询 ,
原生查询 ;
- 简单查询和自定义查询:就是通过拖拉拽的方式,让不具备sql功力的用户也能实现数据探索,数据报表,再把可视化的结果保存到仪表盘,也可以将创建问题先保存到某个目录下,后续再添加到仪表盘,如图5.3.1,设计的所有操作都不需要写代码,只需要点击图形选择即可;
图5.3.1 自定义查询的探索结果图表设计
??点击可视化后跳转图5.3.2; 
图5.3.3 自定义查询的探索结果图表可视化
- 原生查询,如图5.3.3,其实就是sql查询,可以写SQL语句,再做成可视化,直接保存到仪表盘,也可以先当创建问题先保存到某个目录下,后续再添加到仪表盘。
图5.3.3 原生查询的探索结果图表保存
??创建的问题最终都可以通过数据得到可视化图表,如图5.3.4,可以选择保存在不同的目录内分析 ,您的个人收藏 ,其他用户的个人收藏 ,也可以自己再建新的目录;每个目录可以调整访问者的权限;查看归档 其实就是类似回收站,废弃的创建问题和仪表盘必须先归档,才能删除。 
图5.3.2 创建问题的探索结果图表保存
5.4 创建仪表盘(报表)
??仪表盘其实就可以理解为报表,有两个办法创建仪表盘,第一是在你创建问题 保存后,会弹出询问你是否保存到仪表盘或者保存到新的仪表盘;第二就是直接点击主界面菜单栏的+ 号,将已经存在的创建问题 探索图表添加到新创建的仪表盘上。 
图5.4 创建仪表盘
6. 设置
??设置在主界面的菜单的右上角+ ,如图6.0。
- 账户设置:修改账户信息,用户名、密码等;
管理员(重点) :接下来细讲,添加人员、分组;添加数据库;公开分享,公开嵌入应用系统等;- 活动、帮助、关于Metabase:属于和Metabase开发运营公司的互动,有兴趣的可以参与;
- 注销:退出账号登录。

图6.0 设置界面
??接下来重点讲讲管理员里面的相关设置操作,首先,管理员是一个组,即只要是隶属管理员组的人员,都可以操作这些设置。
6.1 人员管理及权限
??人员管理分为人员 和分组 ,人员 是邀请新人员,默认是邀请人员邮箱。分组 默认是管理员 和所有用户 两个组,可以再添加,后续的权限是根据组来分配的,同时一个人员A,可以隶属于多个分组,权限是只要其中隶属的其中一个分组有权限,A就有权限访问该权限的图表或仪表盘以及创建问题的权限。 
图6.1.0 人员和分组
??权限是按组分配的,分为数据权限 和文件夹权限 ,如图6.1.1;
数据权限 :创建问题所用到的数据库的表,可以最细粒度可以指定表级别权限,默认是在库级别权限;文件夹权限 : 就是那些保存创建问题的图表,仪表盘的文件目录的权限。 
图6.1.1 权限管控
6.2 数据库
??之前讲过,就是添加新的数据库连接,将数据库,表模型加载到metabase用以数据探索和可视化呈现,如图6.2.0; 
图6.2.0 数据库
6.3 数据模型
??具体可以细到表,主要是给加在进来的表添加一些模型备注,使得使用者更好的使用该数据,分数据 ,过滤器 ,指标 ,如图6.3.0。
数据 :给表的每一个字段设置属性,可见性,实体键,实体名称、实体外键等;过滤器 :设置过滤条件,将不需要的表记录过略掉,如id不等于250的订单;指标 :根据原有数据计算出来的新列,作为一个指标列一起加载到表内。 
图6.3.0 数据模型
6.4 仪表盘嵌入业务系统或分享到非metabase注册用户
??如图6.4.0和图6.4.1,先要打开嵌入其他的应用中 和公开分享 的开关,使得两项功能生效,其中嵌入其他的应用中 还会生成一个密钥。 
图6.4.0 嵌入其他的应用中生效

图6.4.1 公开分享生效
??然后右上角设置 —>退出管理员 ,选择文件夹中其中一张你有权限的仪表盘,如图6.4.2,点击分享且编辑 ,就可跳转图6.4.3,生成公开链接 和公开嵌入 。

图6.4.2 分享且编辑
??如图6.4.3,生成公开链接和公开嵌入;
公开链接 :把链接地址复制给需要的人A,A计算没有Metabase的注册账号,也可以看到该仪表盘的报表页面,而且,如果仪表盘发生变更,A也可收到变更,如图6.4.4;公开嵌入 :一段前端嵌入的代码,如果仪表盘发生变更,应用系统内也会跟着变更。
图6.4.3 生成公开链接和公开嵌入

图6.4.4 无账号人员收到的公开链接网页
6.6 错误排查
??错误排查主要是可以查看任务日志等信息,界面上的两个任务一个是分析日志,一个是调度器信息,当遇到bug时可以来这里查看。 
图6.6 错误、日志排查
??以上就是关于Metabase的安装部署,使用的一个简单教程,更多更刺激的体验,可以参考官网文档Metabase Documentation,或者留言一起交流;
|