基于minio的dababend部署总结

news2024/11/17 11:50:59

Databend 是一款开源、弹性、低成本,基于对象存储也可以做实时分析的新式数仓。期待您的关注,一起探索云原生数仓解决方案,打造新一代开源 Data Cloud。

Minio搭建

minio 192.168.10.159

cd /data 
mkdir minio
cd minio 
wget https://dl.min.io/server/minio/release/linux-amd64/minio
export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin
#./minio server ./data
./minio server --address :29000 ./data

利用 WEB 界面打开 MinIO 管理测,打开后创建一个: databend bucket

 databend下载

官网下载:只能下载最新版本,最新版本的使用可能需要升级相应的依赖库,有风险的话,就在docker中使用。

Databend - Activate your Object Storage for real-time analytics | Databend

历史版本下载:

Tags · datafuselabs/databend · GitHub

经验:可以通过修改如下链接的版本号进行下载

https://repo.databend.rs/databend/v0.9.50-nightly/databend-v0.9.50-nightly-x86_64-unknown-linux-musl.tar.gz

mkdir databend_cluster

tar -zxvf databend-v0.9.50-nightly-x86_64-unknown-linux-musl.tar.gz -C databend_cluster

单点部署

databend-query 的配置

# Storage config.
[storage]
# fs | s3 | azblob | obs
type = "s3"

# Set a local folder to store your data.
# Comment out this block if you're NOT using local file system as storage.
[storage.fs]
data_path = "./.databend/stateless_test_data"

# To use S3-compatible object storage, uncomment this block and set your values.
[storage.s3]
bucket = "databend"
endpoint_url = "https://192.168.10.159:29000"
access_key_id = "minioadmin"
secret_access_key = "minioadmin"

启动 Databend

./script/start.sh
ps axu |grep databend

关闭 Databend

./script/stop.sh 

连接 Databend

Databend 默认对外有三个服务端口:
MySQL : 3307 支持 MySQL cli,应用程序连接。
Clickhouse: 8124 Clickhouse http handler 协议

这里我们以 MySQL client 连接举例:

mysql -h 127.0.0.1 -P3307 -uroot

需要注意 root 可以通过 localhost 实现无密码登录。Databend 权限管理参考了 MySQL 8.0 的设计,可以按 MySQL 8.0 的用户管理来管理 Databend 的用户。

mysql8 创建用户 

create user 'xx'@'%' identified by 'xxx';
grant all privileges on *.* to 'xx'@'%' with grant option;
flush privileges;

测试

mysql客户端登录以后

create database test;
use test;

#建表

CREATE TABLE `p_msg` (
  `id` int ,
  `tt` varchar(3000) ,
  `author` varchar(255) ,
  `tags` varchar(255) ,
  `insert_time` timestamp ,
  `pubtime` datetime  
) ;

#插入测试数据

INSERT INTO `test`.`p_msg`(`id`, `tt`, `author`, `tags`, `insert_time`, `pubtime`) VALUES (1, '“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”', 'Albert Einstein', 'change', '2022-10-07 10:32:00', '2022-10-07 10:32:00');

插入数据以后,minio的databend的bucket下回有数据进入。

 对应的测试表可以按要求查询到:

 来源:

基于 MinIO 部署单实例 Databend | 新手篇(1)

databend集群部署

Databend 集群中的概念

在 Databend 集群中分为两个角色:databend-meta 集群和 databend-query 集群。其中 databend-meta 集群要求先启动,它在生产环境中建议 awayson 状态,并至少 3 个节点;databend-query 集群,可以是多个。

在生产中,我们推荐可以全局部署一个 databend-meta 集群。databend-meta 对资源消耗不高,也可以和其它程序共用资源。

databend-query 默认是最大能力的并发,在单个 databend-query 节点下,一个 SQL 会尽最大努力把单节点的所有 CPU CORE 间并发;在集群模式下, databend-query 会把计算在整个集群中做并发调度。

