ClickHouse是一个分布式面向列的RDBMS系统,可以单机部署也可支持集群。目前支持Centos和Ubuntu系统的部署,并且有方和第三方都发布有RPM/DEB包,可直接安装使用。

ClickHouse仓库和包下载

Github:

Server Packages:

Client Packages:

我们主要讨论ClickHouse相关配置文件,主要涉及三个:

  • config.xml - 核心配置文件,记录节点信息和相关访问端口。
  • users.xml - 针对client和server交互的用户权限、负载和配额信息。
  • metrika.xml - 集群配置,主要记录集群数据分片和zookeeper信息。

config.xml涉及的几个核心配置信息,logger,各种Port,连接数,并发查询,数据存储路径,用户配置,集群配置文件,时区配置等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
<?xml version="1.0"?>
<yandex>
<logger>
<level>trace</level>
<log>/data/clickhouse/log/server.log</log>
<errorlog>/data/clickhouse/log/error.log</errorlog>
<size>1000M</size>
<count>10</count>
</logger>

<!-- For HTTPS over native protocol. -->
<!--
<https_port>8443</https_port>
-->
<http_port>8123</http_port>
<tcp_port>9000</tcp_port>

<!-- Port for communication between replicas. Used for data exchange. -->
<interserver_http_port>9009</interserver_http_port>

<!-- 本机域名 -->
<interserver_http_host>node1.jikelab.com</interserver_http_host>

<!-- 监听IP -->
<listen_host>0.0.0.0</listen_host>

<!-- 最大连接数 -->
<max_connections>64</max_connections>

<!-- 没搞懂的参数 -->
<keep_alive_timeout>3</keep_alive_timeout>

<!-- 最大并发查询数 -->
<max_concurrent_queries>16</max_concurrent_queries>

<!-- 单位是B -->
<uncompressed_cache_size>8589934592</uncompressed_cache_size>
<mark_cache_size>10737418240</mark_cache_size>

<!-- 存储路径 -->
<path>/data/clickhouse/</path>
<tmp_path>/data/clickhouse/tmp/</tmp_path>

<!-- user配置 -->
<users_config>users.xml</users_config>

<default_profile>default</default_profile>

<log_queries>1</log_queries>

<default_database>default</default_database>

<!-- Configuration of clusters that could be used in Distributed tables.
https://clickhouse.yandex/docs/en/table_engines/distributed/
-->
<remote_servers incl="clickhouse_remote_servers" />

<zookeeper incl="zookeeper-servers" optional="true" />

<!-- Substitutions for parameters of replicated tables.
Optional. If you don't use replicated tables, you could omit that.
See https://clickhouse.yandex/docs/en/table_engines/replication/#creating-replicated-tables
-->
<macros incl="macros" optional="true" />

<!-- Reloading interval for embedded dictionaries, in seconds. Default: 3600. -->
<builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>

<!-- 控制大表的删除 -->
<max_table_size_to_drop>0</max_table_size_to_drop>

<!-- 集群配置文件 -->
<include_from>/data/clickhouse/metrika.xml</include_from>
</yandex>

users.xml设置权限、负载和配额,目前支持只读和读写控制,密码建议使用sha256加密,不建议使用明文。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version="1.0"?>
<yandex>
<profiles>
<!-- 读写用户设置 -->
<default>
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</default>
<!-- 只写用户设置 -->
<readonly>
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
<readonly>1</readonly>
</readonly>
</profiles>
<!-- 配额 -->
<quotas>
<!-- Name of quota. -->
<default>
<interval>
<duration>3600</duration>
<queries>0</queries>
<errors>0</errors>
<result_rows>0</result_rows>
<read_rows>0</read_rows>
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
<users>
<!-- 读写用户 -->
<default>
<password_sha256_hex>967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
<!-- 只读用户 -->
<ck>
<password_sha256_hex>967f3bf355dddfabfca1c9f5cab39352b2ec1cd0b05f9e1e6b8f629705fe7d6e</password_sha256_hex>
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>readonly</profile>
<quota>default</quota>
</ck>
</users>
</yandex>

metrika.xml集群配置,主要记录集群数据分片和zookeeper信息,分片和副本决定了集群的容错和高可靠。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?xml version="1.0"?>
<yandex>
<!-- 集群配置 -->
<clickhouse_remote_servers>
<bip_ck_cluster>
<!-- 数据分片1 -->
<shard>
<internal_replication>false</internal_replication>
<replica>
<host>node1.jikelab.com</host>
<port>9000</port>
<user>default</user>
<password>6lYaUiFi</password>
</replica>
</shard>
<!-- 数据分片2 -->
<shard>
<internal_replication>false</internal_replication>
<replica>
<host>node2.jikelab.com</host>
<port>9000</port>
<user>default</user>
<password>6lYaUiFi</password>
</replica>
</shard>
<!-- 数据分片3 -->
<shard>
<internal_replication>false</internal_replication>
<replica>
<host>node3.jikelab.com</host>
<port>9000</port>
<user>default</user>
<password>6lYaUiFi</password>
</replica>
</shard>
</bip_ck_cluster>
</clickhouse_remote_servers>
<!-- 本节点副本名称,创建复制表时有用,每个节点不同,整个集群唯一,建议使用主机名) -->
<macros>
<replica>node1</replica>
</macros>
<!-- 监听网络 -->
<networks>
<ip>::/0</ip>
</networks>
<!-- ZK集群 -->
<zookeeper-servers>
<node index="1">
<host>192.168.0.245</host>
<port>2181</port>
</node>
<node index="2">
<host>192.168.0.246</host>
<port>2181</port>
</node>
<node index="3">
<host>192.168.0.247</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- 数据压缩算法 -->
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>

集群中clickhouse_remote_servers配置涉及数据分片,如果使用了分布式表,需要在集群的配置文件里,增加分片的用户名密码。

涉及完整的配置信息:

有关集群配置,在config.xml中有相关说明,这里就不单独列出来了。

为了更加简化管理集群和配置,降低成本,我开发了一个针对ClickHouse相关的自动化运维可扩展的工具,可视化的完成集群运维和配置管理。

正在进行Clickhouse的所有配置指标梳理,在可视化界面进行配置管理和安装,配置版本回滚。

关于安装包

介绍了clickhouse支持的相关系统包,还有周边配套的软件和资源列表。

关于配置文件

未来会推出一个完全自动化管理和安装的可视化工具,是一套针对ClickHouse生态的一揽子方案,正在努力调试中,so,导致没时间更新文章。

关于数据产品

完全OpenSource的方式发布,是一个综合性的产品,定位解决企业核心的OLAP和OLTP大多数场景。

关于ClickHouse数据产品,我会慢慢更新,尽请期待…