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

上周六,由 KubeSphere 社区联合 Databend 社区以及纵目科技共同组织的云原生 Meetup 北京站在北京圆满落幕。本次 Meetup 活动邀请到了 SkyWalking PMC 成员、青云科技架构及可观测性团队负责人、江苏纵目科技 APM 研发总监、青云科技容器产品经理、数元灵科技 CTO 以及 Databend 云平台负责人等专家和大咖,为小伙伴们带来精彩的技术分享。

Databend Labs 云平台负责人李亚舟

在活动中,Databend 云平台负责人李亚舟老师为大家带来的分享是《使用 Kubesphere 部署 Databend,极速启动新一代云原生数据分析平台》,介绍了如何使用 KubeSphere 创建和部署 Databend 高可用集群,并使用 QingStor 作为底层存储服务,解锁 Databend 的强大分析能力。以下是演讲实录:

【Meetup 分享】使用 KubeSphere 部署 Databend,极速启动新一代云原生数据分析平台_哔哩哔哩_bilibili

Databend 是一个用 Rust 研发,采用存算分离架构,基于对象存储构建的云原生数仓。它可以提供极致的性能、快速的弹性扩展能力,用户可以私有化部署也可以直接使用云上的 SaaS 服务,致力于打造开源版的 Snowflake 产品。随着数据量逐渐增长,大数据的痛点是长期存在的,即海量数据的存储成本和管理复杂性高等。面对这种情况,对象存储可以说是存储成本的终极方案。现在新的存储软件基本都是基于对象存储原生设计的,但是对象存储并不是说用上就自然解决一切问题。对象存储也有一些自己的局限性,比如说它的 latency 比较难预期,单个文件的吞吐有限,这就要求在 IO 的调度上要做的特别精细,这也是 Databend 云原生数仓引擎所擅长的。

Databend 云原生数仓可以让你轻松地分析对象存储上的 PB 级海量数据。PB 级的数据如果都放在对象存储上,成本一定会大幅下降的,相比放在 SSD 或者 HDD,可能会降到原先 5% 或者 10% 的水平。同时,Databend 还会对你的数据做大规模的压缩,这样你的存储成本会进一步大幅下降。

此外,Databend 完全云原生的设计让你的计算也是弹性的,这意味着当你的计算资源不活跃的时候,计算资源是可以回收的。比如在分析场景中,有时候你一天只跑一次报表,那你不跑报表的时候回收计算资源,成本在计算和存储层面都会大大下降。

Databend 架构

Databend 在架构设计上的原则,一是要简单实用,要做到开箱即用,在部署的时候基本上等于一键部署。这也得益于它云原生的完全无状态设计,对象都在对象存储里,所以部署和管理都会特别容易。我们还提供了丰富的查询语句支持。有一些客户可能一个 SQL 有三四百行、五六百行,Databend 中丰富的函数让这些客户的复杂查询得到很好的支持。

从上图可以看出,云原生数仓和传统数仓最大的一个区别,是传统数仓会使用本地盘,然后把磁盘 shard。当你的数据增长后,你再做一些 reshard,这样可能涉及一些昂贵的数据搬运。ClickHouse 算是一个传统数仓的典型,大家用了这么多年,对它的运维依然感觉很痛。而 Databend 在运维上就没有这方面的痛点,下面的存储都在对象存储上,如果计算压力变大,只要加计算节点就可以了。对象存储的存储容量接近于无限,所以不需要担心 scale 的问题。另外,Databend 除了自己的表查询引擎之外,还有丰富的数据湖格式支持,并支持丰富的对象存储。AWS、 Azure 和 GCP 的对象存储其实有点不一样,所以 Databend 内部孵化了一个项目叫做 OpenDAL,已经纳入到 Aparche 基金会维护。它能适配所有云厂商的对象存储,比如我们今天分享里提到的青云的 QingStor。

