开源、云原生且实时分析型的现代数据仓库DataBend的介绍,及其与其它开源文件存储的结合使用实例

news2024/9/23 17:20:26

DataBend介绍

Databend 是一个开源、云原生且实时分析型的现代数据仓库,旨在提供高效的数据存储和处理能力。它采用 Rust 语言开发,并支持 Apache Arrow 格式以实现高性能列式存储与查询处理。

主要特点:

  1. 云原生设计:Databend 构建在 Kubernetes 之上,具备弹性伸缩、水平扩展的能力,可轻松部署在公有云或私有云环境中。
  2. SQL 支持:Databend 具备完善的 SQL 查询功能,兼容 MySQL 协议,使得用户可以利用熟悉的 SQL 语法进行数据查询和处理。
  3. 性能优化:通过矢量化查询执行引擎和列式存储技术,Databend 可实现对大规模数据集的快速读取和分析。
  4. 对象存储集成:Databend 能够将数据存储在各种对象存储服务上,如 AWS S3、Azure Blob 存储、Google Cloud Storage 等,实现成本低廉的大规模存储。
  5. 实时分析:Databend 支持实时数据摄取和即时查询响应,适合于 BI 分析、日志分析、实时报表等应用场景。
  6. 社区驱动:作为开源项目,Databend 由活跃的开发者社区共同维护和贡献,持续迭代更新,增加新功能并改进现有特性。

使用场景示例:

  • 数据分析师可以使用 Databend 进行复杂的数据查询和数据分析。
  • 开发者可以构建实时数据管道,将流式数据写入 Databend 并立即进行查询和分析。
  • 数据科学家可以结合 Databend 和其他工具(如 Python 或 R)进行机器学习模型训练前的数据预处理工作。

部署与使用步骤:

  1. 下载或克隆 Databend 的源代码或二进制包。
  2. 根据官方文档配置所需的环境变量和服务参数,例如数据库 URL、连接凭据以及对象存储的访问信息。
  3. 启动 Databend 服务,通常可以通过命令行工具完成启动、停止和管理操作。
  4. 使用 MySQL 客户端或支持 MySQL 协议的应用程序连接到 Databend 数据库,并开始创建表、插入数据以及执行 SQL 查询。

Databend Cloud - Open Source Cloud Data Warehouse Alternative to Snowflake | Databend Cloud

Databend的安装

以下是一个简化的 Databend 安装和配置步骤,具体细节可能根据实际情况有所调整,请参照最新的官方文档进行操作。

1. 环境准备

确保你的机器上已安装 Rust 工具链(Rustup)以及 Docker。如果尚未安装,请参考以下链接进行安装:

  • Rustup: rustup.rs - The Rust toolchain installer
  • Docker: Install Docker Engine | Docker Docs

2. 安装 Databend

使用 Rust 工具链编译并安装 Databend:

# 克隆 Databend 仓库
git clone https://github.com/datafuselabs/databend.git
cd databend

# 使用 nightly 版本的 Rust 编译器构建 Databend
rustup default nightly
cargo build --release

# 创建 Databend 的数据存储目录(例如 /var/lib/databend)
sudo mkdir -p /var/lib/databend
sudo chown $(id -u):$(id -g) /var/lib/databend

3. 配置与运行 Databend

Databend 提供了单机模式和分布式模式的部署方式。这里我们先介绍单机模式下的配置与启动:

# 运行一个单节点的 Databend 服务
./target/release/databend-server --config-path=config.toml.example

# 或者如果你想在后台运行(daemon mode),可以加上 `--log-file` 参数指定日志文件
./target/release/databend-server --config-path=config.toml.example --log-file=/var/log/databend/server.log &

上述命令中,config.toml.example 是一个示例配置文件,你需要根据实际需求修改它。例如设置监听地址、端口、数据目录等信息。

4. 配置数据库连接

默认情况下,Databend 启动后会在本地监听 3307 端口作为 SQL 查询接口。你可以通过任何支持 MySQL 协议的客户端连接到 Databend。

mysql -h localhost -P 3307 -u root

5. 配置持久化存储 (可选)

如果你希望将数据持久化存储在某个位置(比如 S3 或 MinIO),则需要在配置文件中添加对应的存储后端,并提供相应的访问凭证。

