开启跨源查询功能
跨源查询是指,多个不同的数据源之间的交叉查询,如一个 MySQL 数据源和一个 Oracle 数据源之间的数据交叉分析。详细说明见跨源查询。
在私有部署中要使用该功能,需要安装 Sugar BI 的跨源查询引擎,并且在 Sugar BI 的平台环境变量中加入启用配置(Sugar BI 的 4.0.1 及之后版本才支持,并且 2 账号的私有部署版本的 Sugar BI 不支持跨源查询功能,详见私有部署版定价)。下面分两步来描述如何在私有部署中开启跨源查询功能:
1、安装部署跨源查询引擎
和 Sugar BI 平台本身一样,Sugar BI 跨源查询引擎也是使用容器化的安装方式,您可以使用 纯 Docker、Swarm、Kubernetes 三种方式来进行部署安装。
下载容器镜像
在部署之前,您需要下载 Sugar BI 跨源查询引擎的容器镜像,同样是两种方式:
A、百度智能云的 docker 镜像服务
Sugar BI 的跨源查询镜像已经上传到百度智能云 docker 镜像服务,您可以使用以下命令获取 Sugar BI 跨源查询镜像:
1docker pull registry.baidubce.com/sugarbi/sugar-presto:2.2.0
2docker tag registry.baidubce.com/sugarbi/sugar-presto:2.2.0 sugarbi/sugar-presto:2.2.0
3// 查看刚刚拉取的镜像
4docker images
B、直接在线下载
如果您的部署机器不能连接互联网,您可以在联网的机器上点击这里下载: https://sugar-docker-image.cdn.bcebos.com/sugarbi-presto-2.2.0.tar.gz(如果鼠标点击下载不了,可以复制该地址在浏览器中打开),然后将下载的安装包拷贝到部署机器上,注意:如果您同时部署到多台机器上,需要将下载的安装包文件拷贝到所有部署机器上,并且以下的操作也需要在所有部署机器上执行。
在部署的机器上,进入到您拷贝的安装包的同目录下,
1docker load -i ./sugarbi-presto-2.2.0.tar.gz
2// 上面的命令会执行数十秒,然后执行以下命令查看刚刚load的镜像
3docker images
软硬件要求
软件环境
和 Sugar BI 本身一样,Sugar BI 的跨源查询引擎需要您的服务区安装 Docker,推荐版本为 v17 及以上。 Sugar BI 跨源查询引擎可以直接运行在单机 Docker 环境上,如果需要集群化、高可用,可以使用 Docker 自带的 Swarm 或者 Kubernetes,您可以自行了解这些基础环境。
硬件推荐配置
Sugar BI 的跨源查询引擎是基于开源的Presto进行开发,安装时需要部署一个 coordinator 节点以及多个 worker 节点(推荐最少两个)。每个节点的最低推荐配置:内存 16G 或以上、CPU(8 核或以上,如 Intel 至强 E5、酷睿 i7 或以上)、硬盘(256GB SSD 或以上)。当然,如果您的单台服务器配置足够高,也可以使用一台服务器来使用纯 Docker 的方式部署这最少的三个节点。另外,跨源查询引擎也完全可以和 Sugar BI 本身部署在同一台机器或者同一个集群中。
一、纯 Docker 部署
下面将逐一介绍如何部署如上描述的两种节点:
coordinator 节点
首先需要明确部署 coordinator 节点的机器的 IP 地址(如:192.168.1.1),将下面的 XXXXXX 替换为该 IP。另外,和 Sugar BI 一样也需要一个一模一样 env 文件,复制过来即可,然后在 env 文件的目录下执行以下命令来启动 coordinator 节点:
1docker run --restart unless-stopped -d -p 8001:8080 --name sugar-presto-coordinator --env-file env sugarbi/sugar-presto:2.2.0 http://XXXXXX:8001 coordinator
worker 节点
部署 worker 节点时,同样也需要将下面的 XXXXXX 替换为 coordinator 节点的机器的 IP 地址(注意是 coordinator 节点的 IP),下面使用两行命令分别在两台服务器上启动了两个 worker 节点(sugar-presto-worker01 和 sugar-presto-worker02。如果您的单台服务器配置足够高,也可以使用一台服务器来部署所有的 coordinator 和 worker 三个节点)。
注意:同样需要 env 文件,操作方式和 coordinator 节点部署时完全一样即可:
1docker run --restart unless-stopped -d --name sugar-presto-worker01 --env-file env sugarbi/sugar-presto:2.2.0 http://XXXXXX:8001 worker
2docker run --restart unless-stopped -d --name sugar-presto-worker02 --env-file env sugarbi/sugar-presto:2.2.0 http://XXXXXX:8001 worker
coordinator 和 worker 节点部署完成之后,您可以使用浏览器访问 coordinator 节点的 8001 端口,即可看到大体如下的内容(下图红框中即表示当前部署成功的 worker 节点数):

