Databend x CubeFS:面向未来的企业级云原生数据存储与分析

用场景的丰富,企业面临着前所未有的数据存储挑战。大规模数据存储变得日常化,伴随着超大容量和快速变化的I/O需求,传统的存储解决方案已经难以满足企业对弹性、运维效率及总体拥有成本(TCO)的更高要求。这些挑战促使基于分布式架构的软件定义存储(SDS)技术应运而生,并逐渐走向成熟。

即便有了基于分布式架构的软件定义存储服务,但是在构建查询系统时,传统的数据仓库往往采用 Share-Nothing 架构,这种存算一体的设计在某些场景下虽然高效,但它的弹性相对较弱。由于采用固定集(Fixed-Set)式的资源调度策略,资源控制粒度较粗,这不仅限制了资源的灵活性,还可能导致更高的成本消耗。然而,随着数据分析对企业决策作用的增强,新型数据仓库如 Databend,基于共享存储架构(Share-Storage),在底层可以使用对象存储,真正做到存储与计算分离,资源控制粒度更细。计算节点可以根据需求弹性扩展,而不受存储容量的限制。

CubeFS:新一代云原生存储系统

CubeFS 是一种新一代云原生存储系统,支持 S3、HDFS 和 POSIX 等访问协议。它广泛适用于各种场景,如大数据、AI/LLMs、容器平台、数据库和中间件的存储与计算分离、数据共享和保护等。

CubeFS,作为国内首个云原生开源分布式存储产品,2019 年由京东开源并捐赠给云原生计算基金会(CNCF)。自2020 年 10 月 OPPO 开始主导社区运营和版本迭代以来,CubeFS 已经累计发布了 7 个版本。在 OPPO 的推进下,CubeFS 在 2022 年 6 月成功进入 CNCF 孵化阶段,这标志着它在开源分布式存储领域的成熟度和影响力得到进一步认可。

CubeFS 的设计响应了大规模数据处理的需求,具备优异的扩展性和性能,使其在 OPPO 、京东 、网易 、360 等多个大型企业得到了广泛应用。它的优势在于能够提供更灵活的存储解决方案,降低运维难度,并且能显著降低企业的存储成本。

Databend:面向海量数据的云原生 数仓

Databend 是一款开源、高性能、低成本的新型数据仓库,特别设计用于基于对象存储的实时分析。Databend 能够轻松实现从零到数百倍的算力扩展,几乎可以瞬间响应企业对计算资源的需求变化。

Databend 还为企业数据存储、管理和分析提供了一站式的平台。凭借 Databend 强大的生态体系,可以轻松从数据之中获取洞见,数据流转和使用也变得更加得心应手。

Databend 还提供包括混合云、混合数据库在内的多种异构计算能力,帮助企业管理复杂的算力与数据需求。不仅使企业能够更准确地洞察业务运行状况,还能够基于数据分析结果制定更有效的业务策略。

Databend x CubeFS:面向未来的企业级云原生数据存储与分析

结合 Databend 和 CubeFS ,为企业提供了面向未来的云原生数据存储与分析方案。结合 Databend 强劲的分析能力与 CubeFS 的存储优势,为企业提供一个既弹性又高效的数据处理平台。

将 CubeFS 作为 Databend 的存储后端,企业可以享受到无缝的数据存储与分析体验。不仅可以处理海量数据,还能够提供快速的数据洞察和分析能力,帮助企业在数据驱动的竞争中保持领先。

主要优势:

  • 弹性扩缩容:Databend 能够动态调整计算资源,而 CubeFS 则能够灵活扩展存储容量。
  • 低成本高效能:两者结合可以降低总体拥有成本(TCO)并提高数据处理效率。
  • 易于运维:简化了数据存储和分析的管理操作,提高了运维效率。
  • 云原生 兼容性:CubeFS 作为云原生存储解决方案,与 Databend 的设计理念相契合,易于在现代云环境中部署和管理。

Workshop:使用 CubeFS 作为 Databend 存储后端

本示例将会利用 CubeFS 提供的集群脚本和 Databend 的 Docker 镜像启动示例环境,并进行简单的读写操作进行验证,适用于对 CubeFS 和 Databend 感兴趣的开发者进行环境调试和基本开发验证。实际生产和性能验证请参考产品官方文档进行生产级部署。