6. 分布式部署

对于生产环境或大规模测试,你可能需要部署多节点集群。请参考 Databend 的 Kubernetes Helm Chart 或 Docker Compose 文件来搭建分布式集群。

注意事项:

  • 在正式环境中,请确保正确配置安全性相关的选项,如密码加密、访问控制等。
  • 对于持久化存储支持,Databend 可以配置为使用各种对象存储服务,包括但不限于 AWS S3、MinIO、Google Cloud Storage 等。

请查阅最新版的 Databend 文档获取详细指导和最佳实践:Databend - The Future of Cloud Data Analytics. | Databend

基于Docker安装和配置使用

atabend 提供了 Docker 镜像,使得用户可以通过 Docker 容器快速部署和运行 Databend 数据库。以下是一个使用 Docker 安装 Databend 的详细配置步骤:

1. 拉取 Databend Docker 镜像

首先,确保已安装 Docker,并在终端中执行以下命令以拉取最新的 Databend Docker 镜像。请注意,实际镜像名可能会随着版本更新而变化,请参考官方文档获取最新版本。

docker pull databend-docker:databend-query # 查询引擎(databend-query)
docker pull databend-docker:databend-meta # 元数据服务(databend-meta)

2. 创建用于持久化存储的目录(可选)

为了在容器重启后仍能保留数据,可以创建本地主机上的目录用于持久化存储元数据和服务数据:

mkdir -p /path/to/databend/meta-data
mkdir -p /path/to/databend/query-data

3. 运行 Databend Meta 服务

docker run -d --name databend-meta \
  -v /path/to/databend/meta-data:/var/lib/databend-meta \
  -e "DATABEND_QUERY_HTTP_PORT=8001" \
  databend-docker:databend-meta

这里,-v 参数将主机上的目录映射到容器内的 /var/lib/databend-meta 目录。

4. 运行 Databend Query 引擎

docker run -d --name databend-query \
  --link databend-meta:databend-meta \
  -v /path/to/databend/query-data:/var/lib/databend-query \
  -p 8080:8080 \
  databend-docker:databend-query

这里的 --link 参数用于连接查询引擎与元数据服务容器,使查询引擎能够访问元数据服务。同时 -p 参数用于映射查询引擎的 HTTP 端口到宿主机上。

5. 配置环境变量(可选)

根据需要,可以设置其他环境变量来配置数据库的行为,例如日志级别、监听地址等。请查阅 Databend 文档了解可用的环境变量列表。

6. 访问和测试 Databend

启动容器后,可以通过如下方式访问 Databend 查询引擎:

  • HTTP API: 在浏览器或 Postman 中访问 http://localhost:8080/ (如果映射的是本机端口)。
  • SQL Client:通过 MySQL 客户端工具如 MySQL Workbench 或者命令行工具连接至 Databend,端口通常为 3307,用户名和密码可能需要查看具体文档或环境变量配置。

请始终参照最新的官方文档进行操作,因为具体的参数和配置可能会随时间发生变化。以上示例是基于假设的默认配置给出的。

Centos 9下安装和使用

在CentOS 9系统上安装Databend的大致步骤(以最新的官方文档为准):

1. 确保环境准备就绪

  • CentOS 9系统已经安装了必要的开发工具和依赖库。
  • Rust编程语言环境已安装。
# 更新系统并安装必要软件包
sudo dnf update -y
sudo dnf install -y curl git make gcc-c++ zlib-devel openssl-devel

# 安装Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

2. 安装Databend

  • 使用Rust的Cargo来构建和安装Databend的服务器部分(metasrv和databend-query)。
# 克隆Databend源代码
git clone https://github.com/datafuselabs/databend.git
cd databend

# 构建并安装
cargo build --release --bin metasrv
cargo build --release --bin databend-query

# 创建用于存放运行时数据的目录
mkdir -p /var/lib/databend/meta /var/lib/databend/data

3. 配置与启动服务

  • 配置Databend的元数据存储、日志路径等参数,并启动服务。
# 编写配置文件(这里仅提供示例配置)
cat << EOF > /etc/databend/config.toml
[meta_service]
listen = "127.0.0.1:9191"
data_dir = "/var/lib/databend/meta"