二、Swarm 集群部署
Docker 多机集群模式,我们推荐使用 Docker 自带的 Swarm,关于如何使用 Swarm 请参考 Docker 官方文档。使用 Swarm 部署 Sugar BI 跨源查询引擎分两步:
- 1、新建一个
sugar-presto-compose.yml文件,并用文本编辑器打开,复制以下的内容并填写相应部分(注意有两部分 MySQL 相关的内容需要填写):
1version: '3.6'
2
3services:
4 coordinator:
5 image: sugarbi/sugar-presto:2.2.0
6 deploy:
7 mode: replicated
8 replicas: 1
9 restart_policy:
10 condition: on-failure
11 ports:
12 - '8001:8080'
13 networks:
14 - overlay
15 command: http://coordinator:8080 coordinator
16 environment:
17 sugar_can_connect_local_ip: 'true'
18 # MySQL数据库相关
19 sugar_db_username: root
20 sugar_db_password: lovesugar123
21 sugar_db_database: sugarbi
22 sugar_db_host: 填写您安装MySQL机器的IP,即使是本机也不能使用localhost和127.0.0.1
23 sugar_db_port: 3306
24 worker:
25 image: sugarbi/sugar-presto:2.2.0
26 deploy:
27 mode: replicated
28 replicas: 2
29 restart_policy:
30 condition: on-failure
31 networks:
32 - overlay
33 command: http://coordinator:8080 worker
34 environment:
35 sugar_can_connect_local_ip: 'true'
36 # MySQL数据库相关
37 sugar_db_username: root
38 sugar_db_password: lovesugar123
39 sugar_db_database: sugarbi
40 sugar_db_host: 填写您安装MySQL机器的IP,即使是本机也不能使用localhost和127.0.0.1
41 sugar_db_port: 3306
42networks:
43 overlay:
- 2、在
sugar-presto-compose.yml文件的目录下执行以下命令来启动跨源查询引擎
1docker stack deploy --compose-file sugar-presto-compose.yml sugar-presto
最后在浏览器上访问 coordinator 节点的 8001 端口,即可看到大体如下的内容(下图红框中即表示当前部署成功的 worker 节点数):