集群资源隔离
在 databend 集群中,资源隔离有几个重要的概念: tenant_id, cluster_id, max_threads。 为了让大家更好的理解 databend 集群,我们需要先理解一下这三个概念。

1. tenant_id :租户 id, 用于标识 databend-query 属于哪个租户下面。当租户 tenant_id 一样时,这个 databend-query 就可以获取该租户下的:用户列表及权限, 对应的数据的定义相关等。

2. cluster_id :集群 id , 这个参数依附于 tenant_id,首先需要看它在哪个 tenant_id 下面,然后可以获取对应的 meta 数据, 然后再看是不是有同样的 cluster_id 成员。如果遇到同样的 cluster_id 成员就自动组成集群,可以在 system.clusters 表中查询到,之后 SQL 请求到该节点后,算力会在 tenant_id 和 cluster_id 一样的节点间协调。对于 tenant_id 一样, cluster_id 不一样的,可以起到算力隔离,但大家共享一份数据和用户列表。

 同一个 teant_id 下 meta 相应的信息是共享的, 相应的 cluster_id 是计算可以共享。所以 Databend 中支持原生的多租户模型,同一个租户内也支持多个 Cluster。

3. max_threads:控制一个 sql 在 databend-query 上可以用到多少个 cpu core, 默认是节点支持的 cpu core ,例如有一些复杂 SQL 在内存不足的情况下通过 max_threads 限制并发的数量,减少内存的占用。

集群规划

192.160.10.153 databend-meta(single)  databend-query

192.160.10.159 databend-meta  databend-query

192.160.10.160 databend-meta  databend-query

databend-meta集群 

/etc/hosts

192.168.10.153 meta01
192.168.10.159 meta02
192.168.10.160 meta03

192.160.10.153配置

vi configs/databend-meta.toml

log_dir                 = "/var/log/databend"
admin_api_address       = "0.0.0.0:28101"
grpc_api_address        = "0.0.0.0:9191"
# databend-query fetch this address to update its databend-meta endpoints list,
# in case databend-meta cluster changes.
grpc_api_advertise_host = "192.168.10.153"

[raft_config]
id            = 1
raft_dir      = "/var/lib/databend/raft"
raft_api_port = 28103

# Assign raft_{listen|advertise}_host in test config.
# This allows you to catch a bug in unit tests when something goes wrong in raft meta nodes communication.
raft_listen_host = "192.168.10.153"
raft_advertise_host = "192.168.10.153"

# Start up mode: single node cluster
single        = true

192.160.10.159配置

vi configs/databend-meta.toml

log_dir                 = "/var/log/databend"
admin_api_address       = "0.0.0.0:28101"
grpc_api_address        = "0.0.0.0:9191"
# databend-query fetch this address to update its databend-meta endpoints list,
# in case databend-meta cluster changes.
grpc_api_advertise_host = "meta02"

[raft_config]
id            = 2
raft_dir      = "/var/lib/databend/raft"
raft_api_port = 28103

# Assign raft_{listen|advertise}_host in test config.
# This allows you to catch a bug in unit tests when something goes wrong in raft meta nodes communication.
raft_listen_host = "meta02"
raft_advertise_host = "meta02"

# Start up mode: single node cluster
# single        = true
join            =["meta01:28103","meta03:28103"]

192.160.10.160配置

vi configs/databend-meta.toml

log_dir                 = "/var/log/databend"
admin_api_address       = "0.0.0.0:28101"
grpc_api_address        = "0.0.0.0:9191"
# databend-query fetch this address to update its databend-meta endpoints list,
# in case databend-meta cluster changes.
grpc_api_advertise_host = "meta03"

[raft_config]
id            = 3
raft_dir      = "/var/lib/databend/raft"
raft_api_port = 28103

# Assign raft_{listen|advertise}_host in test config.
# This allows you to catch a bug in unit tests when something goes wrong in raft meta nodes communication.
raft_listen_host = "meta03"
raft_advertise_host = "meta03"

# Start up mode: single node cluster
# single        = true
join            =["meta01:28103","meta02:28103"]