[databend_query]
http_server_address = "0.0.0.0:8000"
query_pool_size = 4
local_data_path = "/var/lib/databend/data"
EOF

# 启动metasrv服务
./target/release/metasrv --config /etc/databend/config.toml &

# 启动databend-query服务
./target/release/databend-query --config /etc/databend/config.toml &

4. 验证安装

  • 在本地或通过网络连接到Databend Query API端口进行验证。
# 如果是在本地机器上安装,可以尝试执行一个简单的查询
curl -G "http://localhost:8000/v1/query" --data-urlencode 'sql=SELECT version()' 

# 应该返回类似如下信息:
{"results":[{"meta":{"columns":[{"name":"version","type":5}],"rows":[["nightly"]]},"stats":{"elapsed_time":...}}]}

注意事项:

  • 实际部署中,您可能需要为Databend设置持久化存储,比如挂载适当的磁盘分区或使用云存储服务。
  • 生产环境中,请确保使用稳定的版本而非nightly版,并根据官方推荐的最佳实践进行配置和管理。
  • Databend还支持通过Docker容器方式部署,对于生产部署而言,采用Docker Compose或者Kubernetes等方式更加便捷且易于维护。

请始终查阅最新版的Databend官方文档获取详细的安装指导:https://docs.databend.rs/

Databend、lakeFS 和 MinIO三者结合

高性能、可扩展、分布式对象存储系统MinIO的介绍、部署步骤以及代码示例-CSDN博客

 

Databend、lakeFS 和 MinIO 的功能介绍:

  1. Databend

    • Databend 是一个开源的实时分析型数据仓库,它构建在 Rust 之上,并兼容 Apache Arrow 格式。
    • 提供了类似 Snowflake 的云原生架构,支持高并发查询和近实时的数据插入与更新。
    • 支持 SQL 查询语言,可以处理 PB 级别的数据并提供亚秒级延迟的交互式分析体验。
    • 集成了多种数据源,并且可以通过 JDBC/ODBC 连接各种 BI 工具进行数据分析。
  2. lakeFS

    • lakeFS 是一种基于 Git-like 分支模型的对象存储管理工具,适用于 AWS S3 或其他 S3 兼容存储服务(如 MinIO)。
    • 它为数据湖提供了版本控制功能,允许用户对存储在对象存储中的数据集创建分支、合并、回滚等操作。
    • 用户可以在不同的分支上进行数据开发、测试和生产流程,增强了数据资产管理能力,简化了数据流水线的治理和审计工作。
  3. MinIO

    • MinIO 是一款高性能、分布式的对象存储系统,完全兼容 Amazon S3 API。
    • 可以部署在本地或云端,用于大规模非结构化数据存储,包括大数据分析所需的原始数据、备份和归档数据等。
    • 提供高可用性、可扩展性和安全性,适合用作企业内部或者混合云环境下的对象存储解决方案。

三者结合使用的方式及示例:

假设您希望将 MinIO 作为底层存储,通过 lakeFS 对其上的数据进行版本管理和分支操作,并使用 Databend 对这些数据进行查询分析。以下是大致的配置步骤和使用方法:

配置步骤:

  1. 部署 MinIO

    • 在服务器集群或单台机器上安装并启动 MinIO,确保其网络可达并已配置好适当的访问密钥和私有密钥。
  2. 配置 lakeFS

    • lakectl init <lakefs-server-url> my-repo s3://<minio-bucket-name>
  3. 上传数据到 lakeFS

    • lakectl cp local-data.csv lakefs://my-repo/main/data.csv
      lakectl branch create my-repo/dev --parent main
      lakectl cp local-data-dev.csv lakefs://my-repo/dev/data.csv
  4. 配置 Databend 数据源

    • 在 Databend 中设置一个 S3 数据源,指向 lakeFS 的其中一个分支(例如 main 分支),这样 Databend 就能读取该分支下的数据进行分析。
    • 更新 Databend 的 catalog 配置文件,添加 S3 存储连接信息,并指定 bucket 名称(这里会是 lakeFS 虚拟出来的 bucket)以及正确的 endpoint URL(lakeFS 服务器地址)。
  5. 在 Databend 中执行查询

    • SELECT * FROM "s3://my-repo/main/data.csv" (format CSV);

