在 KubeSphere 中开启新一代云原生数仓 Databend
作者:尚卓燃(https://github.com/PsiACE),Databend 研发工程师,Apache OpenDAL (Incubating) PPMC。
前言
Databend 是一款完全面向云对象存储的新一代云原生数据仓库,专为弹性和高效设计,为您的大规模分析需求保驾护航。Databend 同时是一款符合 Apache-2.0 协议的开源软件,除了访问云服务(https://app.databend.com/)之外,用户还可以自己部署 Databend 生产集群以满足工作负载需要。
Databend 的典型使用场景包括:
- 实时分析平台,日志的快速查询与可视化。
- 云数据仓库,历史订单数据的多维度分析和报表生成。
- 混合云架构,统一管理和处理不同来源和格式的数据。
- 成本和性能敏感的 OLAP 场景,动态调整存储和计算资源。
KubeSphere 是在 Kubernetes 之上构建的以应用为中心的多租户容器平台,提供全栈的 IT 自动化运维的能力,可以管理多个节点上的容器化应用,提供高可用性、弹性扩缩容、服务发现、负载均衡等功能。
利用 KubeSphere 部署和管理 Databend 具有以下优点:
- 使用 Helm Charts 部署 Databend 集群,简化应用管理、部署过程和参数设置。
- 利用 Kubernetes 的特性来实现 Databend 集群的自动恢复、水平扩展、负载均衡等。
- 与 Kubernetes 上的其他服务或应用轻松集成和交互,如 MinIO、Prometheus、Grafana 等。
本文将会介绍如何使用 KubeSphere 创建和部署 Databend 高可用集群,并使用 QingStor 作为底层存储服务。
配置对象存储
对象存储是一种存储模型,它把数据作为对象来管理和访问,而不是文件或块。对象存储的优点包括:可扩展性、低成本、高可用性等。
Databend 完全面向对象存储而设计,在减少复杂性和成本的同时提高灵活性和效率。Databend 支持多种对象存储服务,如 AWS S3、Azure Blob、Google Cloud Storage、HDFS、Alibaba Cloud OSS、Tencent Cloud COS 等。您可以根据业务的需求和偏好选择合适的服务来存放你的数据。
这里我们以青云 QingStor 为例,介绍与 S3 兼容的对象存储相关配置的预先准备工作。
创建 Bucket
对象存储服务(QingStor)提供了一个无限容量的在线文件存储和访问平台。每个用户可创建多个存储空间(Bucket);您可以将任意类型文件通过控制台或 QingStor API 上传至一个存储空间(Bucket)中;存储空间(Bucket)支持访问控制,您可以将自己的存储空间(Bucket)开放给指定的用户,或所有用户。
登录青云控制台,选中对象存储服务,新建用于验证的 bucket 。
需要关注的是 bucket 的名字 <bucket>
和其所在的可用区 <region>
。
由于这里使用 s3 兼容服务,所以最后连接的 endpoint_url 是 s3.<bucket>.<region>.qingstor.com
。
创建 API 密钥
API 密钥(Access Key)可以让您通过发送 API 指令来访问青云的服务。API 密钥 ID 须作为参数包含在每一个请求中发送;而 API 密钥的私钥负责生成 API 请求串的签名,私钥需要被妥善保管,切勿外传。默认所有 IP 地址都可使用此密钥调用 API,设置 IP 白名单后只有白名单范围内的 IP 地址才可使用此密钥。
点击右上方菜单,选中 API 密钥,创建新的密钥用于 API 访问。
下载文件中的 qy_access_key_id
对应 access_key_id
,qy_secret_access_key
对应 secret_access_key
。
准备 KubeSphere 环境
KubeSphere(https://kubesphere.io)是在 Kubernetes 之上构建的开源容器平台,提供全栈的 IT 自动化运维的能力,简化企业的 DevOps 工作流。KubeSphere 已被海内外数万家企业采用。此外, KubeSphere 还拥有极为开放的生态,KubeSphere 在 OpenPitrix 的基础上,为用户提供了一个基于 Helm 的应用商店,用于应用生命周期管理。KubeSphere 应用商店让 ISV、开发者和用户能够在一站式服务中只需点击几下就可以上传、测试、安装和发布应用。目前 Databend 已入驻 KubeSphere 应用商店。
KubeSphere 环境搭建
All-in-One 模式部署测试环境
参考官方文档 。
在 Azure 上 Spot 一台机器:
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-1089-azure x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Tue Sep 6 02:09:16 UTC 2022
System load: 0.15 Processes: 376
Usage of /: 4.8% of 28.89GB Users logged in: 0
Memory usage: 0% IP address for eth0: 10.0.0.4
Swap usage: 0%
以 All-In-One 模式部署:
注意,需要在 root 下运行。
apt install socat conntrack containerd
systemctl daemon-reload
systemctl enable --now containerd
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.2 sh -
chmod +x kk
./kk create cluster --with-kubernetes v1.22.12 --with-kubesphere v3.3.1
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------------+------------+-------------+------------------+--------------+
| name | sudo | curl | openssl | ebtables | socat | ipset | ipvsadm | conntrack | chrony | docker | containerd | nfs client | ceph client | glusterfs client | time |
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------------+------------+-------------+------------------+--------------+
| ks | y | y | y | y | y | | | y | y | | 1.5.9-0ubuntu3.1 | | | | UTC 02:53:56 |
+------+------+------+---------+----------+-------+-------+---------+-----------+--------+--------+------------------+------------+-------------+------------------+--------------+
如果提示依赖缺失,可以根据需要安装,sudo apt install <name>
,这里只安装前两个。
Kubernetes Version ≥ 1.18 | |
---|---|
socat | Required |
conntrack | Required |
ebtables | Optional but recommended |
ipset | Optional but recommended |
ipvsadm | Optional but recommended |
访问 KubeSphere 控制面板。
执行下面命令查看关于登录的信息:
Collecting installation results ...
#####################################################
### Welcome to KubeSphere! ###
#####################################################
Console: http://10.0.0.4:30880
Account: admin
Password: P@88w0rd
NOTES:
1. After you log into the console, please check the
monitoring status of service components in
"Cluster Management". If any service is not
ready, please wait patiently until all components
are up and running.
2. Please change the default password after login.
#####################################################
https://kubesphere.io 2022-09-06 15:41:44
#####################################################
访问 30880
端口,并使用用户名密码登录,就可以访问 KubeSphere 。为确保能够访问 KubeSphere 和其他服务,请根据实际情况在云平台控制面板为相应端口添加入站出站规则。
KubeSphere Cloud 创建演示环境
创建轻量集群服务:
注册并登录 https://kubesphere.cloud 之后,可以轻松创建轻量集群服务。
使用默认配置创建免费版集群即可尝鲜体验,个人用户每月有 10 小时免费额度。
访问 KubeSphere 控制面板。
点击进入 KubeSphere
,使用临时帐号密码登录。
插件启用
登录后的界面,如下图所示:
如需使用应用商店,可以参考 KubeSphere 文档 - 在安装后启用应用商店 启用。
开启后可以在应用商店中搜索找到 Databend ,结果类似下图。
企业空间与项目管理
点击平台管理
进入访问控制
页面,选中企业空间
,点击创建
,在名称
一栏填写你想使用的名称,比如 databend
。
在侧边栏选中项目
,点击创建
,分别创建为 databend-meta
和 databend-query
准备的项目。创建后效果如图所示:
部署 Databend
应用模板载入
虽然应用商店中已经有 Databend 可供选用,但版本较旧(v0.8.122-nightly),新的 PR(v1.0.3-nightly)需要等合并之后才可用,所以建议添加 Databend 官方维护的 helm-charts 作为应用模板。
Databend 官方提供了 Helm Charts ,而 KubeSphere 也支持使用 Helm Charts 应用模板。
应用模板是用户上传、交付和管理应用的一种方式。一般来说,根据一个应用的功能以及与外部环境通信的方式,它可以由一个或多个 Kubernetes 工作负载(例如部署、有状态副本集和守护进程集)和服务组成。作为应用模板上传的应用基于 Helm 包构建。
可以将 Helm Chart 交付至 KubeSphere 的公共仓库,或者导入私有应用仓库来提供应用模板。
https://kubesphere.io/zh/docs/v3.3/workspace-administration/upload-helm-based-application/
在企业空间侧边栏选中 应用管理 ,点击 应用仓库 ,添加 Databend 官方维护的 Helm Charts 。
待状态变为成功后,就可以基于模板安装部署新的 Databend 应用。
Databend 部署模型
参考文档。
典型的 Databend 集群架构如下图所示,需要分别部署多个 Meta 和 Query 节点:
在集群模式下部署 Databend 时,首先需要启动一个 Meta节点,然后设置并启动其他 Meta 节点以加入第一个 Meta 节点,形成集群。在成功启动所有 Meta 节点后,逐个启动 Query 节点。每个 Query 节点在启动后自动注册到 Meta 节点以形成集群。
Meta 高可用集群部署
选中 databend-meta
项目。点击侧边栏应用负载
,选中应用
。点击创建
,并选中从应用模板
。 下拉栏中选中之前添加的 Databend ,效果如图:
选中 databend-meta
,点击安装
,设定应用名称及版本,我们推荐总是使用最新版本,以获得更好的体验。
使用示例设置,创建 3 副本的 databend-meta
节点形成集群。生产环境下推荐至少使用 3 副本高可用集群,可以参考 Databend 官方文档进行配置。
bootstrap: true
replicaCount: 3
persistence:
size: 5Gi # 考虑到宿主机资源有限,仅供示范
serviceMonitor:
enabled: true
Query 集群部署
在 Meta 节点的所有副本就绪之后,就可以开始部署 Query 集群。
Query 节点部署的前置步骤与 Meta 节点类似。进入 databend-query
项目,仿照之前的步骤选中 databend-query 应用模板进行创建即可。
配置中需要关注的部分是:
- databend-meta 连接:这里的地址取决于之前部署的 Meta 集群的相关信息。
- 存储方式:本示例连接的是 QingStor ,使用 S3 兼容协议,所以需要特别关注
endpoint_url
。 - 内置用户创建:创建一个名为
databend
密码为databend
的内置用户,以方便在非 localhost 情况下访问。
这里启动的是一个单副本的 Query 集群,实际情况下可以根据工作负载规模灵活调整。
replicaCount: 1
config:
query:
clsuterId: default
# add builtin user
users:
- name: databend
# available type: sha256_password, double_sha1_password, no_password, jwt
authType: double_sha1_password
# echo -n "databend" | sha1sum | cut -d' ' -f1 | xxd -r -p | sha1sum
authString: 3081f32caef285c232d066033c89a78d88a6d8a5
meta:
# Set endpoints to use remote meta service
# depends on previous deployed meta service、namespace and nodes
endpoints:
- "databend-meta-0.databend-meta.databend-meta.svc:9191"
- "databend-meta-1.databend-meta.databend-meta.svc:9191"
- "databend-meta-2.databend-meta.databend-meta.svc:9191"
storage:
# s3, oss
type: s3
s3:
bucket: "<bucket>"
endpoint_url: "https://s3.<region>.qingstor.com" # for qingstor
access_key_id: "<key>"
secret_access_key: "<secret>"
# [recommended] enable monitoring service
serviceMonitor:
enabled: true
# [recommended] enable access from outside cluster
service:
type: LoadBalancer
KubeSphere 监控
KubeSphere 观测工作负载
待状态变为运行中
即可,这时可以很方便使用 KubeSphere 观测工作负载。
资源状态
- databend-meta
- databend-query
监控
- databend-meta
- databend-query
可访问性测试
节点状态检测
如果是在 All-in-One 模式下部署,我们可以轻松使用容器组 IP 地址来测试节点状态。
psiace@ks:~$ curl 10.233.107.113:8080/v1/health
{"status":"pass"}
而使用 KubeSphere Cloud 部署时,可以在 KubeSphere Cloud 控制面板,选择网络
以创建访问规则。
这里以 8080(Admin API)和 8000(Query HTTP Handler)端口为例:
创建后的结果如下图所示:
同样我们可以使用 curl 来检查节点状态。
psiace@ks:~$ curl https://admin-gfkyzxaz.c.kubesphere.cloud:30443/v1/health
{"status":"pass"}
执行查询
bendsql 是一个十分方便的命令行界面工具,可以帮助您顺畅高效地使用 Databend 。bendsql 也支持连接 Databend Cloud ,管理计算集群和运行 SQL 查询。
安装 bendsql
$ go install github.com/databendcloud/bendsql/cmd/bendsql@latest
连接 databend 集群(以 KubeSphere Cloud 为例)
$ bendsql connect -H query-gfkyzxaz.c.kubesphere.cloud -P 30443 -u databend -p databend --ssl
Connected to Databend on Host: query-gfkyzxaz.c.kubesphere.cloud
Version: DatabendQuery v0.9.57-nightly-df858a1(rust-1.68.0-nightly-2023-03-01T01:23:11.56066902Z)
尝试执行查询
$ bendsql query
Connected with driver databend (DatabendQuery v0.9.57-nightly-df858a1(rust-1.68.0-nightly-2023-03-01T01:23:11.56066902Z))
Type "help" for help.
dd:databend@query-gfkyzxaz/default=> SELECT avg(number) FROM numbers(1000);
+-------------+
| avg(number) |
+-------------+
| 499.5 |
+-------------+
(1 row)
总结
本文介绍了如何使用 KubeSphere 创建和部署 Databend 高可用集群,后端存储服务采用 QingStor ,最后使用 bendsql 演示连接集群和执行查询。
本文由博客一文多发平台 OpenWrite 发布!
在 KubeSphere 中开启新一代云原生数仓 Databend的更多相关文章
- 文盘Rust -- rust 连接云上数仓 starwift
作者:京东云 贾世闻 最近想看看 rust 如何集成 clickhouse,又犯了好吃懒做的心理(不想自己建环境),刚好京东云发布了兼容ck 的云原生数仓 Starwfit,于是搞了个实例折腾一番. ...
- 使用 Iceberg on Kubernetes 打造新一代云原生数据湖
背景 大数据发展至今,按照 Google 2003年发布的<The Google File System>第一篇论文算起,已走过17个年头.可惜的是 Google 当时并没有开源其技术,& ...
- 阿里下一代云分析型数据库AnalyticDB入选Forrester云化数仓象限
前言 近期, 全球权威IT咨询机构Forrester发布"The Forrester Wave: CloudData Warehouse Q4 2018"研究报告,阿里巴巴分析型数 ...
- DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路
简介: 数据库将面临怎样的变革?云原生数据库与数据仓库有哪些独特优势?在日前的 DTCC 2020大会上,阿里巴巴集团副总裁.阿里云数据库产品事业部总裁.ACM杰出科学家李飞飞就<云原生分布式数 ...
- 重大升级!灵雀云发布全栈云原生开放平台ACP 3.0
云原生技术的发展正在改变全球软件业的格局,随着云原生技术生态体系的日趋完善,灵雀云的云原生平台也进入了成熟阶段.近日,灵雀云发布重大产品升级,推出全栈云原生开放平台ACP 3.0.作为面向企业级用户的 ...
- 牛年 dotnet云原生技术趋势
首先祝大家:新年快乐,牛年大吉,牛年发发发! 2020年的春节,新冠疫情使得全球业务停滞不前,那时候,没有人知道会发生什么,因此会议被取消,合同被搁置,项目被推迟,一切似乎都停止了.但是我们却见证了I ...
- 云原生强大且灵活的持续集成CI开源框架Tekton实战-上
@ 目录 概述 定义 常见CICD工具 使用好处 组件 基本概念 安装 前提条件 安装Tekton Pipelines 创建并运行任务 安装Dashboard 安装Cli Pipelines示例演示 ...
- WebAssembly 助力云原生:APISIX 如何借助 Wasm 插件实现扩展功能?
本文将介绍 Wasm,以及 Apache APISIX 如何实现 Wasm 功能. 作者朱欣欣,API7.ai 技术工程师 原文链接 什么是 Wasm Wasm 是 WebAssembly 的缩写.W ...
- 景顺长城基于 Apache APISIX 在金融云原生的生产实践
本文介绍了景顺长城在金融云原生架构演进中选择 APISIX 作为网关工具的技术细节,同时分享了使用 APISIX 的实践细节,并对 APISIX 的未来展望进行了探讨. 作者李奕浩,景顺长城信息技术部 ...
- SpringCloud怎么迈向云原生?
很多公司由于历史原因,都会有自研的RPC框架. 尤其是在2015-2017期间,Spring Cloud刚刚面世,Dubbo停止维护多年,很多公司在设计自己的RPC框架时,都会基于Spring Clo ...
随机推荐
- 【转载】英特尔CEO:如果美出口管制太严,中国就必须生产自己的芯片
原文地址: https://mbd.baidu.com/newspage/data/landingsuper?context={"nid"%3A"news_9816136 ...
- 深度学习需要float64精度吗 —— 为什么各大深度学习框架均不支持float64的深度学习运算呢 —— 商用NVIDIA显卡的float64性能是否多余呢
首先要知道这么几个事实,也是交代一下本文要讨论的问题的背景: 各大深度学习框架均支持float64类型的简单运算,但是均不支持float64的深度学习的运算操作: 作为深度学习运行的加速设备,各种GP ...
- 一个专为量化投资开发的强化学习算法框架:ElegantRL
链接: https://github.com/AI4Finance-Foundation/ElegantRL 这是一个专为量化投资开发的强化学习算法框架. 相关论文: ElegantRL-Podrac ...
- 使用 Apache DolphinScheduler 进行 EMR 任务调度
By AWS Team 前言 随着企业规模的扩大,业务数据的激增,我们会使用 Hadoop/Spark 框架来处理大量数据的 ETL/聚合分析作业,⽽这些作业将需要由统一的作业调度平台去定时调度. 在 ...
- python分布式事务方案(二)基于消息最终一致性
荐
python分布式事务方案(二)基于消息最终一致性 上一章采用的是tcc方案,但是在进行批量操作时,比如说几百台主机一起分配策略时,会执行很长时间,这时体验比较差. 由于zabbix隐藏域后台,而这个 ...
- C语言基础- Hello World
第一个C语言程序 Hello World # include <stdio.h> //#关键标识符,表示用用头文件:include:引入都文件关键字 // stdio.h:系统标准输入.输 ...
- JavaScript设计模式样例八 —— 适配器模式
适配器模式(Adapter Pattern) 定义:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作.目的:主要解决在软件系统中,常常要将一些&quo ...
- 用GDI+旋转多边形来绘制一个时钟摸拟小程序
效果图 在头文件类中声明变量 TCHAR m_dayStr[4]; // 日期 TCHAR m_weekStr[4]; // 星期 Gdiplus::Font* m_pFont; // 字体 Gdip ...
- ubuntu 安装psycopg2包
psycopg2 库是 python 用来操作 postgreSQL 数据库的第三方库. 执行:pip3 install psycopg2==2.8.4 有可能会报错: Collecting psyc ...
- LaTeX 编译中文文档
介绍 LaTeX 原生不支持中文.为了添加中文的功能,我们需要引入宏包.XeLaTeX 原生支持中文.不过由于默认使用的字体是英文字体,我们需要设置中文字体之后才能用.不过由于一些原因,在使用 LaT ...