跳到主要内容

数据源:StarRocks

· 阅读需 7 分钟
Tiven Wang

本文将介绍如何私有化部署元数分析云,并且与 StarRocks 数据源进行集成,为企业和数据分析团队提供强大的多维数据指标分析能力。在这篇文章中,我们将用到 Docker Compose 等工具来构建和运行这个私有化部署程序。

简介

元数分析云是一款先进的数据分析平台,可以帮助用户从各种数据源中获取数据并进行高效的数据探索和可视化分析。StarRocks 是一个快速、可扩展的分布式 OLAP 数据库,特别适合多维数据分析。将这两个工具集成在一起,可以加强数据分析的能力,提高数据洞察力。

准备工作

在开始部署之前,确保您已经安装了 Docker 和 Docker Compose。您可以从官方网站下载和安装这些工具,并确保它们在您的系统上正常运行。

源代码

本文的源代码可以在 GitHub 上找到: https://github.com/meta-d/installer/

构建 StarRocks Docker 镜像

如果你的企业已经有了自己的 StarRocks 集群,可以跳过这一步。如果没有,可以通过构建 StarRocks docker 镜像与元数分析云程序一起部署,以便于测试和演示。

用于构建 StarRocks docker 镜像的 Dockerfile 文件可以在本文源代码的 docker/starrocks 文件夹中找到。此 StarRocks 镜像是将 fe 和 be 服务运行在了同一容器中,方便运行和测试,正式环境中不建议这样做。

Docker Compose 文件

接下来,我们将编写一个 Docker Compose 文件来定义整个集成部署环境。在项目 docker 目录下创建一个名为 docker-compose-with-starrocks.yml 的文件(此文件即为源代码中的内容),并使用以下内容:

docker-compose-with-starrocks.yml
version: '3'

networks:
overlay:
driver: bridge
starrocks_net:
ipam:
config:
- subnet: 172.20.80.0/16
volumes:
postgres_data:

services:
starrocks:
build:
context: ./starrocks
container_name: "metad-starrocks"
hostname: "fe"
ports:
- 8030:8030
- 9030:9030
- 8040:8040
volumes:
- ./starrocks/fe/meta:/opt/apache-doris/fe/meta
- ./starrocks/fe/log:/data/deploy/starrocks/fe/log
- ./starrocks/be/storage:/data/deploy/starrocks/be/storage
- ./starrocks/be/log:/data/deploy/starrocks/be/log
- ./initdb.d/:/docker-entrypoint-initdb.d/
networks:
- starrocks_net
...

文件中启动了一个 StarRocks 服务来模拟正式的集群环境,其他的元数分析云服务没有列出,请参考标准版的安装配置。

标准版部署

元数分析云标准版部署文件只包含元数分析云本身的容器服务,不包含 StarRocks 等第三方数据库或数据仓库服务。这样用户在启动元数分析云后可以连接自己的 StarRocks 集群进行数据分析。

关于元数分析云标准版的部署,请参考安装部署 Docker 集群

docker-compose.yml
version: '3'
name: 'metad-analytics-cloud'

networks:
overlay:
driver: bridge
volumes:
postgres_data:

services:
db:
image: postgres:12-alpine
container_name: metad-db
restart: always
environment:
POSTGRES_DB: ${DB_NAME:-postgres}
POSTGRES_USER: ${DB_USER:-postgres}
POSTGRES_PASSWORD: ${DB_PASS:-root}
healthcheck:
test:
[
"CMD-SHELL",
"psql postgres://$${POSTGRES_USER}:$${POSTGRES_PASSWORD}@localhost:5432/$${POSTGRES_DB} || exit 1",
]
volumes:
- postgres_data:/var/lib/postgresql/data
- ./initdb.d/:/docker-entrypoint-initdb.d/:ro
networks:
- overlay
redis:
image: redis:6-alpine
container_name: metad-redis
mem_limit: 100m
restart: unless-stopped
command: ["sh", "-c", "redis-server --requirepass $${REDIS_PASSWORD}"]
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD:-}
networks:
- overlay
olap:
image: metadc/metad-olap:1.0.0
container_name: metad-olap
restart: unless-stopped
healthcheck:
test: curl -m 5 --silent --fail --request GET http://localhost:8080/ | jq --exit-status -n 'inputs | if has("status") then .status=="UP" else false end' > /dev/null || exit 1
interval: 10s
timeout: 2s
retries: 10
links:
- db:${DB_HOST:-db}
environment:
OLAP_REDIS_DATABASE: 1
OLAP_REDIS_HOST: "redis"
OLAP_REDIS_PORT: 6379
OLAP_REDIS_PASSWORD: ${REDIS_PASSWORD:-}
networks:
- overlay
api:
image: registry.cn-hangzhou.aliyuncs.com/metad/metad-api:1.5.0
container_name: metad-api
environment:
INSTALLATION_MODE: ${INSTALLATION_MODE:-standalone}
HOST: ${API_HOST:-api}
PORT: 3000
NODE_ENV: ${NODE_ENV:-development}
DB_HOST: db
REDIS_HOST: redis
REDIS_PORT: 6379
OLAP_HOST: olap
OLAP_PORT: 8080
API_BASE_URL: ${API_BASE_URL:-http://localhost:3000}
DEMO: ${DEMO:-false}
STARROCKS_VERSION: ${}
STARROCKS_HOST: ${STARROCKS_HOST}
STARROCKS_PORT: ${STARROCKS_PORT}
STARROCKS_USER: ${STARROCKS_USER}
STARROCKS_PASS: ${STARROCKS_PASS}
STARROCKS_API_PORT: ${STARROCKS_API_PORT}
SENTRY_DSN: ${SENTRY_DSN:-}
LOGGER_LEVEL: ${LOGGER_LEVEL:-info}
env_file:
- .env
command: ["node", "main.js"]
restart: on-failure
depends_on:
- db
- redis
links:
- db:${DB_HOST:-db}
ports:
- ${API_PORT:-3000}:3000
volumes:
- ./public:/srv/pangolin/apps/
networks:
- overlay
webapp:
image: registry.cn-hangzhou.aliyuncs.com/metad/metad-webapp:1.5.0
container_name: metad-webapp
environment:
HOST: ${WEB_HOST:-webapp}
PORT: 4200
NODE_ENV: ${NODE_ENV:-development}
API_BASE_URL: ${API_BASE_URL:-http://localhost:3000}
CLIENT_BASE_URL: ${CLIENT_BASE_URL:-http://localhost:4200}
SENTRY_DSN: ${SENTRY_DSN:-}
DEFAULT_LATITUDE: ${DEFAULT_LATITUDE:-42.6459136}
DEFAULT_LONGITUDE: ${DEFAULT_LONGITUDE:-23.3332736}
DEFAULT_CURRENCY: ${DEFAULT_CURRENCY:-USD}
API_HOST: ${API_HOST:-api}
API_PORT: ${API_PORT:-3000}
env_file:
- .env
restart: on-failure
links:
- api:${API_HOST:-api}
depends_on:
- api
ports:
- ${WEBAPP_PORT:-80}:4200
networks:
- overlay

需要特别配置的是一下几个环境变量(其他的变量按标准版进行配置):

  • INSTALLATION_MODE=with-starrocks 配置安装模式为 with-starrocks,这样元数分析云在创建演示数据时会创建 StarRocks 数据源和导入数据。
  • DEMO=true 配置为演示模式,这样元数分析云在创建演示数据时会导入演示数据。
  • StarRocks 连接信息相关环境变量:
    • STARROCKS_VERSION=2.5
    • STARROCKS_HOST=
    • STARROCKS_PORT=9030
    • STARROCKS_USER=
    • STARROCKS_PASS=

将 StarRocks 连接信息配置成您的 StarRocks 集群的连接信息。

运行标准版程序

执行 Docker 启动命令:

docker-compose up -d

这将根据 Compose 文件中的定义,启动元数分析云服务,并进行系统数据初始化后便可以登录系统。

生成演示数据

通过 http://localhost/ 地址或你自己的域名访问元数分析云,使用 local.admin@mtda.cloud 管理员账号登录后,在首页点击 🔘生成演示样例 便可以生成演示数据,演示数据包括创建 StarRocks 数据源、导入数据、创建指标和故事仪表板等。在元数分析云中,您可以通过创建不同的仪表板、图表和查询来进行多维数据指标分析。使用元数分析云的丰富功能和直观界面,您可以轻松地对StarRocks数据源中的数据进行探索、过滤和可视化。

总结

通过使用 Docker Compose 和容器化技术,我们成功地集成了元数分析云和 StarRocks 数据源,为数据分析带来了更强大的多维数据指标分析能力。这样的集成可以帮助企业和数据团队更好地理解数据,做出明智的决策,并从数据中获取更深刻的洞察。同时,Docker 化的部署方式也简化了集成过程,使得部署和管理更加灵活和高效。

附录