示例场景:

  • 数据开发阶段

    • 开发团队成员在 lakeFS 上的 dev 分支上进行数据清洗、转换等操作,完成后提交更改。
  • 代码审核和合并

    • 通过 lakeFS 的 merge 功能将 dev 分支的更改合并到 main 分支。
  • 数据验证与分析

    • 数据分析师在 Databend 中选择 main 分支作为数据源,运行 SQL 查询验证数据质量和分析结果。
  • 问题排查与回滚

    • 如果发现主分支数据出现问题,可以通过 lakeFS 回滚到特定版本,并在修复后再合并到主分支;Databend 自动获取最新版本数据进行查询分析。

请注意,实际集成时需要根据各自的官方文档详细配置参数,并且可能需要额外的适配层或中间件来确保各组件之间的无缝对接。由于不同项目之间接口可能会有所变化,请查阅最新的文档和指南。

 

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

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

相关文章

[VUE]1-创建vue工程

目录 基于脚手架创建前端工程 1、环境要求 2、操作过程 3、工程结构 4、启动前端服务 &#x1f343;作者介绍&#xff1a;双非本科大三网络工程专业在读&#xff0c;阿里云专家博主&#xff0c;专注于Java领域学习&#xff0c;擅长web应用开发、数据结构和算法&#xff0c…

即时战略游戏的AI策略思考

想起来第一次玩RTS游戏&#xff0c;就是框住一大群兵进攻&#xff0c;看他们把对面消灭干净……我接触的第一款游戏是《傲世三国》那会儿是小学&#xff0c;后来高中接触了魔兽地图编辑器&#xff0c;我发现自己喜欢直接看属性而省去争论和试验的步骤——我喜欢能一眼看透的感觉…

20240107移远的4G模块EC20在Firefly的AIO-3399J开发板的Android11下调通能上网

20240107移远的4G模块EC20在Firefly的AIO-3399J开发板的Android11下调通能上网 2024/1/7 11:17 开发板&#xff1a;Firefly的AIO-3399J【RK3399】SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.0.tar.bz2.ab …

【Spring实战】25 Spring Boot Admin 应用

文章目录 1. 查看健康信息2. 使用 Micrometer 和 "/metrics"3. 管理包和类的日志级别4. 其他功能总结 Spring Boot Admin 是一个功能强大的工具&#xff0c;用于监控和管理多个 Spring Boot 应用程序。通过上一篇文章 【Spring实战】24 使用 Spring Boot Admin 管理…

Android getApplication()、getApplicationContext的区别

在Android中&#xff0c;getApplication()和getApplicationContext()是两种获取应用程序上下文的方法&#xff0c;但它们有一些细微的区别。 getApplication()方法&#xff1a; getApplication()方法通常用于Activity或Fragment中&#xff0c;它返回当前Activity或Fragment所属…

MySQL-存储引擎

简介&#xff1a;存储引擎是存储数据&#xff0c;建立索引&#xff0c;更新/查询数据等技术的实现方式。存储引擎是基于表的&#xff0c;而不是基于库的&#xff0c; (同一个数据库的不同表可以选择不同的存储引擎) 所以存储引擎也可被称为表类型。 我们输入 SHOW CREATE TAB…

Django 10 表单

表单的使用流程 1. 定义 1. terminal 输入 django-admin startapp the_14回车 2. tutorial子文件夹 settings.py INSTALLED_APPS 中括号添加 "the_14", INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib…

Kafka(五)生产者

目录 Kafka生产者1 配置生产者bootstrap.serverskey.serializervalue.serializerclient.id""acksallbuffer.memory33554432(32MB)compression.typenonebatch.size16384(16KB)max.in.flight.requests.per.connection5max.request.size1048576(1MB)receive.buffer.byte…

Fowsniff

靶场搭建 遇到扫描不到的情况&#xff0c;可以尝试改靶机的网络为NAT模式&#xff0c;在靶机启动时按”esc“&#xff0c;进入Advanced options for Ubantu&#xff0c;选择recovery mode&#xff0c;选择network&#xff0c;按方向键”→“&#xff0c;OK&#xff0c;然后res…

Python爬虫获取百度的图片