环境准备

  • 请确保您的操作系统上已经安装有 Docker 和 docker-compose 。
  • 在部署前请检查防火墙,避免权限和访问问题导致容器启动失败。
  • 请参考 文档 - BendSQL,安装 BendSQL 命令行工具。
  • 推荐使用两台服务器,一台用于部署存储服务,一台用于部署独立模式的 Databend 服务,以确保资源效率最大化。在资源有限的情况下,也可在单台服务器上进行部署。

CubeFS 部署

请在用于 CubeFS 的服务器上执行下面步骤以完成部署。

创建对应的数据目录:

mkdir -p ${HOME}/cubefs/data

拉取 cubefs 源码并使用脚本运行 CubeFS 服务,在试用集群的模式下,CubeFS 自带对象存储节点与网关,无需另外配置。

cd cubefs
git clone https://github.com/cubefs/cubefs.git
cubefs/docker/run_docker.sh -r -d ${HOME}/cubefs/data

检查挂载状态:

mount | grep cubefs

退出容器:

exit

创建对应的 Bucket (对应 CubeFS 的卷):

curl -v "http://192.168.0.11:17010/admin/createVol?name=databend&capacity=100&owner=cfs"

查询上一步的 owner 用户以获取对应的 Access Key 和 Secret Key:

curl -v "http://192.168.0.11:17010/user/info?user=cfs" | python3 -m json.tool

注意: 其中 192.168.0.11:17010 为 CubeFS 部署过程中显示的 Master leader : 192.168.0.11:17010 ,如有不同,以部署过程中显示的 IP 为准。

在返回的结构体中可以获取到对应的信息:

{
    "code": 0,
    "msg": "success",
    "data": {
        "user_id": "cfs",
        "access_key": "Ar5UC6HCtDcYbpFt",
        "secret_key": "ZV6pxBRYUEivFscFsD3lUQgKRs9GHEP3",
        "policy": {
            "own_vols": [
                "databend"
            ],
            "authorized_vols": {}
        },
        "user_type": 3,
        "create_time": "2024-03-19 04:12:02",
        "description": "",
        "EMPTY": false
    }
}

Databend 部署

请在用于 Databend 的服务器上执行下面步骤以完成部署。

为简单起见,此处 Databend 也使用 Docker 进行部署和管理。

docker run -d \
    --name databend \
    --net=host \
    -v meta_storage_dir:/var/lib/databend/meta \
    -v log_dir:/var/log/databend \
    -e QUERY_DEFAULT_USER=databend \
    -e QUERY_DEFAULT_PASSWORD=databend \
    -e QUERY_STORAGE_TYPE=s3 \
    -e AWS_S3_ENDPOINT=http://${endpoint} \
    -e AWS_S3_BUCKET=databend \
    -e AWS_ACCESS_KEY_ID=<your-ak> \
    -e AWS_SECRET_ACCESS_KEY=<your-sk> \
    datafuselabs/databend

重要参数说明

这里的 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 需要设置为之前查询到的 access_key 和 secret_key 。

AWS_S3_ENDPOINT 需要设置为 ObjectNode 服务器 IP 和监听端口,由于这个示例 CubeFS 集群会映射到 80 端口,为了避免鉴权失败,所以需要省略端口号,示例为 20.2.219.104 。

访问

如果你的 Databend 示例是在远端服务器上启动,请执行:

bendsql -h <your-query-ip> -P8000 -u databend -p databend

如果你的 Databend 示例是在本地服务器上启动,请执行:

bendsql -u databend -p databend

联通性测试

为了确认 Databend 服务的可用性以及存储后端是否就绪,可以利用 bendsql 执行基本的建表查询进行确认。也欢迎查阅 Databend 官方文档或者往期文章,选取感兴趣的示例进行。

databend@localhost:8000/test> CREATE TABLE t_default_value(a TINYINT UNSIGNED, b VARCHAR DEFAULT 'b');

CREATE TABLE t_default_value(a TINYINT UNSIGNED, b VARCHAR DEFAULT 'b')

0 row written in 0.111 sec. Processed 0 row, 0 B (0 row/s, 0 B/s)

databend@localhost:8000/test> INSERT INTO T_default_value(a) VALUES(1);

INSERT INTO
  T_default_value(a)
VALUES
(1)

1 row written in 0.121 sec. Processed 1 row, 66 B (8.25 row/s, 544 B/s)

databend@localhost:8000/test> SELECT * FROM t_default_value;

SELECT
  *
FROM
  t_default_value

┌────────────────────────────────────┐
│        a        │         b        │
│ Nullable(UInt8) │ Nullable(String) │
├─────────────────┼──────────────────┤
│               1 │ b                │
└────────────────────────────────────┘
1 row read in 0.037 sec. Processed 1 row, 20 B (27.39 row/s, 547 B/s)