大数据生态在过去十来年的发展中有很多痛,其中一个痛点是比较持续的,就是你的数据在持续增长,这必然带来数据管理成本以及管理复杂度的上升。大数据有一个笑话,整个大数据就像一个动物园,如果想把它搞起来,需要 Spark、HDFS、Yarn 等等 120 个组件,需要操心的事特别多。但是在 Databend 架构中,只需要一个 Databend 和对象存储就可以了。我们也做了很多投入在大数据生态的适配中,比如来自上下游的各种 ETL 工具,上游的 PG 和 MySQL,数据同步的组件,下游的 Grafana、Metabase 等数据可视化的支持等。

以上的 logo 是 Databend 落地的一些客户案例。

自从 Databend 发布后,它的低成本、存算分离等特性已经吸引了很多客户前来试用。我们发现有一些客户的场景是在传统数仓的认知之外的一些场景,但是用了 Databend 之后也得到了很好的落地。目前 Databend 有几个比较大的应用场景:

一个是 OLAP 实时分析。比如说有上游的数据,实时 Ingest 进 Kafka,然后通过 Databend 可以做出来实时分析的报表,而不会像 Hive 或者 Spark 那样需要一个相对缓慢的 ETL 流程。

另外一个是海量日志存储。因为日志一不小心就会产生大量的成本,而对象存储配合上 Databend 优秀的查询引擎,也成为一个优秀的日志解决方案。我们有很多客户跑着 MySQL ,他们会把历史数据归档到 Databend 中,然后再做一个联合的查询,这样能使线上数据库的压力大大减少,同时历史数据又能比较简单地进行查询与分析。

Databend 今年也不能免俗地有一些 AI 的原生支持。你可以把你的知识库存储在 Databend 中, Databend 可以结合 embedding 去查询,然后帮助你实现一个 RAG 解决方案,这个 AskBend 是我们的一个 RAG 解决方案,可以对 Databend 文档进行提问,它可以给你一些基于 Databend 文档的回答,是挺好玩的一个应用。

Databend 的部署

下面来简单介绍一下 Databend 是如何做部署的。Databend 是一个完全云原生的软件,而云原生的一个典型特征就是无状态,所以你部署起来会特别容易。它的状态都在对象存储里,还有一小部分是在 Databend 的元信息中。

所以在部署 Databend 的时候,你只需要关注三个组件: 一个组件就是对象存储。这个对象存储一般是各个云厂商各自的对象存储服务,比如青云有 QingStor,阿里云有 OSS, AWS 有 S3。也有一些客户是直接在 K8s 里跑 MiniIO,这是一些私有部署的场景;

另一个组件是 Metasrv。Meta 是一个相对比较小的 Raft 集群,通常有 3 个或 5 个节点,通过 open Raft 框架实现强预制的高可靠集群,它会来用来存储 Databend 的一些元信息,对象存储的入口会展示在这个 Meta 里;

最后一个组件是 Query。 Query 部署起来是最容易的,它是完全无状态的,只要连上 Meta 和对象存储,就可以拿来查东西。

使用 Databend 最便捷的方法是 Databend Cloud,我们提供云上的 SaaS 服务。但如果你想做私有部署,我们也提供 Databend 企业版和开源版,上图是 Databend 私有部署的架构,你可以使用 K8s,也可以用 bare metal 的虚拟机。其实就是刚才介绍的这几个节点,先把 Meta 部署起来,再把对象存储准备好,然后把 Query 启动起来就可以了。此外,还可以根据你的需求,把 Query 节点分成不同组。比如说 A 部门用这几个 Query,B 部门用那几个 Query。它们都是完全隔离的,不会相互影响,不同部门也可以根据自己的需求单独 scale 计算资源。

除了 Databend Cloud 和私有部署,Databend 还允许使用混合云的部署方式,把你的数据存储在自己的对象存储里,通过 Databend Cloud 的可弹性算力去计算。之前有客户和我们提过一个反馈,他是在 K8s 里跑分析的 workload,但是公司的计算资源限额比较少,所以他就想高峰期或者在跑报表的时候,把 OS bucket mount 到 Databend Cloud 上,利用 Databend Cloud 弹性算例帮助分析,分析完就可以全部释放掉,不会造成任何其他的额外的成本。这就是一种典型的混合云的部署方式。

