在 KubeSphere 中开启新一代云原生数仓 Databend

news2024/9/28 15:27:08

作者:尚卓燃(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_idqy_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
socatRequired
conntrackRequired
ebtablesOptional but recommended
ipsetOptional but recommended
ipvsadmOptional 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-metadatabend-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 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/399092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

导入你的 ST 项目到 Visual Studio

去年我们官宣了 Visual Studio Code 可以直接导入 ST 项目&#xff0c;今天再次宣布&#xff1a;它的好兄弟 Visual Studio 2022 17.6 也支持此功能&#xff0c;详细请看下文。 在 ARM 微控制器领域&#xff0c;有许多芯片供应商&#xff0c;其中最大的是意法半导体(ST)。ST 拥…

【冲刺蓝桥杯的最后30天】day6

大家好&#x1f603;&#xff0c;我是想要慢慢变得优秀的向阳&#x1f31e;同学&#x1f468;‍&#x1f4bb;&#xff0c;断更了整整一年&#xff0c;又开始恢复CSDN更新&#xff0c;从今天开始更新备战蓝桥30天系列&#xff0c;一共30天&#xff0c;如果对你有帮助或者正在备…

【魅力开源】第9集:管理者的大局观:企业数字化转型的能力逆向规划设计模型

文章目录前言一、背景&#xff1a;数字化转型机遇与挑战1.1 国家层面&#xff1a;数字化转型的背后代表的是“国家意志”1.2 企业层面&#xff1a;积极拥抱数字化转型&#xff0c;抢占的是“红利先机”1.3 个人层面&#xff1a;全民数字化时代到来&#xff0c;最为炙手可热的当…

CPDA|如何证明你的数据分析能力?

数据分析能力是一个很重要的能力&#xff0c;那么如何去证明这个能力呢&#xff1f; 一般来说&#xff0c;证明你的数据分析能力需要以实际的数据分析项目和成果为基础&#xff0c;可以从以下几个方面来证明&#xff1a; 项目经历&#xff1a;列举你参与的数据分析项目&#x…

Easy Deep Learning——PyTorch中的自动微分

目录 什么是深度学习&#xff1f;它的实现原理是怎么样的呢&#xff1f; 什么是梯度下降&#xff1f;梯度下降是怎么计算出最优解的&#xff1f; 什么是导数&#xff1f;求导对于深度学习来说有何意义&#xff1f; PyTorch 自动微分&#xff08;自动求导&#xff09; 为什么…

分享一个 hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题

最近在针对某系统进行性能优化时&#xff0c;发现了一个hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题&#xff0c;该问题具有普适性&#xff0c;故特地拿出来跟大家分享下。 1 问题描述 在微服务中&#xff0c;我们普遍会使用各种数据库连接池技术以加快…

二叉树,二叉搜索树相关模板

目录1.先序遍历2.中序遍历3.后序遍历4.层序遍历(可用于需按层进行计算的题目)5.判定二叉树的对称性6.二叉树最大深度&#xff08;结点深度&#xff1a;根节点到该结点。结点高度&#xff1a;该结点到叶子结点&#xff09;7.二叉树最小深度8.二叉树的平衡性9.求左叶子的和10.通过…

ArcGIS制图技巧:制图入门与点、线、面状符号制作

目的&#xff1a; 1、了解地图制作目的&#xff1b; 2、了解在ArcMap平台中制作地图大致过程。 3、掌握地形图生成的操作&#xff1b; 4、掌握地形图的正确输出方法。 5、理解点状符号、线状符号、面状符号的基本概念&#xff1b; 6、理解地形点状符号、线状符号、面状符…

从大专到测开,上海某字母站大厂的面试题,岗位是测开(25K*16)

简单介绍一句&#xff0c;大专出身&#xff0c;三年经验。跳了四次槽&#xff0c;面试了无数次&#xff0c;现在把自己的面试经验整理出来分享给大家&#xff0c;堪称必杀技&#xff01; 1&#xff0c;一切从实际出发&#xff0c;对实际工作进行适当修饰 2&#xff0c;不会的简…

【晓龙oba出品 - 黑科技解题系列】- 最小操作次数使数组元素相等

思路 算法归根到底就是找规律的游戏&#xff0c;我们首先来看一个现象&#xff1a; 以数组nums [1,2,3,4,5]为例 当我们将数组排序后&#xff0c;可以知道最小值为1,最大值为5&#xff0c;此时我们需要四次运算可以使最小值与最大值相等&#xff1a; 第一次&#xff1a;2,3,4,…

HNU-电子测试平台与工具2-数模转换

数模转换实验 计科XXXX wolf 工程文件我也一并上传了 D级任务 一.实验任务 对74194进行仿真验证&#xff0c;掌握Quartus仿真的基本原则和常规步骤&#xff0c;记录移位寄存器的数据读写&#xff0c;并描述仿真波形&#xff0c;分析结果。 二.实验过程 1.电路连接 2.功能…

Go 实现多态和 参数的动态个数及动态类型

引子 go语言作为静态(编译期类型检测)强类型(手写代码进行类型转换)语言, 要想实现 动态语言的鸭子类型的调用方法,做到 一个入参是不同类型,还是有些麻烦的; 需求 希望写代码时像python一样的鸭子类型,不用管参数类型,都可以调用同一个方法;希望 入参像python一样 能够在 个…

Kalman Filter in SLAM (1) ——Data Fusion and Kalman Filter(数据融合和卡尔曼滤波)

文章目录0. 参考资料1. Intro Example 例子引入1.1. 测量硬币直径1.2. 思考2. Data Fusion 数据融合2.1. 数据融合在做什么&#xff1f;2.2. 数据融合的前提——不确定度2.3. 数据融合的结果——统计意义下的最优估计3. State Space Representation 状态空间表达式3.1. 状态方程…

大数据 | (二)SSH连接报错Permission denied

大数据 | &#xff08;三&#xff09;centos7图形界面无法执行yum命令&#xff1a;centos7图形界面无法执行yum命令 哈喽&#xff01;各位CSDN的朋友们大家好&#xff01; 今天在执行Hadoop伪分布式安装时&#xff0c;遇到了一个问题&#xff0c;在此跟大家分享&#xff0c; …

ThreadLocal的内部结构和源码探究

目录一. ThreadLocal的内部结构1 常见的误解2 现在的设计3 这样设计的好处二. ThreadLocal的核心方法源码1 set方法2 get方法3 remove方法**4 initialValue方法**三. ThreadLocalMap源码分析1 基本结构2 弱引用和内存泄漏3 hash冲突的解决一. ThreadLocal的内部结构 ​ 通过之…

【C++知识点】STL 容器总结

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;C/C知识点 &#x1f4e3;专栏定位&#xff1a;整理一下 C 相关的知识点&#xff0c;供大家学习参考~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;…

2月榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年2月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜…

(蓝桥真题)剪格子(搜索+剪枝)

样例1输入&#xff1a; 3 3 10 1 52 20 30 1 1 2 3 样例1输出&#xff1a; 3 样例2输入&#xff1a; 4 3 1 1 1 1 1 30 80 2 1 1 1 100 样例2输出&#xff1a; 10 分析&#xff1a;这道题目我们直接从(1,1)点开始进行dfs搜索即可&#xff0c;但是需要注意一点的是我们搜…

FPGA和IC设计怎么选?哪个发展更好?

很多人纠结FPGA和IC设计怎么选&#xff0c;其实往小了说&#xff0c;要看你选择的具体是哪个方向岗位。往大了说&#xff0c;将来你要是走更远&#xff0c;要成为大佬&#xff0c;那基本各个方向的都要有涉及的。 不同方向就有不同的发展&#xff0c;目前在薪资上IC设计要比FP…

Vue3返回顶部组件及返回顶部js封装

介绍 vue3中,封装监听页面滚动的js, 及页面滚动到一定像素时,显示返回顶部的按钮,点击按钮会有放大的动画,并逐渐滚动到顶部的组件。效果如下: 代码 封装js,监听屏幕滚动事件,以及是否显示返回顶部的按钮; 在项目目录下新建 utils文件夹,并在该文件夹下创建index.…