clickhouse集群简单使用

接上一篇从0到1搭建clickhouse集群_天启的博客-CSDN博客_clickhouse集群

1、基本操作

1.1集群启动的基本步骤

master,node1,node2三个节点上各自执行如下操作

zkServer.sh start
service clickhouse-server start

然后在一台节点,这里使用master启动clickhouse客户端

clickhouse-client

1.2集群上创建数据库与删除数据库

创建数据库

create database databaseName on cluster clustersName;

databaseName是你要创建的数据库名称,clustersName是集群名称,必须要和配置文件metrika.xml中的一致

删除数据库

drop database databaseName on cluster clustersName;

1.3删除集群上的表

drop table tableName on cluster clusterName;

2、使用示例

1)在master节点上建表

  • 该表会自动同步到node1和node2上
  • 集群名字要和配置文件中的一致
  • 分片和副本名称从配置文件中的宏定义中获取

create table st_order_mt on cluster gmall_cluster (
   id UInt32,
sku_id String,
total_amount Decimal(16,2), create_time Datetime
) engine =ReplicatedMergeTree('/clickhouse/tables/{shard}/st_order_mt','{replica}')
  partition by toYYYYMMDD(create_time)
  primary key (id)
  order by (id,sku_id);

engine后面的参数,是提供给zookeeper区分该表的路径。对于不同分片上的表,路径必须唯一。第一个参数/clickhouse/table是官方要求的固定前缀;{shard}表示分片名,自动从配置文件获取;st_order_mt是表名;{replica}是副本名称,直接从配置文件metrika.xml中获取。shard和replica如果没有在/etc/clickhouse-server/config.d/metrika.xml下的<macros></macros>中指定的话,则无法通过{shard}和{replica}的方式获取,只能手动指定,如:

在master上为:
engine =ReplicatedMergeTree('/clickhouse/tables/1/st_order_mt','master')

在node1上为:
engine =ReplicatedMergeTree('/clickhouse/tables/2/st_order_mt','node1')

在node2上为:
engine =ReplicatedMergeTree('/clickhouse/tables/3/st_order_mt','node2')

注意:table_name

在3个节点上查看show tables;

若上述建表语句不使用on cluster,则需要在3个节点上分别执行建表语句,创建本地表。 

2)创建分布式表

master节点执行如下语句

create table st_order_mt_all2 on cluster clustersName
(
id UInt32,
 sku_id String,
total_amount Decimal(16,2), create_time Datetime
)engine = Distributed(clustersName,default, st_order_mt,hiveHash(sku_id));

Distriubed(集群名称,库名,本地表明,分片键)

分片键用于分片的key值,在数据写入的过程中,分布式表会根据分片key的规则,将数据分布到各个节点的本地表。必须是整型数字,所以需要用HiveHash好难受转换

 使用了on cluster,这意味着在集群的每个分片节点上,都会创建一张Distributed表,

3)从分布式表插入数据

master节点执行

insert into st_order_mt_all2 values
 (201,'sku_001',1000.00,'2020-06-01 12:00:00') , 
(202,'sku_002',2000.00,'2020-06-01 12:00:00'), 
(203,'sku_004',2500.00,'2020-06-01 12:00:00'), 
(204,'sku_002',2000.00,'2020-06-01 12:00:00'), 
(205,'sku_003',600.00,'2020-06-02 12:00:00');

 4)查询

从分布式表查询,master节点执行

SELECT * FROM st_order_mt_all2;

从本地表查询,master,node1,node2分别执行

select * from st_order_mt;

5)从本地表插入

在master节点执行

insert into st_order_mt values(206,'sku_id',5000.00,'2020-06-01 12:00:00');

在master,node1,node2查询

 3、批量导入

和单节点的批量导入没有区别,以CSV格式为例。可以下载CSV数据集,这里手动写一个。

csv,json,xml,txt等格式都支持。

1)在master节点创建test.csv,添加数据,如下:

touch test.csv;
chmod 777 test.csv;
vim test.csv;


内容为:

207,‘sku_007’,4000,‘2020-06-03 12:00:00’,
208,’sku_008‘,4500,’2020-06-03 12:00:00‘,

2)导入数据

不执行clickhouse-client,先exit退出,然后直接在master节点执行下述语句,

cat test.csv | clickhouse-client --query="insert into st_order_mt_all2 format CSV";

或者
clickhouse-client --query "INSERT st_order_mt_all2 FORMAT TSV" --max_insert_block_size=100000 < test.csv


3)查询数据

在3台机器上分别执行select * from st_order_mt,可以看到新插入的数据被记录在node1和node2上

 4.结果导出

先执行exit退出,然后在master节点执行如下语句:

clickhouse-client --query="select * from st_order_mt_all2">result.csv;

若不存在result.csv会自动创建,若存在该文件则会覆盖原有内容。result.csv的内容如下:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Ansible 安装部署 ClickHouse 集群,需要完成以下步骤: 1. 确保已经在每个目标主机上安装了 ClickHouse,并确保 ClickHouse 已经可以正常运行。 2. 创建一个 Ansible 的 inventory 文件,该文件列出了所有 ClickHouse 集群中的主机及其 IP 地址。一个简单的 inventory 文件可能如下所示: ``` [clickhouse] ch1.example.com ch2.example.com ch3.example.com ``` 3. 创建一个 Ansible playbook 文件,该文件包含用于安装和配置 ClickHouse 的任务。以下是一个示例 playbook: ``` - name: Install and configure ClickHouse hosts: clickhouse become: true tasks: - name: Install ClickHouse apt: name: clickhouse-server state: present become: true become_user: root - name: Configure ClickHouse template: src: clickhouse-server.xml.j2 dest: /etc/clickhouse-server/config.xml become: true become_user: clickhouse ``` 在这个 playbook 中,我们首先使用 Ansible 的 apt 模块安装 ClickHouse,然后使用 Ansible 的 template 模块将 ClickHouse 配置文件复制到目标主机的 `/etc/clickhouse-server/config.xml` 文件中。 4. 创建一个 ClickHouse 配置模板文件。这个模板文件应该包含用于配置 ClickHouse 的所有参数。以下是一个示例配置文件: ``` <yandex> <clickhouse_server> <interserver_http_host>0.0.0.0</interserver_http_host> <listen_host>0.0.0.0</listen_host> <listen_port>9000</listen_port> <max_connections>1000</max_connections> <max_concurrent_queries>1000</max_concurrent_queries> <distributed_ddl> <num_tries>3</num_tries> <try_delay_sec>3</try_delay_sec> </distributed_ddl> <users> <default> <password></password> <networks> <ip>::/0</ip> </networks> </default> </users> </clickhouse_server> </yandex> ``` 请注意,这个配置文件只包含了一些基本的 ClickHouse 配置选项。您应该根据自己的需求进行修改。 5. 运行 playbook,部署 ClickHouse 集群。要运行 playbook,请使用以下命令: ``` ansible-playbook -i inventory_file playbook_file.yml ``` 这将在 ClickHouse 集群中的所有主机上运行 playbook。 以上就是使用 Ansible 安装部署 ClickHouse 集群的一般步骤。请注意,这只是一个基本的例子。要根据自己的需求对 playbook 进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值