问题排查

  • 在示例中使用 CubeFS 提供的对象存储 API (S3 兼容)进行数据访问,请确保部署 ObjectNode 启用对象存储网关。生产环境下也推荐使用 对象存储 API 。

  • 对于 Databend 启动失败的情形,可以执行下述命令查看日志:

    • docker logs databend
  • 如与存储后端在同一台机器上部署 Databend ,会遇到端口号被占用问题,可以修改上面 docker 命令中或者 cubefs/docker/docker-compose.yml 文件中的映射,将其暴露到其他端口。

结论

随着数据量的不断增长和企业对数据分析需求的日益提升,Databend 和 CubeFS 的联合,为解决当前的数据存储和分析难题提供了有效的解决方案。不仅推动了存储技术的创新,也为企业在新一代数据技术革命中提供了坚实的基础设施支持。在未来,Databend 和 CubeFS 将会继续协作,为企业在数据驱动的新时代中蓬勃发展带来更多的可能性。

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

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

相关文章

【数据库系统】SQL和T-SQL

第四章 SQL 基本内容 系统结构、DDL、DML、视图、数据控制、嵌入式SQL SQL介绍 特点 一体化&#xff1b;面向集合操作&#xff1b;非过程化语言&#xff1b;可以单独写&#xff0c;也可以作为嵌入式语言&#xff08;JDBC&#xff09; 体系结构 数据库存储结构 逻辑存储结构 面…

vue key的bug

今天遇到一个bug&#xff0c;列表删除元素时&#xff0c;明明在外层设置了key&#xff0c;但是列表元素的状态居然复用了&#xff0c;找了好久原因&#xff0c;最后是key的取值问题&#xff0c;记录一下。 首先key可以取undefine&#xff0c;这个是不会报错的 然后项目的代码结…

工商银行ECOS系统应用架构

2019 年 11 月 8 日&#xff0c;工商银行在北京正式发布 ECOS 智慧银行生态系统。ECOS 以 Ecosystem&#xff08;生态系统&#xff09;前四个字母命名。其中E 代表“企业级”&#xff08;Enterprise-level&#xff09;&#xff0c;C 代表“以客户为中心”&#xff08;Customer-…

rpc详解rpc框架

文章目录 概述rpc的优点组件工作流程&RPC的底层原理RPC的底层原理 RPC框架rpc框架优点RPC 的实现基础RPC的应用场景RPC使用了哪些关键技术rpc 调用异常一般怎么处理rpc和http的区别为什么RPC要比HTTP更快一些Dubbo和openfeign 区别远程调用RPC框架传输协议传输速度 概述 在…

6.shell case控制语句

case控制语句 1.什么是case case条件语句相当于多分支的if/elif/else条件语句&#xff0c;主要还是用来做条件判断的,常被应用于实现系统服务启动脚本。 case语句中&#xff0c;会将case获取的变量值与表达式部分的值1、值2、值3等逐个进行比较&#xff0c;如果变量值和某个表…

vue3 报错 require is not defined

问题 require is not defined 原因 vite 不支持require的用法&#xff0c; webpack是支持的 解决 方法一&#xff1a; 更改vite使用语法 vite官网 方法二 安装转换插件vite-plugin-require-transform 仓库地址 参考 关于Vite不能使用require问题 方法二Vite 踩坑 —— …

html5cssjs代码 036 CSS默认值

html5&css&js代码 036 CSS默认值 一、代码二、解释 CSS默认值&#xff08;也称为浏览器默认样式&#xff09;是指当HTML元素没有应用任何外部CSS样式时&#xff0c;浏览器自动为这些元素赋予的一组基本样式。这些样式是由浏览器的默认样式表&#xff08;User Agent sty…

【Godot4.2】实现鼠标控制对象(控件)旋转

概述 在一些情况下我们可能需要使用鼠标控制对一个图形或对象&#xff08;如控件&#xff09;进行旋转。 通过如下图的分析&#xff1a; 我们可以知道&#xff1a; 我们只需要求出对象&#xff08;如控件&#xff09;中心点C到鼠标点击的位置start的向量与中心点C到鼠标移动…

STM32最小核心板使用HAL库实现CAN接口通讯(轮询方式)

这里使用了CAN1的接口&#xff0c;具体使用MX创建项目就不放了 需要注意的是&#xff0c;由于是最小核心没有CAN的收发模块需要外接一个 STM32核心板接CAN收发模块不需要交叉 /**CAN GPIO ConfigurationPA11 ------> CAN_RXPA12 ------> CAN_TX */ CAN收发模块…