使用 KubeSphere Cloud 部署 Databend

接下来具体介绍一下怎么使用 KubeSphere Cloud 来部署 Databend。 我们为什么要选择 KubeSphere?KubeSphere 有一个易用的管理 UI,使用 Helm Chart 就可以很简单地一键部署到 KubeSphere 中。应用的管理和部署的过程,以及后续的运维、监控、日志,都可以通过 KubeSphere 作为入口去管理,具有很好的使用体验。

使用 Kubernetes 来管理 Databend 是我们最推荐的部署方式,因为 Kubernetes 有很强大的 coordination 能力,能帮助我们做到自动恢复、水平扩展、负载均衡等等。部署在 Kubernetes 里,你的程序、进程 crash 了也不用特别担心,它都能自动重新拉起来。在 Kubernetes 里,你的 Prometheus、 Grafana 和 MiniIO 都可以在一个生态里面共同运作。总结来说,用 Kubernetes 来部署 Databend 是首选,而 KubeSphere 又是 Kubernetes 的最佳搭档。

部署的第一步是先登录青云用户后台,创建一个 QingStor 的 bucket。如果你用阿里云、腾讯云、AWS、GCP,有其他的对象存储,或者自己私部的 MiniIO 也都是类似的。需要额外注意的就是拿到它的 Endpoint 地址以及它的访问的 ak、sk,你需要把这部分信息先记下来,后面在部署的时候会用到。然后我们可以在 KubeSphere Cloud 上创建一个 KubeSphere 集群。使用默认配置创建免费版集群即可尝鲜体验,个人用户每月有 10 小时免费额度。创建之后访问它的控制台,可以看到 KubeSphere 的管理员界面。

点击平台管理,我们可以下载它的 kubeconfig 文件,保存为 ~/.kube/kubesphere。这里需要做一个小修改,它前台有一个 API Server 的地址,你要把这个地址记下来,替换其中的 Server 地址为前台显示的地址。

开始先部署 Meta 节点。因为是演示试用,我们先部署了一个 Meta 实例。在生产环境中的话,一般建议最少要配 3 个实例。实例一定是奇数,不要配偶数,这是 Raft 共识协议的要求。基本上把这个命令往上一贴一运行,就能够稳定地把它部署上来。

在 Meta 节点就绪之后,开始部署 Query 节点。前面我们已经得到了对象存储的地址,图中红色的部分其实就是刚才对象存储的 ak、sk 以及 Endpoint 地址。然后填上刚才那个 Meta 的地址。

打开 shell,执行上述命令,Query 就准备出来一个 values.yaml。然后 install,Query 就能正常运行了。执行 get svc 命令就可以看到 data query 已经启动了。

回到 KubeSphere 前台,这里还可以做网络映射。点网络新建,可以把 Databend 的 8000 端口暴露出来,得到一个地址。这个地址可以用来访问 KubeSphere Cloud 里的 Databend 实例。

接下来如何连接 Databend 呢?Bendsql 是 Databend 一个十分方便的命令行界面客户端工具。下载安装之后,我们可以把刚才的 host 贴过来,输入 user、password 连接 Databend 集群。

整个部署的过程其实非常简单,跑两个命令,先把 meta 部署上去,然后再把 Query 也部署上去。部署完后,你就可以在 K8s 里面,根据你的需求去 Scale up ,Scale down,不用的时候就把它变成 0 回收掉。用的时候再把它 Scale 出来,随自己的需要来控制就好。

部署完后,你可以在 KubeSphere 界面去查看 Databend query 的 statefulset。Databend query 虽然是无状态的,但是 stable set 可以给每个 Pod 一个编号。我们在查 SQL 的时候,可以找一个固定的 query 节点去发SQL。你可以看到它的监控状态。当 CPU 或者内存不够时,可以有针对性地去调整它的规格,这样平时的运维就会简单一些。

关于 Databend

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

Databend Cloud:https://databend.cn

Databend 文档:Databend

Wechat:Databend

