Clickhouse的多磁盘多路径存储策略_Bulut0907的博客-CSDN博客_clickhouse多磁盘挂载


本站和网页 https://blog.csdn.net/yy8623977/article/details/118737823 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Clickhouse的多磁盘多路径存储策略_Bulut0907的博客-CSDN博客_clickhouse多磁盘挂载
Clickhouse的多磁盘多路径存储策略
Bulut0907
于 2021-07-14 22:57:28 发布
2552
收藏
分类专栏:
# Clickhouse
文章标签:
clickhouse
多路径存储
多磁盘存储
jbod策略
hot/cold策略
版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yy8623977/article/details/118737823
版权
Clickhouse
专栏收录该内容
19 篇文章
6 订阅
订阅专栏
目录
1. 背景2. 实战练习2.1 修改config.xml2.2 重启clickhouse server2.3 验证配置成功2.4 jbod策略使用2.4 hot/cold策略使用2.5 分区part的移动
1. 背景
我们前面安装Clickhouse集群的时候,配置的数据path都是单路径,这里我们学习配置多磁盘上的存储路径,可以减轻磁盘的压力,增加写入和读取的性能
[root@clickhouse1 ~]#
[root@clickhouse1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 99G 0 part
├─centos_centos-root 253:0 0 50G 0 lvm /
├─centos_centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos_centos-home 253:2 0 47G 0 lvm /home
sr0 11:0 1 973M 0 rom
[root@clickhouse1 ~]#
从上面我们可以看到,我们的测试环境只挂载了一块磁盘,所以我们这里采用单磁盘多路径的方式来模拟
2. 实战练习
2.1 修改config.xml
在四台服务器上添加以下配置
<storage_configuration>
<disks>
<disk_hot1> <!-- 自定义磁盘名称 -->
<path>/root/clickhouse_storage/hot1/</path>
</disk_hot1>
<disk_hot2>
<path>/root/clickhouse_storage/hot2/</path>
</disk_hot2>
<disk_cold>
<path>/root/clickhouse_storage/cold/</path>
<keep_free_space_bytes>1073741824</keep_free_space_bytes>
</disk_cold>
</disks>
<policies>
<jbod_police> <!-- 自定义策略名称 -->
<volumes>
<jbod> <!-- 自定义磁盘组名称 -->
<disk>disk_hot1</disk>
<disk>disk_hot2</disk>
</jbod>
</volumes>
</jbod_police>
<hot_cold_police>
<volumes>
<hot>
<disk>disk_hot1</disk>
<disk>disk_hot2</disk>
<max_data_part_size_bytes>1048576</max_data_part_size_bytes>
</hot>
<cold>
<disk>disk_cold</disk>
</cold>
</volumes>
<move_factor>0.2</move_factor>
</hot_cold_police>
</policies>
</storage_configuration>
说明:
keep_free_space_bytes:选填项,表示不被使用的磁盘空间大小jbod策略只需要配置一个磁盘组,part(如202107_0_0_0)储存轮询每个disk;适用于挂载了多块磁盘,但未配置RAIDhot/cold策略配置hot和cold两个磁盘组, part未超过(max_data_part_size_bytes[选填项] * move_factor[选填项, 默认0.1])则储存在hot磁盘组,超过则储存在cold磁盘组;适用于挂载了SSD和HDD磁盘
2.2 重启clickhouse server
在4台服务器新建path
[root@clickhouse1 ~]# mkdir -p /root/clickhouse_storage/hot1
[root@clickhouse1 ~]# mkdir /root/clickhouse_storage/hot2
[root@clickhouse1 ~]# mkdir /root/clickhouse_storage/cold
重启4台clickhouse server
[root@clickhouse1 ~]#
[root@clickhouse1 ~]# clickhouse stop
Found pid = 2660 in the list of running processes.
The process with pid = 2660 is running.
Sent terminate signal to process with pid 2660.
Waiting for server to stop
Found pid = 2660 in the list of running processes.
The process with pid = 2660 is running.
Waiting for server to stop
Found pid = 2660 in the list of running processes.
The process with pid = 2660 is running.
Waiting for server to stop
Found pid = 2660 in the list of running processes.
The process with pid = 2660 is running.
Waiting for server to stop
Now there is no clickhouse-server process.
Server stopped
[root@clickhouse1 ~]#
[root@clickhouse1 ~]# clickhouse-server --config=/etc/clickhouse-server/config.xml --daemon start
[root@clickhouse1 ~]#
2.3 验证配置成功
clickhouse1 :)
clickhouse1 :) select name, path, formatReadableSize(free_space) as free, formatReadableSize(total_space) as total, formatReadableSize(keep_free_space) as reserved from system.disks;
SELECT
name,
path,
formatReadableSize(free_space) AS free,
formatReadableSize(total_space) AS total,
formatReadableSize(keep_free_space) AS reserved
FROM system.disks
Query id: 3bcffa44-6427-450e-8b0a-de067b6d7706
┌─name──────┬─path───────────────────────────┬─free──────┬─total─────┬─reserved─┐
│ default │ /root/clickhouse/ │ 43.59 GiB │ 49.98 GiB │ 0.00 B │
│ disk_cold │ /root/clickhouse_storage/cold/ │ 42.59 GiB │ 48.98 GiB │ 1.00 GiB │
│ disk_hot1 │ /root/clickhouse_storage/hot1/ │ 43.59 GiB │ 49.98 GiB │ 0.00 B │
│ disk_hot2 │ /root/clickhouse_storage/hot2/ │ 43.59 GiB │ 49.98 GiB │ 0.00 B │
└───────────┴────────────────────────────────┴───────────┴───────────┴──────────┘
4 rows in set. Elapsed: 0.004 sec.
clickhouse1 :)
clickhouse1 :) select policy_name, volume_name, volume_priority, disks, formatReadableSize(max_data_part_size) max_data_part_size, move_factor from system.storage_policies;
SELECT
policy_name,
volume_name,
volume_priority,
disks,
formatReadableSize(max_data_part_size) AS max_data_part_size,
move_factor
FROM system.storage_policies
Query id: aa9e26e7-0580-44ae-bfb3-d9855414c44e
┌─policy_name─────┬─volume_name─┬─volume_priority─┬─disks─────────────────────┬─max_data_part_size─┬─move_factor─┐
│ default │ default │ 1 │ ['default'] │ 0.00 B │ 0 │
│ hot_cold_police │ hot │ 1 │ ['disk_hot1','disk_hot2'] │ 1.00 MiB │ 0.2 │
│ hot_cold_police │ cold │ 2 │ ['disk_cold'] │ 0.00 B │ 0.2 │
│ jbod_police │ jbod │ 1 │ ['disk_hot1','disk_hot2'] │ 0.00 B │ 0 │
└─────────────────┴─────────────┴─────────────────┴───────────────────────────┴────────────────────┴─────────────┘
4 rows in set. Elapsed: 0.014 sec.
clickhouse1 :)
2.4 jbod策略使用
创建表
clickhouse1 :)
clickhouse1 :) create table jbod_table_local on cluster sharding_ha(
:-] id UInt64
:-] ) engine = ReplicatedMergeTree('/clickhouse/tables/jbod_table/{shard}', '{replica}')
:-] order by id
:-] settings storage_policy = 'jbod_police';
CREATE TABLE jbod_table_local ON CLUSTER sharding_ha
`id` UInt64
ENGINE = ReplicatedMergeTree('/clickhouse/tables/jbod_table/{shard}', '{replica}')
ORDER BY id
SETTINGS storage_policy = 'jbod_police'
Query id: 9ad62172-2dee-49c3-ba46-bff047c9635e
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 3 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse3 │ 9000 │ 0 │ │ 2 │ 1 │
│ clickhouse1 │ 9000 │ 0 │ │ 1 │ 1 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse4 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.451 sec.
clickhouse1 :)
clickhouse1 :) create table jbod_table_all on cluster sharding_ha(
:-] id UInt64
:-] ) engine = Distributed(sharding_ha, default, jbod_table_local, rand());
CREATE TABLE jbod_table_all ON CLUSTER sharding_ha
`id` UInt64
ENGINE = Distributed(sharding_ha, default, jbod_table_local, rand())
Query id: 46efcdf3-466c-4c6e-a694-cda568ca68f1
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 3 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse3 │ 9000 │ 0 │ │ 2 │ 0 │
│ clickhouse1 │ 9000 │ 0 │ │ 1 │ 0 │
│ clickhouse4 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.081 sec.
clickhouse1 :)
第一次插入数据
clickhouse1 :)
clickhouse1 :) insert into jbod_table_all select rand() from numbers(20);
INSERT INTO jbod_table_all SELECT rand()
FROM numbers(20)
Query id: 3f933193-0edd-4d64-8129-ed9a68b016db
Ok.
0 rows in set. Elapsed: 0.023 sec.
clickhouse1 :)
clickhouse1 :) select name, disk_name, active from system.parts where table = 'jbod_table_local';
SELECT
name,
disk_name
FROM system.parts
WHERE table = 'jbod_table_local'
Query id: d0a90599-1c40-4055-b088-55b06d5b1676
┌─name──────┬─disk_name─┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 1 │
└───────────┴───────────┴────────┘
1 rows in set. Elapsed: 0.004 sec.
clickhouse1 :)
第二次插入数据
clickhouse1 :)
clickhouse1 :) insert into jbod_table_all select rand() from numbers(20);
INSERT INTO jbod_table_all SELECT rand()
FROM numbers(20)
Query id: 55875762-df39-4e55-b2f3-adf4550e2741
Ok.
0 rows in set. Elapsed: 0.027 sec.
clickhouse1 :)
clickhouse1 :) select name, disk_name, active from system.parts where table = 'jbod_table_local';
SELECT
name,
disk_name
FROM system.parts
WHERE table = 'jbod_table_local'
Query id: dd2b6285-b082-4984-8903-e074d002794a
┌─name──────┬─disk_name─┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 1 │
│ all_1_1_0 │ disk_hot2 │ 1 │
└───────────┴───────────┴────────┘
2 rows in set. Elapsed: 0.005 sec.
clickhouse1 :)
强制分区合并
clickhouse1 :)
clickhouse1 :) optimize table jbod_table_local on cluster sharding_ha final;
OPTIMIZE TABLE jbod_table_local ON CLUSTER sharding_ha FINAL
Query id: a58f3b6e-6d46-4a99-bfe4-bf5405300073
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 1 │
│ clickhouse3 │ 9000 │ 0 │ │ 2 │ 1 │
│ clickhouse4 │ 9000 │ 0 │ │ 1 │ 1 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse1 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.203 sec.
clickhouse1 :)
clickhouse1 :) select name, disk_name, active from system.parts where table = 'jbod_table_local';
SELECT
name,
disk_name,
active
FROM system.parts
WHERE table = 'jbod_table_local'
Query id: ee17f981-d309-4f44-b7e2-b9220cda45dc
┌─name──────┬─disk_name─┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 0 │
│ all_0_1_1 │ disk_hot1 │ 1 │
│ all_1_1_0 │ disk_hot2 │ 0 │
└───────────┴───────────┴────────┘
3 rows in set. Elapsed: 0.005 sec.
clickhouse1 :)
2.4 hot/cold策略使用
创建表
clickhouse1 :)
clickhouse1 :) create table hot_cold_table_local on cluster sharding_ha(
:-] id UInt64
:-] ) engine = ReplicatedMergeTree('/clickhouse/tables/hot_cold_table/{shard}', '{replica}')
:-] order by id
:-] settings storage_policy = 'hot_cold_police';
CREATE TABLE hot_cold_table_local ON CLUSTER sharding_ha
`id` UInt64
ENGINE = ReplicatedMergeTree('/clickhouse/tables/hot_cold_table/{shard}', '{replica}')
ORDER BY id
SETTINGS storage_policy = 'hot_cold_police'
Query id: 8331bece-656a-4dba-b73a-834103d507c9
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 2 │
│ clickhouse4 │ 9000 │ 0 │ │ 2 │ 2 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse3 │ 9000 │ 0 │ │ 1 │ 0 │
│ clickhouse1 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.233 sec.
clickhouse1 :)
clickhouse1 :) create table hot_cold_table_all on cluster sharding_ha(
:-] id UInt64
:-] ) engine = Distributed(sharding_ha, default, hot_cold_table_local, rand());
CREATE TABLE hot_cold_table_all ON CLUSTER sharding_ha
`id` UInt64
ENGINE = Distributed(sharding_ha, default, hot_cold_table_local, rand())
Query id: 03bf7af8-261e-4dad-b0c3-b267dc8738b2
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse3 │ 9000 │ 0 │ │ 3 │ 2 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 2 │ 0 │
│ clickhouse1 │ 9000 │ 0 │ │ 1 │ 0 │
│ clickhouse4 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.090 sec.
clickhouse1 :)
第一次插入数据
clickhouse1 :)
clickhouse1 :) insert into hot_cold_table_all select rand() from numbers(200000);
INSERT INTO hot_cold_table_all SELECT rand()
FROM numbers(200000)
Query id: 9bafe2c8-f937-46d4-a29d-86ff7f35f9e6
Ok.
0 rows in set. Elapsed: 0.073 sec. Processed 200.00 thousand rows, 1.60 MB (2.76 million rows/s., 22.04 MB/s.)
clickhouse1 :)
clickhouse1 :) select name, disk_name, formatReadableSize(bytes_on_disk) size, active from system.parts where table = 'hot_cold_table_local';
SELECT
name,
disk_name,
active
FROM system.parts
WHERE table = 'hot_cold_table_local'
Query id: f7924c10-31fe-4d18-9736-4e095ae68c32
┌─name──────┬─disk_name─┬─size───────┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 540.15 KiB │ 1 │
└───────────┴───────────┴────────────┴────────┘
1 rows in set. Elapsed: 0.002 sec.
clickhouse1 :)
第二次插入数据
clickhouse1 :)
clickhouse1 :) insert into hot_cold_table_all select rand() from numbers(200000);
INSERT INTO hot_cold_table_all SELECT rand()
FROM numbers(200000)
Query id: 84846376-3d19-448e-8f8a-242f2e2b999d
Ok.
0 rows in set. Elapsed: 0.057 sec. Processed 200.00 thousand rows, 1.60 MB (3.48 million rows/s., 27.84 MB/s.)
clickhouse1 :)
clickhouse1 :) select name, disk_name, formatReadableSize(bytes_on_disk) size, active from system.parts where table = 'hot_cold_table_local';
SELECT
name,
disk_name,
active
FROM system.parts
WHERE table = 'hot_cold_table_local'
Query id: 6c8081f1-5fd0-4ba3-a997-6f19db554e45
┌─name──────┬─disk_name─┬─size───────┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 540.15 KiB │ 1 │
│ all_1_1_0 │ disk_hot2 │ 539.10 KiB │ 1 │
└───────────┴───────────┴────────────┴────────┘
2 rows in set. Elapsed: 0.003 sec.
clickhouse1 :)
强制分区合并
clickhouse1 :)
clickhouse1 :) optimize table hot_cold_table_local on cluster sharding_ha final;
OPTIMIZE TABLE hot_cold_table_local ON CLUSTER sharding_ha FINAL
Query id: ec7435f0-7ef9-4cf0-b944-9d0b5f4973d8
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 0 │
│ clickhouse3 │ 9000 │ 0 │ │ 2 │ 0 │
│ clickhouse1 │ 9000 │ 0 │ │ 1 │ 0 │
│ clickhouse4 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.294 sec.
clickhouse1 :)
clickhouse1 :) select name, disk_name, formatReadableSize(bytes_on_disk) size, active from system.parts where table = 'hot_cold_table_local';
SELECT
name,
disk_name,
formatReadableSize(bytes_on_disk) AS size,
active
FROM system.parts
WHERE table = 'hot_cold_table_local'
Query id: 33d7721b-d953-4325-9742-400dcf5a7c95
┌─name──────┬─disk_name─┬─size───────┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 540.15 KiB │ 0 │
│ all_0_1_1 │ disk_cold │ 1.01 MiB │ 1 │
│ all_1_1_0 │ disk_hot2 │ 539.10 KiB │ 0 │
└───────────┴───────────┴────────────┴────────┘
3 rows in set. Elapsed: 0.013 sec.
clickhouse1 :)
2.5 分区part的移动
clickhouse1 :)
clickhouse1 :) alter table hot_cold_table_local on cluster sharding_ha move part 'all_0_1_1' to disk 'disk_hot2';
ALTER TABLE hot_cold_table_local ON CLUSTER sharding_ha
MOVE PART 'all_0_1_1' TO DISK 'disk_hot2'
Query id: 8a367d9e-2e9c-4dc6-acc3-55f6ff363de4
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 0 │
│ clickhouse3 │ 9000 │ 0 │ │ 2 │ 0 │
│ clickhouse1 │ 9000 │ 0 │ │ 1 │ 0 │
│ clickhouse4 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.150 sec.
clickhouse1 :)
clickhouse1 :) select name, disk_name, formatReadableSize(bytes_on_disk) size, active from system.parts where table = 'hot_cold_table_local';
SELECT
name,
disk_name,
formatReadableSize(bytes_on_disk) AS size,
active
FROM system.parts
WHERE table = 'hot_cold_table_local'
Query id: 31754c1a-8671-4af9-ba18-44fac1263161
┌─name──────┬─disk_name─┬─size───────┬─active─┐
│ all_0_0_0 │ disk_hot1 │ 540.15 KiB │ 0 │
│ all_0_1_1 │ disk_cold │ 1.01 MiB │ 1 │
│ all_1_1_0 │ disk_hot2 │ 539.10 KiB │ 0 │
└───────────┴───────────┴────────────┴────────┘
3 rows in set. Elapsed: 0.003 sec.
clickhouse1 :)
由上面可以看出part 'all_0_1_1’并没有移动到disk ‘disk_hot2’,这是因为on cluster操作只影响了shard,并没有影响replica; 所以需要在本地操作
clickhouse1 :)
clickhouse1 :) alter table hot_cold_table_local on cluster sharding_ha move part 'all_0_1_1' to volume 'cold';
ALTER TABLE hot_cold_table_local ON CLUSTER sharding_ha
MOVE PART 'all_0_1_1' TO VOLUME 'cold'
Query id: b9a0384e-990b-4173-afaf-ab1a9ee8f481
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse2 │ 9000 │ 0 │ │ 3 │ 2 │
│ clickhouse1 │ 9000 │ 0 │ │ 2 │ 2 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
┌─host────────┬─port─┬─status─┬─error─┬─num_hosts_remaining─┬─num_hosts_active─┐
│ clickhouse3 │ 9000 │ 0 │ │ 1 │ 0 │
│ clickhouse4 │ 9000 │ 0 │ │ 0 │ 0 │
└─────────────┴──────┴────────┴───────┴─────────────────────┴──────────────────┘
4 rows in set. Elapsed: 0.237 sec.
clickhouse1 :)
clickhouse1 :) select name, disk_name, formatReadableSize(bytes_on_disk) size, active from system.parts where table = 'hot_cold_table_local';
SELECT
name,
disk_name,
formatReadableSize(bytes_on_disk) AS size,
active
FROM system.parts
WHERE table = 'hot_cold_table_local'
Query id: 985623b6-55f0-49cd-83cb-8cb94a658196
┌─name──────┬─disk_name─┬─size─────┬─active─┐
│ all_0_1_1 │ disk_cold │ 1.01 MiB │ 1 │
└───────────┴───────────┴──────────┴────────┘
1 rows in set. Elapsed: 0.004 sec.
clickhouse1 :)
on cluster操作只影响了shard,并没有影响replica; 如果未移动就需要在本地操作
关注博主即可阅读全文
Bulut0907
关注
关注
点赞
收藏
打赏
评论
Clickhouse的多磁盘多路径存储策略
目录1. 背景2. 实战练习2.1 修改config.xml2.2 重启clickhouse server2.3 验证配置成功2.4 jbod策略使用2.4 hot/cold策略使用2.5 分区part的移动更多关于Clickhouse的文章可以查看Clickhouse专栏系列文章1. 背景我们前面安装Clickhouse集群的时候,配置的数据path都是单路径,这里我们学习配置多磁盘上的存储路径,可以减轻磁盘的压力,增加写入和读取的性能[root@clickhouse1 ~]# [root@
复制链接
扫一扫
专栏目录
【clickhouse】clickhouse配置多块磁盘
九师兄
12-04
932
1.概述
转载:clickhouse配置多块磁盘
最近让运维同学新搭了一个clickhouse集群,每台服务器都配置了多块磁盘,但是使用的时候还是按照以前的方式是使用的,导致系统盘空间不够。特此记录一下配置和使用方法。
2.集群配置
执行lsblk命令,可以看到本地机器的磁盘信息:
主要需要修改的地方是config.xml文件,在配置文件中插入以下格式的语句:
<!-- 存储路径 -->
<storage_configuration>
<disks>
<d.
clickhouse之数据存储:JBOD vs RAID
普普通通程序猿的博客
01-25
854
JBOD vs RAID
Clickhouse支持使用JBOD的方式配置多块磁盘为一个卷轴,达到扩展存储的目的,那么和我们常用的RAID相比有哪些区别呢?
1. JBOD
RAID我们比较熟悉,JBOD是什么意思呢?其实看JBOD的英文全称就知道了,Just a Butch of Disks,其实它就是指一种存储架构,可以把一堆盘圈在一起提供服务。
在写入JBOD卷组的过程中,其实还是按照轮询的方式挨个写入,写完一块儿盘写一块儿,顺序由配置JBOD时的顺序决定,至于数据粒度可以由应用程序指定,像Click
评论 6
您还未登录,请先
登录
后发表或查看评论
ClickHouse 存算分离架构探索
JuiceFS的博客
10-19
1376
背景
ClickHouse 作为开源 OLAP 引擎,因其出色的性能表现在大数据生态中得到了广泛的应用。区别于 Hadoop 生态组件通常依赖 HDFS 作为底层的数据存储,ClickHouse 使用本地盘来自己管理数据,官方推荐使用 SSD 作为存储介质来提升性能。但受限于本地盘的容量上限以及 SSD 盘的价格,用户很难在容量、成本和性能这三者之间找到一个好的平衡。JuiceFS 的某个客户近期就遇到了这样的难题,希望将 ClickHouse 中的温冷数据从 SSD 盘迁移到更大容量、更低成本的存储介质,
2 ClickHouse 存储策略
最新发布
feidododekefu的博客
11-02
105
2 ClickHouse 存储策略
ClickHouse多路径存储策略
蓬莱人形
06-04
515
ClickHouse多路径存储策略
要使用Clickhouse的多路径存储,需要ClickHouse的版本号在19.15之后。
自ClickHouse 19.15开始,ClickHouse支持所有MergeTree表引擎多路径存储。
多路径配置测试:
配置文件信息,path:/etc/clickhouse-server/config.d/${xxxx}.xml
配置信息也可写/etc/clickhouse-server/config.xml下
需要注意的点
1.若节点已部署clickhouse,因为c
Clickhouse 多路径存储策略
vkingnew 的技术博客
06-14
3755
在Clickhouse 19.15版本之前,MergeTree 只支持单路径存储,所有的数据都会被写入config.xml配置中path指定的路径下,即使服务器
挂载了多块磁盘,也无法有效利用这些存储空间。
为了解决这种问题 在19.15版本开始支持MergeTree自定义存储策略的功能,支持以数据分区为最小移动单元将分区目录写入多块磁盘目录。
根据配置策略的不同,目前大致有三类存储策略:
1.默认策略(default):MergeTree原本的存储策略,无须任何配置,所有分区会自动保存到config.
ClickHouse多卷存储策略
style_boy的博客
03-12
832
从 19.15 版本开始,ClickHouse 开始实现多卷存储的功能。
主要是将数据分层存储,比如冷热数据分层存储,数据分不同卷存储等等。话不多说,开干~
1 准备环境
添加三块新磁盘:
/dev/sdb20G
/dev/sdc20G
/dev/sdd30G
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" >
ClickHouse 特性及存储原理
qianshanding0708的博客
08-12
1675
更多内容关注微信公众号:fullstack888背景目前业务中有大量实时分析需求,随着数据量的增加,基于行存储的 OLTP 数据库已经不能满足性能的需求,我们对 ClickHouse 进行...
clickhouse MergeTree引擎的多路径存储配置及支持HDFS等外部存储
penriver的博客
10-13
546
多路径存储策略
多路径存储策略介绍
使用多块设备存储数据配置官方说明
clickhouse从19.15开始,MergeTree族表引擎可以在多个块设备上存储数据。
例如,当某个表的数据隐式地划分为“热”和“冷”时,它可能很有用。
最近的数据经常请求,但只需要少量的空间。
历史数据很少被请求,但需要大量的空间。
如果有几个可用的磁盘,“热”数据可能位于快速磁盘(例如,NVMe ssd或内存),而“冷”数据位于相对较慢的磁盘(例如,HDD)。
支持的策略
MergeTree支持的存储策略如下:
JBOD策
Clickhouse多磁盘存储
三思的博客
02-26
1162
文章目录一、配置多磁盘存储1、默认情况下,ck单磁盘存储2、配置多磁盘3、多磁盘系统信息查询二、配置多磁盘策略1、默认磁盘存储策略2、配置多磁盘存储策略3、磁盘存储策略系统信息查询三、多磁盘存储使用1、多磁盘存储表2、多磁盘数据迁移
一、配置多磁盘存储
默认情况下,我们会子在配置文件config.xml文件中指定的xxx/目录为我们的数据目录,该磁盘在ck中为default存储设备。所有的建表、数据写入默认都写入到我们指定的default目录下。
从19.15版本开始,ck开始支持多卷存储的功能,我们可以将
Clickhouse常用系统表概览
三思的博客
03-02
1260
文章目录一、常用系统表1.1 集群配置相关1、clusters2、macros3、disk4、storage_policies1.2 数据库运行情况概要信息1、metrics、events2、asynchronous_metrics3、metric_log1.3 库表统计信息1、databases2、tables3、columns4、parts5、parts_columns1.4 日志相关1、query_log2、query_thread_log3、trace_log
一、常用系统表
1.1 集群配置相关
ClickHouse入门:表引擎-MergeTree(一)创建方式
高矮
10-24
2700
前言
插件及服务器版本
服务器:ubuntu 16.04
ClickHouse:20.9.3.45
文章目录简介创建方式
简介
这篇文件简单学习下ClickHouse基础的合并树(MergeTree)表引擎的创建方式,关于合并树基础上的如Replacing、Summing、Aggregating引擎,本文暂时不会涉及。MergeTree作为最基础的引擎,提供了主键索引、数据分区、数据副本等基本能力
创建方式
create table db_name.table_nmae(
...
)ENGINE Mer.
CK03# ClickHouse日志存储设计点梳理
gaoliang1719的专栏
07-09
532
引言最近周末比较忙,卷的有点累,上周的文章掉了链子,这周赶一篇。本文主要梳理了使用ClickHouse作为日志存储的设计点,主要内容有:应用日志存储时长定制ClickHouse数据的冷热存储ClickHouse数据迁移与删除ClickHouse查询性能调优点一、应用日志存储时长定制公司所有的应用存储日志时长统一设置固定存储时长,比如:1个月、2个月。这种策略也常被公司采用...
《ClickHouse原理解析与应用实践》读书笔记(5)
Aiky哇
07-05
132
表引擎介绍:
· MergeTree系列表引擎介绍。
· 外部存储类型的表引擎、内存类型的表引擎、日志类型表引擎、接口类型的表引擎和其他类型的表引擎介绍。
clickhouse修改数据目录
shy_snow的专栏
04-26
2676
clickhouse默认数据目录在 /var/lib/clickhouse, 一般分区空间有限,需要修改。
只要停止数据库之后移走该目录再建立软连接,即可不修改config.xml实现对数据目录的修改。
clickhouse stop
mv /var/lib/clickhouse /data01/ch/
ln -s /data01/ch/clickhouse /var/lib/clickhouse
clickhouse start
clickhouse多磁盘存储
huzechen的博客
01-04
2931
原文链接????:https://www.jianshu.com/p/72b0c9bd3967
早期 clickhouse 仅支持单一存储设备,19.15 版本以后支持将数据分别保存在不...
clickhouse join注意点及自定义存储策略
lixia0417mul2的博客
05-02
761
一般来说,使用clickhouse和es一样,都是使用的宽表的形式,即一张表中包含了很多的字段,建立的模型不是类似于之前常见的雪花或者星型模型,所以我们一般都会尽量避免join操作,不过如果我们真的需要表join操作时(比如A join B),需要注意以下几点:
a. 右边的表B是小表,clickhouse目前不论是处理left join,right join,inner join都是先把右表B加载到内存中,然后对于B表中的每一行再去寻找A表中满足条件的记录 ----注意对于clickhouse来说,主键
ClickHouse - 多卷存储扩大存储容量(生产环境必备)
DataFlow范式
12-21
8669
笔者最近工作有点忙,加上培训较多,近期文章更新慢了一拍。不过,今天为 ClickHouse 的爱好者带来一篇非常不错的文章,部分内容来自 Altinity,以及笔者补充和整理而成。长期使...
clickhouse集群搭建详细步骤
dnice的博客
04-29
7395
搭建说明
Clickhouse集群依赖Zookeeper集群。因此需要先搭建zk集群。
请先参考 【记录】zookeeper集群搭建详细步骤 完成zookeeper集群搭建。
如果zookeeper集群已成功搭建完成,下面开始搭建Clickhouse集群。
需要环境:
实例1
实例2
实例3
IP
192.168.11.11
192.168.11.12
192.168.11.13
OS
centos7.9
centos7.9
centos7.9
zk
zookeeper-3.8.0
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:技术工厂
设计师:CSDN官方博客
返回首页
Bulut0907
CSDN认证博客专家
CSDN认证企业博客
码龄6年
暂无认证
375
原创
2201
周排名
4049
总排名
43万+
访问
等级
4227
积分
9723
粉丝
146
获赞
121
评论
611
收藏
私信
关注
热门文章
解决启动谷歌浏览器时打开2345主页
12927
UML类图(简介、类的表示、对象的表示、关系、注释)
10140
Clickhouse的clickhouse-client使用、Java/Scala使用JDBC连接Clickhouse、Pyspark连接Clickhouse
9602
时间复杂度O(n)的理解
9133
Clickhouse数据表、数据分区partition的基本操作
8551
分类专栏
分布式计算
Flink
41篇
Spark
2篇
Hadoop
6篇
数据库和数据湖
Iceberg
19篇
Hudi
14篇
Clickhouse
19篇
Presto/Trino
13篇
Apache Doris
20篇
Hive
3篇
Kudu
5篇
Apache Druid
6篇
Tidb
2篇
其它数据库
6篇
Kubernetes
24篇
Docker/Containerd
18篇
Apache Pulsar
11篇
ETL
5篇
Canal
7篇
Kettle
zookeeper
2篇
DolphinScheduler
4篇
Superset
3篇
数据仓库
1篇
数据结构和算法
43篇
Java
4篇
Java设计模式
26篇
python
15篇
爬虫
5篇
C++
5篇
Linux
18篇
CSS3
10篇
JavaScript
1篇
其它
31篇
最新评论
使用Scala/Java对Iceberg数据湖各模块进行操作(metadata、scanning、update、transactions、types、expressions)
Bulut0907:
我的这篇博客有,参考看下:https://blog.csdn.net/yy8623977/article/details/123129956
使用Scala/Java对Iceberg数据湖各模块进行操作(metadata、scanning、update、transactions、types、expressions)
zengqinn123:
没有完整的pom依赖娃
Iceberg删除过期snapshots、老的metadata files、孤立的文件,合并data files和manifests
yang_coder:
提交到yarn上去,多给点资源即可。这个是资源不够,导致的广播join错误
Clickhouse数据表、数据分区partition的基本操作
Bulut0907:
参考我的这篇博客:https://blog.csdn.net/yy8623977/article/details/118654893。第二部分MergeTree表引擎的创建
Clickhouse数据表、数据分区partition的基本操作
Gwen小苏:
多个分区的表怎么创建
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Prometheus系列之Grafana 版本9.0.0 设置Email邮件报警实战
Prometheus集成Grafana(手动创建/通过模板创建Dashboard)
Prometheus之集成Flink
2022
12月
7篇
11月
11篇
10月
20篇
09月
39篇
08月
42篇
07月
37篇
06月
38篇
05月
34篇
04月
22篇
03月
17篇
02月
11篇
01月
12篇
2021年70篇
2020年15篇
目录
目录
分类专栏
分布式计算
Flink
41篇
Spark
2篇
Hadoop
6篇
数据库和数据湖
Iceberg
19篇
Hudi
14篇
Clickhouse
19篇
Presto/Trino
13篇
Apache Doris
20篇
Hive
3篇
Kudu
5篇
Apache Druid
6篇
Tidb
2篇
其它数据库
6篇
Kubernetes
24篇
Docker/Containerd
18篇
Apache Pulsar
11篇
ETL
5篇
Canal
7篇
Kettle
zookeeper
2篇
DolphinScheduler
4篇
Superset
3篇
数据仓库
1篇
数据结构和算法
43篇
Java
4篇
Java设计模式
26篇
python
15篇
爬虫
5篇
C++
5篇
Linux
18篇
CSS3
10篇
JavaScript
1篇
其它
31篇
目录
评论 6
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
Bulut0907
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值