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 将会继续协作,为企业在数据驱动的新时代中蓬勃发展带来更多的可能性。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
IT 行业工作强度透视:每周 50 小时为常态,超 70 小时者屡见不鲜
禅道近期发布了《2023 年 IT 行业项目管理的调查报告》,该报告基于 1105 份有效问卷,受访者分布于 119 个城市。 以下是报告主要内容: 1、调查结果 城市分布:受访者覆盖了 119 个城市,显示了 IT 项目管理在地理上的广泛性。 行业分布:互联网和软件行业占主导地位,同时制造业和金融行业的增长表明数字化转型的加速。 公司规模:大多数受访者来自 500 人以上的大型公司。 所在岗位:项目经理是主要受访群体,显示了项目管理在 IT 行业的核心地位。 每周工作时长:50 小时工作制是最常见的,但也有不少人工作时长超过 70 小时,反映了 IT 行业工作强度的问题。 线上办公频率:线上办公模式有所增加,显示出疫情后工作模式的持续变化。 AI工具使用概况:近一半的受访者了解并使用了 AI 工具,反映了 AI 在提高工作效率方面的潜力。 2、项目管理 项目团队规模:大多数项目团队规模在 3 到 30 人之间。 项目平均时长:项目平均时长多集中在 1 到 3 个月、半年和大于一年,表明项目周期的多样性。 项目按期交付概况:大多数项目无法在截止日期前完成所有承诺,这可能与需求变更和估算...
- 下一篇
openGauss 5.0.0全密态数据库应用小试
前言 openGaussHCIA教材中,安全是一个重要的章节,在实际项目中,随着网络安全和信息安全形势的变化,企业也越来越重视数据库安全。去年在HALP内部进行openGauss培训时,安全特性就被学员们提出来要重点讲解,而全密态等值查询则又是其中重要的一环。根据官网介绍,实际上openGauss在早期的1.0.0版本就引入了全密态等值查询特性,因此下面结合操作举例,尝试对openGauss 5.0.0版本全密态的使用进行介绍,供有需要的同行参考,不当之处并请提出宝贵意见和建议。 一、教材中关于全密态的内容: (教材内容和官网基本一致) 全密态数据库 关于全密态数据库,官网上的介绍如下: 密态数据库意在解决数据全生命周期的隐私保护问题,使得系统无论在何种业务场景和环境下,数据在传输、运算以及存储的各个环节始终都处于密文状态。当数据拥有者在客户端完成数据加密并发送给服务端后,在攻击者借助系统脆弱点窃取用户数据的状态下仍然无法获得有效的价值信息,从而起到保护数据隐私的作用。 参见官网:https://docs.opengauss.org/zh/docs/5.0.0/docs/Aboutop...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度