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

news2024/11/15 10:16:52

用场景的丰富,企业面临着前所未有的数据存储挑战。大规模数据存储变得日常化,伴随着超大容量和快速变化的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 将会继续协作,为企业在数据驱动的新时代中蓬勃发展带来更多的可能性。

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

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

相关文章

三角形重心坐标插值法 Interpolation Across Triangles: Barycentric Coordinates

本专栏内容整理了GAMES101的计算机图形学课程的主要内容&#xff0c;作为我学习计算机图形学的一份复习备份或叫做笔记。内容中如有错误&#xff0c;或有其他建议&#xff0c;欢迎大家指出。 附上GAMES101计算机图形学课程&#xff1a;GAMES101: 现代计算机图形学入门正在上传…

Django日志(二)

一、Handler Handler决定如何处理logger中的每条消息。它表示一个特定的日志行为,例如 将消息写入屏幕、文件或网络Socket handler对应的是个字典,每一个键都是一个handler的名字,每个值又一个字典,描述了如何配置对应的handler实例 2.1、内置Handler class(必需):处理…

【每日八股】Java基础经典面试题4

前言&#xff1a;哈喽大家好&#xff0c;我是黑洞晓威&#xff0c;25届毕业生&#xff0c;正在为即将到来的秋招做准备。本篇将记录学习过程中经常出现的知识点以及自己学习薄弱的地方进行总结&#x1f970;。 本篇文章记录的Java基础面试题&#xff0c;如果你也在复习的话不妨…

Scikit-Learn逻辑回归(二)

Scikit-Learn逻辑回归二&#xff1a;多项式与正则化 1、多项式回归回顾1.1、逻辑回归为什么要使用多项式1.2、多项式回归及原理 2、逻辑回归与多项式 1、多项式回归回顾 本文接上篇&#xff1a;Scikit-Learn逻辑回归(一) 上篇中&#xff0c;我们详细介绍了逻辑回归的概念、原理…

第六十一回 放冷箭燕青救主 劫法场石秀跳楼-编译安装飞桨paddlepaddle@openKylin+RISCV

卢俊义在水里被张顺抓住&#xff0c;用轿子抬到了梁山。宋江等人下马跪在地上迎接&#xff0c;请他坐第一把交椅。卢俊义宁死不从&#xff0c;大家只好说留他在山寨几天&#xff0c;先让李固带着马车货物回去。吴用对李固说&#xff0c;你的主人已经答应坐第二把交椅了&#xf…

matlab实现Logistic回归

一、目的和要求 1.编程实现Logistic Regression并应用于数据集&#xff1b; 2.绘制二元分类函数、sigmoid函数和代价函数&#xff1b; 3.正则化logistic回归代价。 二、算法介绍 步骤&#xff1a; 选择一个合适的分类函数来实现分类&#xff08;Sigmoid函数&#xff09; …

OpenHarmony开发之图形UI组件解析

简介 图形UI组件实现了一套系统级的图形引擎。 该组件为应用开发提供UIKit接口&#xff0c;包括了动画、布局、图形转换、事件处理&#xff0c;以及丰富的UI组件。 组件内部直接调用HAL接口&#xff0c;或者使用WMS(Window Manager Service)提供的客户端与硬件交互&#xff…

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

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

哪些企业适合构建企业新媒体矩阵?

⭐关注矩阵通服务号&#xff0c;探索企业新媒体矩阵搭建与营销策略 新媒体矩阵就是在某个平台或多个平台开设、联动多个账号&#xff0c;组建有关系的不同账号集群。 在数字化转型的浪潮下&#xff0c;矩阵已然成为企业实现品牌塑造、市场开拓与用户互动的重要阵地。 然而&…

算法沉淀——贪心算法六(leetcode真题剖析)

算法沉淀——贪心算法六 01.坏了的计算器02.合并区间03.无重叠区间04.用最少数量的箭引爆气球 01.坏了的计算器 题目链接&#xff1a;https://leetcode.cn/problems/broken-calculator/ 在显示着数字 startValue 的坏计算器上&#xff0c;我们可以执行以下两种操作&#xff1…