GitHub:GitHub - datafuselabs/databend: 𝗗𝗮𝘁𝗮, 𝗔𝗻𝗮𝗹𝘆𝘁𝗶𝗰𝘀 & 𝗔𝗜. Modern alternative to Snowflake. Cost-effective and simple for massive-scale analytics. https://databend.com

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM内存划分类加载的过程双亲委派模型的详解

JVM内存划分 JVM也就是java进程,这个进程一旦跑起来就会从操作系统这里申请一大块内存空间,JVM接下来就要进一步的对这个大的空间进行划分,划分成不同区域,从而每个区域都有不同的功能作用,一共分为如下几个区域 1.堆…

【数据结构】二叉树-堆(下)-链式二叉树

个人主页~ 二叉树-堆&#xff08;上&#xff09; 栈和队列 二叉树 四、堆的代码实现Heap.hHeap.ctest.c 五、堆的应用堆排序思想进行排序 六、二叉树链式结构的实现BTree.hBTree.ctest.c 四、堆的代码实现 Heap.h #pragma once#include <stdio.h> #include <stdlib…

Leetcode:寻找两个正序数组的中位数

题目链接&#xff1a;4. 寻找两个正序数组的中位数 - 力扣&#xff08;LeetCode&#xff09; 题目分析 1、当只有一个有序数组时&#xff0c;该数组的中位数会将该数组分为两份&#xff1a;左子数组 和 右子数组 2、当有两个有序数组时&#xff0c; 我们仍然可以通过一条分隔…

计算机网络之快重传和快恢复以及TCP连接与释放的握手

快重传和快恢复 快重传可以让发送方尽早得知丢失消息&#xff0c; 当发送消息M1,M2&#xff0c;M3,M4,M5后,假如消息M2丢失&#xff0c;那么按照算法会发送对M2报文前一个报文M1的重复确认&#xff08;M1正常接受到&#xff0c;已经发送了确认),然后之后收到M4,M5,也会发送两…

内网安全之注册和查看证书

注册证书 如图所示&#xff0c;是 Will Schroeder 和 Lee Christensen 发布的 Certified_Pre-Owned 白皮书里面画的证书注册流程: 从图中我们可以看到&#xff0c;证书注册流程如下&#xff1a; 客户端生成一对公、私钥。客户端生成证书签名请求(CSR&#xff0c;Certificate…

linux系统——性能检测工具glances

在linux系统中&#xff0c;由python开发的glances工具是一个功能强大的性能检测工具 可以通过yum进行安装 安装glances后&#xff0c;进入命令界面 glance支持网站模式&#xff0c;将监控到的数据以网站形式显示出来 这里需要用python包管理命令 使用glances -w开放…

Java集合-List(Collection子接口)及其子类(ArrayList、Vector、LinkedList)

List接口是 Collection接口的子接口。 1、List集合类中数据有序&#xff0c; 即添加顺序和取出顺序有序&#xff0c;而且可以重复。 2、List集合类中每个元素都有其对应的顺序索引&#xff0c;即支持索引。例&#xff0c;list.get(2)&#xff1b;取第三个元素。 3、实现类有很多…

百度地图1

地图的基本操作 百度地图3.0文档 百度地图3.0实例中心 设置地图 centerAndZoom(center: Point, zoom: Number)设初始化地图,center类型为Point时&#xff0c;zoom必须赋值&#xff0c;范围3-19级&#xff0c; // 百度地图API功能var map new BMap.Map("map"); //…

CentOS8搭载正反向解析dns服务器

1.介绍&#xff08;是什么&#xff09; DNS&#xff08;Domain Name System&#xff09;&#xff0c;即域名系统&#xff0c;是一个将域名和 IP 地址相互映射的分布式数据库&#xff0c;它可以将用户输入的域名转换成对应的 IP 地址。DNS 由多个服务器组成&#xff0c;分为多个…

企业想要搭建一个虚拟展厅需要多少钱?

企业搭建虚拟展厅的费用会根据多种因素有所不同&#xff0c;主要包括展厅的类型、规模、功能需求、技术复杂度以及服务商的定价策略等。以下是关于虚拟展厅搭建费用的分点说明和归纳&#xff1a; 一、展厅类型&#xff1a; 1、全景实拍展厅&#xff1a; 利用VR全景拍摄技术还…