一. 爬虫的方式&#xff1a; 主要有2种方式: ①ScrapyXpath (API 静态 爬取-直接post get) ②seleniumXpath (点击 动态 爬取-模拟) ScrapyXpath XPath 是 Scrapy 中常用的一种解析器&#xff0c;可以帮助爬虫定位和提取 HTML 或 XML 文档中的数据。 Scrapy 中使用 …

VMware NAT 模式,网关无法ping通 网关解决办法

开启红框服务即可。。 参考&#xff1a;VMware NAT 模式&#xff0c;网关无法ping通 网关解决办法_vmware设置net,本机ping不通网关-CSDN博客

【代码】Keras3.0:实现残差连接

简介 残差连接是一种非常重要的网络结构创新&#xff0c;最早被广泛应用于ResNet&#xff08;Residual Neural Network&#xff09;模型中&#xff0c;由何凯明等人在2015年的论文"Deep Residual Learning for Image Recognition"中提出。 核心思想 通过引入“short…

【Sharding-Sphere 整合SpringBoot】

Sharding-Jdbc在3.0后改名为Sharding-Sphere。Sharding-Sphere相关资料&#xff0c;请自行网上查阅&#xff0c;这里仅仅介绍了实战相关内容&#xff0c;算是抛砖引玉。 Sharding-Sphere 整合SpringBoot 一、项目准备二、项目实战1. pom.xml及application.yml2. OrderInfoCont…

大数据 Yarn - 资源调度框架

Hadoop主要是由三部分组成&#xff0c;除了前面我讲过的分布式文件系统HDFS、分布式计算框架MapReduce&#xff0c;还有一个是分布式集群资源调度框架Yarn。 但是Yarn并不是随Hadoop的推出一开始就有的&#xff0c;Yarn作为分布式集群的资源调度框架&#xff0c;它的出现伴随着…

Mac M1 Parallels CentOS7.9 Deploy Docker + Rancher + K8S(HA+More Master)

一、准备虚拟机资源 虚拟机清单 机器名称IP地址角色rancher10.211.55.200管理K8S集群k8svip10.211.55.199K8S VIPmaster0110.211.55.201K8S集群主节点master0210.211.55.202K8S集群主节点master0310.211.55.203K8S集群主节点node0110.211.55.211K8S集群从节点node0210.211.55…

nvm安装教程,实现node的多版本管理(图文界面)

目录 前言1. 安装配置2. 使用方式 前言 由于前端项目不同的node版本&#xff0c;导致重复的卸载安装会比较麻烦&#xff0c;对此需要nvm来管理 类似python版本的差异&#xff0c;可以使用虚拟环境管理&#xff08;anconda&#xff09;&#xff0c;在我原先的文章也有讲解过 …

Hive精选10道面试题

1.Hive内部表和外部表的区别&#xff1f; 内部表的数据由Hive管理&#xff0c;外部表的数据不由Hive管理。 在Hive中删除内部表后&#xff0c;不仅会删除元数据还会删除存储数据&#xff0c; 在Hive中删除外部表后&#xff0c;只会删除元数据但不会删除存储数据。 内部表一旦…

Basal前端梳理

Basalt前端逻辑梳理 TBB安装参考 https://zhuanlan.zhihu.com/p/480823197 代码注释参考 https://blog.csdn.net/qq_39266065/article/details/106175701#t7 光流追踪参考 https://blog.csdn.net/weixin_41738773/article/details/130282527 VI Odometry KLT tracking 原理 …

new和delete表达式的工作步骤

new表达式工作步骤 调用一个operator new库函数开辟未类型化的空间 void *operator new(size_t); 在为类型化的空间上调用构造函数&#xff0c;初始化对象的成员 返回相应类型的指针 delete表达式工作步骤 调用相应类型的析构函数,但析构函数并不能删除对象所在的空间&…

【linux学习笔记】网络

目录 【linux学习笔记】网络检查、监测网络ping-向网络主机发送特殊数据包traceroute-跟踪网络数据包的传输路径netstat-检查网络设置及相关统计数据 【linux学习笔记】网络 检查、监测网络 ping-向网络主机发送特殊数据包 最基本的网络连接命令就是ping命令。ping命令会向指…