三、Kubernetes 集群部署
- 1、新建一个
sugar-presto.yaml文件,并用文本编辑器打开,复制以下的内容并填写相应部分(注意有两部分 MySQL 相关的内容需要填写):
1# coordinator 节点部署
2apiVersion: apps/v1
3kind: Deployment
4metadata:
5 name: 'sugar-presto-coordinator'
6 labels:
7 app: 'sugar-presto-coordinator'
8spec:
9 replicas: 1
10 selector:
11 matchLabels:
12 app: 'sugar-presto-coordinator'
13 template:
14 metadata:
15 labels:
16 app: 'sugar-presto-coordinator'
17 spec:
18 containers:
19 - name: 'sugar-presto-coordinator-container'
20 image: sugarbi/sugar-presto:2.2.0
21 args: ['http://sugar-presto-coordinator:8080', 'coordinator']
22 imagePullPolicy: 'IfNotPresent'
23 ports:
24 - name: coordinator
25 containerPort: 8080
26 env:
27 - name: 'sugar_can_connect_local_ip'
28 value: 'true'
29 # MySQL数据库相关
30 - name: 'sugar_db_host'
31 value: 填写您安装MySQL机器的IP,即使是本机也不能使用localhost和127.0.0.1
32 - name: 'sugar_db_port'
33 value: '3306'
34 - name: 'sugar_db_database'
35 value: 'sugarbi'
36 - name: 'sugar_db_username'
37 value: 'root'
38 - name: 'sugar_db_password'
39 value: 'lovesugar123'
40---
41# worker 节点部署
42apiVersion: apps/v1
43kind: Deployment
44metadata:
45 name: 'sugar-presto-worker'
46 labels:
47 app: 'sugar-presto-worker'
48spec:
49 replicas: 2
50 selector:
51 matchLabels:
52 app: 'sugar-presto-worker'
53 template:
54 metadata:
55 labels:
56 app: 'sugar-presto-worker'
57 spec:
58 containers:
59 - name: 'sugar-presto-worker-container'
60 image: sugarbi/sugar-presto:2.2.0
61 args: ['http://sugar-presto-coordinator:8080', 'worker']
62 imagePullPolicy: 'IfNotPresent'
63 ports:
64 - name: worker
65 containerPort: 8080
66 env:
67 - name: 'sugar_can_connect_local_ip'
68 value: 'true'
69 # MySQL数据库相关
70 - name: 'sugar_db_host'
71 value: 填写您安装MySQL机器的IP,即使是本机也不能使用localhost和127.0.0.1
72 - name: 'sugar_db_port'
73 value: '3306'
74 - name: 'sugar_db_database'
75 value: 'sugarbi'
76 - name: 'sugar_db_username'
77 value: 'root'
78 - name: 'sugar_db_password'
79 value: 'lovesugar123'
80---
81# Service
82apiVersion: v1
83kind: Service
84metadata:
85 name: 'sugar-presto-coordinator'
86 labels:
87 app: 'sugar-presto-coordinator'
88spec:
89 type: NodePort
90 ports:
91 - name: sugar-presto-coordinator
92 port: 8080
93 nodePort: 32581 # 这块使用NodePort方式,并且配置了nodePort为32581端口,可以根据实际情况修改
94 selector:
95 app: 'sugar-presto-coordinator'
- 2、在
sugar-presto.yaml文件的目录下执行以下命令来启动 Sugar BI 的跨源查询引擎
1kubectl apply -f sugar-presto.yaml
最后在浏览器上访问 coordinator 节点的 32581 端口,即可看到大体如下的内容(下图红框中即表示当前部署成功的 worker 节点数):

2、平台中启用跨源查询功能
跨源查询引擎部署成功之后,就可以在 Sugar BI 中来启用该功能了,需要在 Sugar BI 本身的 env 配置文件中增加以下配置(同理,Swarm、Kubernetes 部署方式也是同样的添加相应的环境变量配置即可)。
下面的 XXXXXX 需要替换为 coordinator 节点的机器的 IP 地址,端口 8001(k8s 方式下就是上面文档中的 32581 端口) 也需要根据您的实际部署情况来进行调整:
1sugar_federated_host=XXXXXX
2sugar_federated_port=8001或者32581
env 文件更新之后需要重启 Sugar BI,重启成功后在 Sugar BI 的数据源管理页面即可对数据源「开启跨源查询」功能,如下图:

如上图对某个数据源「开启跨源查询」后,「跨源状态」会变为 待生效,目前 Sugar BI 中的生效时间默认在每天凌晨 2 点,所以您开启跨源查询后,建议隔天确认一下状态变为 已生效 之后再进行后面的步骤。跨源查询功能的使用详见跨源交叉分析。
部署验证
部署完成后,可进入「组织管理」->「外部模块部署验证」进行验证。