结构体中内存的对齐

前言 学C的同学应该知道~ 想精通C语言就不得不面对—指针与内存 续上次指针进阶&#xff0c;这一章我来聊一聊C语言内存对齐的问题 学习结构体的你有没有注意过结构体向系统申请的内存为多少呢的&#x1f601; 思考 #include<stdio.h> typedef struct s1 {char a;char …

【Python】 如何获取 Python 函数的名称作为字符串?

基本原理 在 Python 中&#xff0c;获取函数名称是一个简单但非常有用的技巧&#xff0c;尤其是当你需要动态地引用函数或者在日志、调试中需要函数名称时。Python 提供了几种方法来获取函数的名称。 方法一&#xff1a;使用 __name__ 属性 每个函数对象都有一个 __name__ 属…

【Unity】使用Jenkins实现远程Unity打包

前言 很多时候&#xff0c;我们需要自动打包&#xff0c;比如下班了&#xff0c;我要出一个包明天早上用。比如每天夜里12点&#xff0c;我需要定时出一个稳定包。 这个时候就需要Jenkins了。 1.安装环境 安装 jenkins 之前&#xff0c;需要安装Java 。Java下载网站 ①下载…

校园交友|基于SprinBoot+vue的校园交友网站(源码+数据库+文档)

校园交友网站 目录 基于SprinBootvue的校园交友网站 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

音视频开发9 FFmpeg 解复用相关整体说明,重要API说明

一&#xff0c;播放器框架 二 常用音视频术语 容器&#xff0f;文件&#xff08;Conainer/File&#xff09;&#xff1a; 即特定格式的多媒体文件&#xff0c; 比如mp4、flv、mkv等。 媒体流&#xff08;Stream&#xff09;&#xff1a; 表示时间轴上的一段连续数据&#xff0…

【技术实操】银河高级服务器操作系统实例分享,数据库日志文件属主不对问题分析

1. 问题现象描述 2023 年 06 月 30 日在迁移数据库过程中&#xff0c;遇到数据库 crash 的缺陷&#xff0c;原因如下&#xff1a;在数据库启动时候生成的一组临时文件中&#xff0c;有 owner 为 root 的文件&#xff0c; 文件权限默认为 640&#xff0c; 当数据库需要使用的时…

C++系列——————类和对象(上)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、面向对象的三大特征二、类的引入2.1类的定义 三.类的访问限定符3.1访问限定符的介绍3.2.访问限定符的使用 四、类的作用域五、类的实例化六、类对象模型6.1…

惠海 H6251L 降压恒压芯片IC 48V 60V 100V 150V 200V 降3.3V 5V 12V 5A大电流 低功耗,动态响应优异

H6251L是一款多样化的高压降压开关控制器&#xff0c;它具备许多引人注目的特性和优势&#xff0c;使其在多个领域都有许多的应用。以下是对H6251L的详细分析&#xff1a; 首先&#xff0c;H6251L具有宽压8V-200V的输入范围&#xff0c;这意味着它可以在电压环境下稳定工作&am…

【康耐视国产案例】智能AI相机联合OSARO为Zenni眼镜实现订单履约自动化

在电商潮流下&#xff0c;Zenni眼镜作为全球领先的在线眼镜零售商&#xff0c;每年销售超过600万副眼镜&#xff0c;却面临着一个独特而复杂的问题——需要通过扫描眼镜盒内的条形码来处理订单。传统手动处理已经到达流程瓶颈&#xff0c;急需一种更加自动化、可扩展的方法。为…

STM32 HAL库USART的接收数据方法实现(STM32Cube_FW_F1_V1.8.5)

目录 概述 1 使用STM32Cube生成项目 1.1 软件版本信息 1.2 配置串口相关参数 1.3 生成工程 2 问题描述 3 解决问题 3.1 修改代码 3.2 编写新的回调函数 4 测试 概述 本文主要介绍STM32 HAL库USART的接收数据方法实现&#xff0c;笔者使用的HAL库为STM32Cube_FW_F1_V1.…