力扣454. 四数相加 II

思路&#xff1a;把四个数组拆成两对&#xff0c;两个分别相加&#xff0c;记录第一对的相加结果进map里&#xff0c;再把第二对数组 0-nums2-nums4 去map里面找出现了几次&#xff0c;这题不用对重复的四元组去重&#xff0c;所以出现多次都有效。 class Solution {public int…

[flask] flask的基本介绍、flask快速搭建项目并运行

笔记 Flask Flask 本身相当于一个内核&#xff0c;其他几乎所有的功能都要用到扩展&#xff08;邮件扩展Flask-Mail&#xff0c;用户认证Flask-Login&#xff0c;数据库Flask-SQLAlchemy&#xff09;&#xff0c;都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、…

ubuntu20.04搭建nginx rtmp视频服务到指定位置解决权限不足

1.安装依赖 apt-get install build-essential libpcre3 libpcre3-dev libssl-dev2.建一个目录 mldir rtmp_nginx 3.源码下载 wget http://nginx.org/download/nginx-1.21.6.tar.gz wget https://github.com/arut/nginx-rtmp-module/archive/master.zip4.解压缩 tar -xf ng…

新能源汽车充电桩站点烟火AI识别检测算法应用方案

新能源汽车作为现代科技与环保理念的完美结合&#xff0c;其普及和应用本应带给人们更加便捷和绿色的出行体验。然而&#xff0c;近年来新能源汽车充电火灾事故的频发&#xff0c;无疑给这一领域投下了巨大的阴影。这不禁让人深思&#xff0c;为何这一先进的交通工具在充电过程…

计算机服务器中了faust勒索病毒怎么办,faust勒索病毒解密工具流程

网络是一把利剑&#xff0c;可以方便企业开展各项工作业务&#xff0c;为企业提供极大的便利&#xff0c;但随着网络技术的不断发展与应用&#xff0c;网络数据安全威胁也在不断增加&#xff0c;给企业的正常生产运营带来了极大困扰&#xff0c;近日&#xff0c;云天数据恢复中…

AJAX-Promise

定义 Promise对象用于表示(管理)一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。 好处&#xff1a;1&#xff09;成功和失败状态&#xff0c;可以关联对应处理程序 2&#xff09;了解axios函数内部运作机制 3&#xff09;能解决回调函数地狱问题 语法&…

七仔充电桩平台 二轮电动自行车 四轮汽车 云快充1.5 云快充1.6

文章目录 一、产品功能部分截图1.手机端&#xff08;小程序、安卓、ios&#xff09;2.PC端 二、小程序体验账号以及PC后台体验账号1.小程序体验账号2.PC后台体验账号关注公众号获取最新资讯 三、产品简介&#xff1f;1. 充电桩云平台&#xff08;含硬件充电桩&#xff09;&…

ORACLE查询拼接字段,显示clob原因,及解决办法

今天查询一个字段&#xff0c;使用了拼接&#xff0c;然后查出来就显示clob&#xff1a; 代码如下&#xff1a; SELECT LOAD_DATE, CINO, WM_CONCAT(CITYP) AS CITYPFROM ODS.ZN_CUSTCITYP GROUP BY CINO,LOAD_DATE 显示如图&#xff1a; 解决办法&#xff1a; select t.普…

Java-SSM医院在线预约系统

Java-SSM医院在线预约系统 1.服务承诺&#xff1a; 包安装运行&#xff0c;如有需要欢迎联系&#xff08;VX:yuanchengruanjian&#xff09;。 2.项目所用框架: 前端:JSP、layui等。 后端:SSM,即Spring、SpringMvc、Mybatis等。 3.项目功能点: 1.管理员功能: a.修改个人信息…

[ Django ] 统计接口访问频次

需求及实现思路 需求&#xff1a;统计django项目中接口的调用次数 思路&#xff1a;中间件异步任务celery缓存redis/直接使用中间件&#xff08;会增加中间件的压力&#xff09; 具体思路&#xff1a; 定义中间件&#xff0c;在中间件中响应走的时候判断该请求的url是否存在…

【吾爱破解】Android初级题(二)的解题思路 _

拿到apk&#xff0c;我们模拟器打开看一下 好好&#xff0c;抽卡模拟器是吧&#x1f600; jadx反编译看一下源码 找到生成flag的地方&#xff0c;大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…