FPGA 实现CRC-8/ROHC(已验证)

1 FPGA crc代码在线生成工具 工具1 // vim: ts=4 sw=4 expandtab// THIS IS GENERATED VERILOG CODE. // https://bues.ch/h/crcgen // // This code is Public Domain. // Permission to use, copy, modify, and/or distribute this software for any // purpose with or wi…

C# 读取二维数组集合输出到Word预设表格

目录 应用场景 设计约定 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 DataSet转二维数组 导出写入WORD表格 调用举例 小结 应用场景 存储或导出个人WORD版简历是招聘应用系统中的常用功能&#xff0c;我们通常会通过应用系统采集用户的个人简历信息…

网络通信——IP地址、端口号、协议(TCP、UDP)

通信架构 网络通信三要素 IP地址 IPv4地址 IPv6地址 IP域名 IP常识 端口号 概念 协议 开放式网络互联标准&#xff1a;OSI、TCP/IP 传输层的2个通信协议——UDP、TCP TCP协议&#xff1a;三次握手建立建立可靠连接 进行三次握手的原因&#xff1a;为了确保客户端和服务端…

jsp学习

1.新建文件&#xff0c;创建web动态项目 2.项目点击next两下&#xff0c;点击勾选gentear&#xff0c;点击finish 3.文件成功后是有jsp文件 4.在webapp新建jsp文件 5. 使用模板html5建立文件 <% page language"java" contentType"text/html; charsetUTF-8&qu…

【Flutter学习笔记】10.2 组合现有组件

参考资料&#xff1a; 《Flutter实战第二版》 10.2 组合现有组件 在Flutter中页面UI通常都是由一些低级别组件组合而成&#xff0c;当我们需要封装一些通用组件时&#xff0c;应该首先考虑是否可以通过组合其他组件来实现&#xff0c;如果可以&#xff0c;则应优先使用组合&…

Redis中的过期键删除策略

过期键删除策略 概述 数据库键的过期时间都保存在过期字典中&#xff0c;并且知道根据过期时间去判断一个键是否过期,剩下的问题是&#xff1a;如果一个键过期了&#xff0c;那么它什么时候会被删除呢? 这个问题有三种可能的答案&#xff0c;它们分别代表了三种不同的删除策…

阿里云国际该如何设置DDoS高防防护策略?

DDoS高防提供针对网络四层DDoS攻击的防护策略设置功能&#xff0c;例如虚假源和空连接检测、源限速、目的限速&#xff0c;适用于优化调整非网站业务的DDoS防护策略。在DDoS高防实例下添加端口转发规则&#xff0c;接入非网站业务后&#xff0c;您可以单独设置某个端口的DDoS防…

专题三 - 二分 - leetcode 704. 二分查找 | 简单难度

leetcode 704. 二分查找 leetcode 704. 二分查找 | 简单难度1. 题目详情1. 原题链接2. 基础框架 2. 解题思路1. 题目分析2. 算法原理3. 时间复杂度 3. 代码实现4. 知识与收获 leetcode 704. 二分查找 | 简单难度 1. 题目详情 给定一个 n 个元素有序的&#xff08;升序&#x…

3.3网安学习第三阶段第三周回顾(个人学习记录使用)

本周重点 ①渗透测试介绍 ②sqlmap注入扫描工具 ③XSS脚本注入 本周主要内容 ①渗透测试介绍 一、渗透测试 通过模拟黑客对系统进行攻击的手段或技术&#xff0c;在被测系统中发现漏洞的行为。除了提供漏洞之外&#xff0c;还需提供安全意见。 与黑站不同&#xff0c;渗…

仿牛客项目Day10——统一异常处理、记录日志

统一异常处理 在controller里创建advice包&#xff0c;创建ExceptionAdvice类 这个注解括号里面是指只扫描被Controller标注的bean 请求request、响应response、异常exception 普通请求和异步请求的区别在于传的是json还是html吗&#xff1f; 统一记录日志 面向切面编程&…