注意 join 节点里不能出现本机的 ip

启动meta节点

第一次需要注意,首先需要启第一个 single 等 true 的节点,然后启动其它节点。第一次启动外,也需要注意, 至少保证启动两个 meta 节点后,再启动 query 节点,否则可能出现 query 加不到集群的现象。

第二次启动,需要先启动非single一个节点,相隔2-3s 再启动single节点,最后启动其他非single节点。

启动databend-meta脚本

meta.sh

#!/bin/bash
ulimit  -n 65535
nohup bin/databend-meta --config-file=configs/databend-meta.toml  2>&1 >meta.log &

meta集群成员查看

需要查看single节点的admin_api_address端口。

curl 192.168.10.153:28101/v1/cluster/nodes

出现集群成员信息,代表集群搭建成功,否则需要查看日志。

databend-query集群

configs/databend-query.toml

Query 节点的配置可以是一样的,核心配置如下(注意并不是全部配置,不能直接复制):

flight_api_address = "0.0.0.0:9091"


# Storage config.
[storage]
# fs | s3 | azblob | obs
type = "s3"

# Set a local folder to store your data.
# Comment out this block if you're NOT using local file system as storage.
[storage.fs]
data_path = "./.databend/stateless_test_data"

# To use S3-compatible object storage, uncomment this block and set your values.
[storage.s3]
bucket = "databend"
endpoint_url = "https://192.168.10.159:29000"
access_key_id = "minioadmin"
secret_access_key = "minioadmin"

[meta]
# To enable embedded meta-store, set address to "".
embedded_dir = "./.databend/meta_embedded_1"
address = ["192.168.10.153:9191","192.168.10.159:9191","192.168.10.160:9191"]
username = "root"
password = "root"
client_timeout_in_second = 60
auto_sync_interval = 60

启动query节点

nohup bin/databend-query --config-file=configs/databend-query.toml 2>&1 >query.log &

查看query集群成员信息

select * from system.clusters;

 验证

在meta01节点,登录databend,进行建库,建表,入库的操作,在meta02和meta03节点上登录databend都可以查看到操作结果,说明集群搭建成功。

关闭进程脚本

#关闭meta进程

kill -9 `pgrep -f "bin/databend-meta"`

#关闭query进程

kill -9 `pgrep -f "bin/databend-query"`

来源:

Databend 集群部署 | 新手篇(2)_Databend的博客-CSDN博客

Databend 集群部署 | 新手篇(2)

Welcome | Databend

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

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

相关文章

vue3+vite——打测试包+正式包+本地预览打包后的文件——基础积累

最近在学习vue3vite的内容,发现vite和webpack类似,下面将区别及使用方法做一下记录: 1.vite添加环境配置文件 ... ├── src ... ├── .env # 通用环境变量配置 ├── .env.development …

基于Open3D的点云处理0-测试所用数据下载

地址:github 20220201-data 20220301-data

C. Binary String Copying - 思维

分析: 赛时我是直接模拟的,tle然后mle,补提,发现规律,每一个改变的字符串都只会对应一个需要改变的区间,例如第一个样例前两个101100 -> 011100和101100 -> 011100,对应区间在确定改变的范…

[个人笔记] Windows配置NTP时间同步

Windows - 运维篇 第六章 Windows配置NTP时间同步 Windows - 运维篇系列文章回顾Windows配置NTP时间同步域控环境的NTP配置工作组环境的NTP配置Windows的CMD部分命令集 参考来源 系列文章回顾 第一章 迁移WinSrv系统到虚拟机 第二章 本地安全策略xcopy实现实时备份文件夹内容 …

【Docker 学习笔记】Windows Docker Desktop 安装

文章目录 一、前言二、Windows Docker 安装1. 基于Hyper-V后端和Windows容器的安装2. 基于WSL2后端的安装(推荐)3. 安装Docker Desktop on Windows4. 启动并验证Docker Desktop 一、前言 Docker并非是一个通用的容器工具,它依赖于已存在并运…

