SmartbiMPP 高速缓存库,列式数据库管理系统,用于指标库和数据抽取功能。
SmartbiMPP支持 22.3及以上版本,低于该版本则需自行更新。更新方法可参考文档MPP更新 安装包请联系Smartbi官方支持获取。 本文档主要说明2个节点如何部署多副本集群 |
集群地址:
IP | 主机名 | 角色 |
---|---|---|
10.10.35.162 | 10-10-35-162 | keeper-1,smartbimpp |
10.10.35.163 | 10-10-35-163 | keeper-2,smartbimpp |
10.10.35.164 | 10-10-35-164 | keeper-3 |
官方预构建的二进制文件通常针对x86_64进行编译,并利用
|
安装权限要求:
安装时用root用户运行或使用具有 sudo权限的用户执行。推荐使用root用户安装
所有集群内的主机均需进行防火墙配置。 |
为了便于安装,建议在安装前关闭防火墙。使用过程中,为了系统安全可以选择启用防火墙,但必须启用Smartbi mpp使用到的相关端口。
临时关闭防火墙(立即生效)
systemctl stop firewalld |
永久关闭防火墙(重启后生效)
systemctl disable firewalld |
查看防火墙状态
systemctl status firewalld |
相关服务及端口对照表
服务名 | 开放端口 |
---|---|
smartbimpp | 9000,8123,9009 |
keeper | 9181,9444 |
如果确实需要打开防火墙安装,需要给防火墙放开以下需要使用到的端口
开启端口:9000、8123、9181、9444、9009
firewall-cmd --zone=public --permanent --add-port=9000/tcp firewall-cmd --zone=public --permanent --add-port=8123/tcp firewall-cmd --zone=public --permanent --add-port=9009/tcp firewall-cmd --zone=public --permanent --add-port=9181/tcp firewall-cmd --zone=public --permanent --add-port=9444/tcp |
配置完以后重新加载firewalld,使配置生效
firewall-cmd --reload |
查看防火墙的配置信息
firewall-cmd --list-all |
所有集群内的主机均需设置系统环境 |
临时关闭selinux,立即生效,不需要重启服务器。
setenforce 0 |
永久关闭selinux,修改完配置后需要重启服务器才能生效
sed -i 's/=enforcing/=disabled/g' /etc/selinux/config |
建议关闭服务器虚拟内存,避免查询期间使用虚拟内存导致查询变慢和查询异常。 swapoff -a #临时关闭 |
在 /etc/security/limits.conf 文件末尾加入以下内容:
* soft nofile 65536 * hard nofile 65536 * soft nproc 131072 * hard nproc 131072 |
在/etc/hosts 文件末尾添加:
10.10.35.162 10-10-35-162 10.10.35.163 10-10-35-163 10.10.35.164 10-10-35-164 |
Centos 7.x/Redhat7.x
软件 | 安装包 |
---|---|
SmartbiMPP | clickhouse-common-static-22.3.12.19.x86_64.rpm |
clickhouse-server-22.3.12.19.x86_64.rpm | |
clickhouse-client-22.3.12.19.x86_64.rpm | |
libicu-50.2-3.el7.x86_64.rpm |
上传SmartbiMPP安装介质到CentOS操作系统,本文档安装包存放在/data目录下
1、所有集群内的主机均需安装smartbimpp 2、本章节所有操作都需要在所有的节点进行配置 |
若安装过程中提示缺少相关依赖,则需先安装依赖包 例如:rpm -ivh libicu-50.2-3.el7.x86_64.rpm |
cd /data rpm -ivh clickhouse-common-static-22.3.12.19.x86_64.rpm rpm -ivh clickhouse-server-22.3.12.19.x86_64.rpm #安装此rpm时,会提示是否设置默认数据库用户密码,不设置则直接回车,设置则输入密码后回车 rpm -ivh clickhouse-client-22.3.12.19.x86_64.rpm |
SmartbiMPP配置文件:/etc/clickhouse-server/config.xml
SmartbiMPP用户配置文件:/etc/clickhouse-server/users.xml
修改的配置文件/etc/clickhouse-server/config.xml,配置日志路径。
如修改日志目录,服务启动时可能会提示目录权限不足,需要给目录添加权限:
chown -R clickhouse.clickhouse <新的日志目录> |
修改的配置文件/etc/clickhouse-server/config.xml,
8123是JDBC驱动的连接端口。
9000是clickhouse-client的连接端口。
9009是用于集群之间数据交换
PS:一般不建议修改端口配置
数据存储目录用来存储Smartbi Mpp的数据文件,可以设置其他目录用于存储Smartbi Mpp的数据文件,如果指定其他目录,服务启动时可能会提示目录权限不足,需要为指定的目录添加权限:
chown -R clickhouse.clickhouse <新数据目录>
修改的配置文件/etc/clickhouse-server/config.xml,设置数据目录
修改的配置文件/etc/clickhouse-server/config.xml,放开注释即可。IPV4地址和IPV6地址只能配置一个,否则会出现端口冲突的报错。
开启监听0.0.0.0的配置。
修改的配置文件/etc/clickhouse-server/users.xml,
单位是Byte,默认值是10G。根据实际情况配置内存值
(可选)查询语句大小限制,默认的max_query_size最大是256 KiB,如果查询语句比较大,可以配置此项,下图配置为500M,可自行调整,但不超过mpp最大内存
如果安装rpm时已经配置了用户密码,可以跳过此步骤
修改的配置文件/etc/clickhouse-server/users.xml
echo -n "manager" | sha256sum | tr -d '-' |
设置密码
三个节点全部按照上面的指导部署单节点成功后,开始配置部署集群。
部署架构图:
如上图所示,需要在服务器1,服务器2上配置SmartbiMPP的1分片2副本集群。
需要在3个服务器节点配置keeper集群。
具体操作如下:
配置分片集群和副本集群:
在服务器1,服务器2的smartbiMPP节点,按以下要求进行配置:
修改的配置文件/etc/clickhouse-server/config.xml文件
vi /etc/clickhouse-server/config.xml |
找到<remote_servers>标签,在标签下面增加集群配置。
如果smartbiMPP只有两个节点,建议配置1分片2副本集群。参考配置如下:
<!-- 集群名称 --> <smartbi_cluster_1S_2R> <!-- 分片1 --> <shard> <internal_replication>true</internal_replication> <!-- 副本1 --> <replica> <!-- 副本1对应主机地址,端口 --> <host>10-10-35-183</host> <port>9000</port> <!-- 集群分片节点的用户名和密码 --> <user>default</user> <password>manager</password> </replica> <!-- 副本2 --> <replica> <!-- 副本2对应主机地址,端口 --> <host>10-10-35-184</host> <port>9000</port> <!-- 集群分片节点的用户名和密码 --> <user>default</user> <password>manager</password> </replica> </shard> </smartbi_cluster_1S_2R> |
1、如果集群没有密码,可以不配置user和password标签。生产环境建议配置账户密码,保证数据安全。 2、password标签仅支持明文密码。 |
在服务器1,服务器2,服务器3的smartbiMPP节点,按以下要求进行配置:
配置keeper集群信息
找到<zookeeper>标签,放开zookeeper集群的注释,参考以下说明进行配置。
<!-- keeper配置标签起始点 --> <zookeeper> <!-- keeper节点1配置 --> <node> <host>10-10-35-183</host> <port>9181</port> </node> <!-- keeper节点3配置 --> <node> <host>10-10-35-184</host> <port>9181</port> </node> <!-- keeper节点3配置 --> <node> <host>10-10-35-185</host> <port>9181</port> </node> </zookeeper> |
1、keeper是clickhouse研发的集群数据同步工具,具体功能作用类似zookeeper。 2、由于keeper和zookeeper一样,使用选举方式指定主(leader)节点,所以keeper集群也和zookeeper一样,要求配置奇数个节点,最少3个节点。 3、抽取数据或查询数据时,keeper会有比较大的磁盘io压力,建议keeper的存储目录单独挂载一个硬盘,最好是固态硬盘。 |
smartbimpp-cluster-1节点:
配置keeper节点
修改集群配置文件
vi /etc/clickhouse-server/config.xml |
keeper服务是集成在clickhouse的进程服务中的,但是需要单独配置开启,具体方式如下:
<!-- keeper_server配置标签,表示开启本节点的keeper服务 --> <keeper_server> <!-- keeper服务的端口 --> <tcp_port>9181</tcp_port> <!-- keeper服务的server_id,一般第一个节点配置1,第二个节点配置2,以此类推 --> <server_id>1</server_id> <!-- keeper服务的日志存储路径,可以自行指定,此目录需要配置clickhouse用户的读写权限。 --> <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path> <!-- keeper服务的快照存储路径,可以自行指定,此目录需要配置clickhouse用户的读写权限。 --> <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path> <!-- keeper服务的其他参数信息,保持默认即可 --> <coordination_settings> <operation_timeout_ms>10000</operation_timeout_ms> <session_timeout_ms>30000</session_timeout_ms> <raft_logs_level>trace</raft_logs_level> </coordination_settings> <raft_configuration> <!-- keeper服务第一个节点配置信息 --> <server> <id>1</id> <hostname>10-10-35-183</hostname> <port>9444</port> </server> <!-- keeper服务第二个节点配置信息 --> <server> <id>2</id> <hostname>10-10-35-184</hostname> <port>9444</port> </server> <!-- keeper服务第三个节点配置信息 --> <server> <id>3</id> <hostname>10-10-35-185</hostname> <port>9444</port> </server> </raft_configuration> </keeper_server> |
配置smartbiMPP集群的宏变量
找到<macros>标签,并且放开注释。具体配置参考以下说明。
如果只有2个SmartbiMPP节点
<macros> <!-- smartbi_cluster_1S_2R集群的分片名称 --> <smartbi_cluster_1S_2R_shard>01</smartbi_cluster_1S_2R_shard> <!-- smartbi_cluster_1S_2R集群的副本名称 --> <smartbi_cluster_1S_2R_replica>ch-01-01</smartbi_cluster_1S_2R_replica> </macros> |
1、macros宏变量的参数变量命名规范: 集群分片名称:集群名称_shard 集群副本名称:集群名称_replica 集群名称可以参考上面的<remote_servers>标签里面配置的集群名称。 例如: smartbi_cluster_1S_2R_shard对应的是smartbi_cluster_1S_2R集群的分片名称 smartbi_cluster_1S_2R_replica对应的是smartbi_cluster_1S_2R集群的副本名称 |
smartbimpp-cluster-2节点:
配置keeper节点
修改集群配置文件
vi /etc/clickhouse-server/config.xml |
keeper服务是集成在clickhouse的进程服务中的,但是需要单独配置开启,具体方式如下:
<!-- keeper_server配置标签,表示开启本节点的keeper服务 --> <keeper_server> <!-- keeper服务的端口 --> <tcp_port>9181</tcp_port> <!-- keeper服务的server_id,一般第一个节点配置1,第二个节点配置2,以此类推 --> <server_id>2</server_id> <!-- keeper服务的日志存储路径,可以自行指定,此目录需要配置clickhouse用户的读写权限。 --> <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path> <!-- keeper服务的快照存储路径,可以自行指定,此目录需要配置clickhouse用户的读写权限。 --> <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path> <!-- keeper服务的其他参数信息,保持默认即可 --> <coordination_settings> <operation_timeout_ms>10000</operation_timeout_ms> <session_timeout_ms>30000</session_timeout_ms> <raft_logs_level>trace</raft_logs_level> </coordination_settings> <raft_configuration> <!-- keeper服务第一个节点配置信息 --> <server> <id>1</id> <hostname>10-10-35-183</hostname> <port>9444</port> </server> <!-- keeper服务第二个节点配置信息 --> <server> <id>2</id> <hostname>10-10-35-184</hostname> <port>9444</port> </server> <!-- keeper服务第三个节点配置信息 --> <server> <id>3</id> <hostname>10-10-35-185</hostname> <port>9444</port> </server> </raft_configuration> </keeper_server> |
配置smartbiMPP集群的宏变量
找到<macros>标签,并且放开注释。具体配置参考以下说明。
如果只有2个SmartbiMPP节点
<macros> <!-- smartbi_cluster_1S_2R集群的分片名称 --> <smartbi_cluster_1S_2R_shard>01</smartbi_cluster_1S_2R_shard> <!-- smartbi_cluster_1S_2R集群的副本名称 --> <smartbi_cluster_1S_2R_replica>ch-01-02</smartbi_cluster_1S_2R_replica> </macros> |
1、macros宏变量的参数变量命名规范: 集群分片名称:集群名称_shard 集群副本名称:集群名称_replica 集群名称可以参考上面的<remote_servers>标签里面配置的集群名称。 例如: smartbi_cluster_1S_2R_shard对应的是smartbi_cluster_1S_2R集群的分片名称 smartbi_cluster_1S_2R_replica对应的是smartbi_cluster_1S_2R集群的副本名称 |
smartbimpp-cluster-3节点:
配置keeper节点
修改集群配置文件
vi /etc/clickhouse-server/config.xml |
keeper服务是集成在clickhouse的进程服务中的,但是需要单独配置开启,具体方式如下:
<!-- keeper_server配置标签,表示开启本节点的keeper服务 --> <keeper_server> <!-- keeper服务的端口 --> <tcp_port>9181</tcp_port> <!-- keeper服务的server_id,一般第一个节点配置1,第二个节点配置2,以此类推 --> <server_id>3</server_id> <!-- keeper服务的日志存储路径,可以自行指定,此目录需要配置clickhouse用户的读写权限。 --> <log_storage_path>/var/lib/clickhouse/coordination/log</log_storage_path> <!-- keeper服务的快照存储路径,可以自行指定,此目录需要配置clickhouse用户的读写权限。 --> <snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path> <!-- keeper服务的其他参数信息,保持默认即可 --> <coordination_settings> <operation_timeout_ms>10000</operation_timeout_ms> <session_timeout_ms>30000</session_timeout_ms> <raft_logs_level>trace</raft_logs_level> </coordination_settings> <raft_configuration> <!-- keeper服务第一个节点配置信息 --> <server> <id>1</id> <hostname>10-10-35-183</hostname> <port>9444</port> </server> <!-- keeper服务第二个节点配置信息 --> <server> <id>2</id> <hostname>10-10-35-184</hostname> <port>9444</port> </server> <!-- keeper服务第三个节点配置信息 --> <server> <id>3</id> <hostname>10-10-35-185</hostname> <port>9444</port> </server> </raft_configuration> </keeper_server> |
配置smartbiMPP集群的宏变量
找到<macros>标签,并且放开注释。具体配置参考以下说明。
如果SmartbiMPP只有2个节点,第三个节点不需要配置<macros>
配置多副本集群参数
修改集群配置文件
vi /etc/clickhouse-server/users.xml |
keeper服务是集成在clickhouse的进程服务中的,但是需要单独配置开启,具体方式如下:
<!--默认值为0,表示不启用原子写入;改为与smartbi_replica集群中的副本数相等--> <insert_quorum>2</insert_quorum> <!--默认值为600000毫秒(10分钟);改为30分钟以防止写入和同步副本超时--> <insert_quorum_timeout>1800000</insert_quorum_timeout> |
insert_quorum:副本原子写入数,需要配置和副本数量一致。 insert_quorum_timeout:副本同步超时时间,默认10分钟,改为30分钟 |
配置参数应该配置在users.xml的<profiles><default>里面,可以参考以下截图说明
2、重启SmartbiMPP
在所有节点,重启smartbiMPP
clickhouse restart |
登录SmartbiMpp查看集群
# 第一个节点: clickhouse-client --host 10-10-35-162 --port 9000 --database default --user default --password manaer # 第二个节点: clickhouse-client --host 10-10-35-163 --port 9000 --database default --user default --password manager # 查询集群状态信息 select * from system.clusters; |
第一个节点查询
第二个节点查询
可以看到Smartbi就是我们定义的集群名称,共有1个分片,2个副本
5、插入数据验证集群
任意节点创建数据库
create database if not exists smartbitest_1S_2R ON CLUSTER smartbi_cluster_1S_2R; |
两个节点分别查看数据库,都有新创建的数据库smartbitest_1S_2R
show databases; |
查看每个节点定义的宏变量
第一个节点查询
select * from system.macros; |
mpp-cluster-2节点
select * from system.macros; |
6、测试集群
任意节点创建本地表
use smartbitest_1S_2R; create table db_1S_2R_local ON CLUSTER smartbi_cluster_1S_2R (ID Int8, Name String, BirthDate Date) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{smartbi_cluster_1S_2R_shard}/db_1S_2R_local','{smartbi_cluster_1S_2R_replica}') PARTITION BY toYYYYMMDD(BirthDate) ORDER BY (Name, BirthDate) SETTINGS index_granularity = 8192; |
创建完后可以看到两个节点都有刚刚创建的表
在任意节点插入5条数据:
insert into db_1S_2R_local (ID,Name,BirthDate)values(1,'zhangsan','2001-10-12'); insert into db_1S_2R_local (ID,Name,BirthDate)values(2,'lisi','2002-11-13'); insert into db_1S_2R_local (ID,Name,BirthDate)values(3,'wangwu','2003-10-11'); insert into db_1S_2R_local (ID,Name,BirthDate)values(4,'zhaoliu','2004-09-02'); insert into db_1S_2R_local (ID,Name,BirthDate)values(5,'tianqi','2005-08-22'); |
查询插入的数据:
#每个节点的行数 select count(1) from db_1S_2R_local; |
每个节点查询到“db_1S_2R_local”的总行数都是相同的,节点1和节点2都有完整数据,达到数据的备份和高可用。
任意一个mpp节点宕机,另一个节点能正常查询数据。
数据连接 > 高速缓存库 ,进入高速缓存库的配置项,在连接字符串最后面添加参数 "&clusterReplicaName=smartbi_cluster_1S_2R" ,如下图所示。
#停止服务 clickhouse stop #启动服务 clickhouse start #重启服务 clickhouse restart #开机启动 systemctl enable clickhouse-server |