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

在当今快速开展的云核算时代,跟着5G技能的普及和运用场景的丰富,企业面临着史无前例的数据存储应战。大规模数据存储变得日常化,伴跟着超大容量和快速改变的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_keysecret_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 将会继续协作,为企业在数据驱动的新时代中蓬勃开展带来更多的可能性。