Linux C语言实践eBPF

手动编译了解过程 通过对关键步骤make Msamples/bpf的实践,我们已经可以编译出内核源码中提供的ebpf样例。但这还不够我们充分地理解这个编译过程,我们将这编译过程拆解一下,拆解成可以一步步执行的那种,首先是环境准备&#xff…

算法通关村第二关——两两交换链表中的节点的问题解析

题目类型 链表反转 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点,且必须在不修改节点内部的值的情况下完成本题,即:只能进行节点交换 效果图 题目分析 如果原始顺序是 dummy(虚拟头节点) …

JavaSE复盘2

Collection接口的接口对象集合(单列集合) List接口:元素按照先后有序保存,可重复 LinkList接口实现类,链表,随机访问,没有同步,线程不安全ArrayList接口实现类,数组&…

❤️创意网页:打造炫酷网页 - 旋转彩虹背景中的星星动画

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 前言:欢迎踏入…

iOS - 检测项目中无用类和无用图片

一、无引用图片检测 LSUnusedResources 安装插件 LSUnusedResources ,用【My Mac】模拟器运行,如下图: Project Path 就是项目所在的路径,然后点击右下角 Search按钮,就可以看到被搜索出来的图片资源。 注意:这里被搜…

【TypeScript】类型声明及应用(二)

【TypeScript】类型声明及应用(二) 一、前言 TypeScript开发中需要对定义的变量指定类型,目前版本都支持哪些类型,每一个类型都有哪些含义,在这篇文章中,我们将会对其进行总结说明 二、JavaScript基本数据…

预约上门系统源码开发,改变服务行业的未来

预约上门系统源码开发是一项复杂而有挑战性的任务,但也是实现智能化预约服务的关键一步。通过自主开发预约上门系统的源码,企业可以完全定制系统的功能、界面和安全性,从而为用户提供更高效、便捷、个性化的预约体验。本文将带你深入了解预约…

【算法基础:动态规划】5.3 计数类DP(整数拆分、分拆数)

文章目录 例题:900. 整数划分解法1——完全背包解法2——分拆数⭐⭐⭐ 例题:900. 整数划分 https://www.acwing.com/problem/content/902/ 解法1——完全背包 容量是 n,物品的大小和价值是 1 ~ n 中的所有数字。 import java.util.*;pub…

软考A计划-系统集成项目管理工程师-项目人力资源管理-中

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

word2vec原理总结

参考文章:https://www.cnblogs.com/pinard/p/7160330.html word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的联系。 1 词向量编码 1.1 one…

【滑动窗口】算法实战

文章目录 一、算法原理二、算法实战1. leetcode209 长度最小的子数组2. leetcode3 无重复字符的最长子串3. leetcode1004 最大连续1的个数4. leetcode1685 将x减到0的最小操作数5. leetcode904 水果成篮6. leetcode438 找到字符串中所有字母异位词7. leetcode30 串联所有单词的…

助你丝滑过度到 Vue3 其他变化 ②⑨

作者 : SYFStrive 博客首页 : HomePage 📜: VUE3~TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 👉…

【COlor传感器】通过扰动调制光传感实现智能光传输的占用分布估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

重排链表——力扣143

文章目录 题目描述法一:寻找链表中点、链表逆序、链表合并 题目描述 法一:寻找链表中点、链表逆序、链表合并 void reorderList(ListNode* head){if(headnullptr){return;}// 找到中点 ListNode* mid FindMiddle(head);ListNode *h1head, *h2mid->ne…

数值分析第七章节 用Python实现非线性方程与方程组的数值解法

参考书籍:数值分析 第五版 李庆杨 王能超 易大义编 第7章 非线性方程与方程组的数值解法 文章声明:如有发现错误,欢迎批评指正 文章目录 迭代法求解 x e x − 1 0 xe^x-10 xex−10牛顿法求解 x e x − 1 0 xe^x-10 xex−10简化牛顿法求解 …