2、安装部署
官网:ClickHouse
基础设施
目前 ClickHouse 仅支持 Linux 系统,且cpu必须支持 SSE4.2 指令集,可以通过以下命令查询 Linux 是否支持:
_> more /proc/cpuinfo | grep sse4_2
_> grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
如果服务器不支持 SSE4.2 指令集,则不能下载预编译安装包,需要通过源码编译特定版本进行安装。
2.1、YUM 安装
_> yum -y install yum-utils
_> rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
_> yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/clickhouse.repo
_> yum install clickhouse-server clickhouse-client
2.2、RPM 安装
RPM 包下载地址:PackageCloud
_> wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm/download.rpm
_> wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm/download.rpm
_> wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.8.3.18-1.el7.x86_64.rpm/download.rpm
_> wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.8.3.18-1.el7.x86_64.rpm/download.rpm
# 可独立安装 安装顺序无要求
_> rpm -ivh clickhouse-common-static-20.8.3.18-1.el7.x86_64.rpm
_> rpm -ivh clickhouse-server-common-20.8.3.18-1.el7.x86_64.rpm
_> rpm -ivh clickhouse-server-20.8.3.18-1.el7.x86_64.rpm
_> rpm -ivh clickhouse-client-20.8.3.18-1.el7.x86_64.rpm
# 或者批量安装
_> rpm -ivh ./clickhouse-*.rpm
2.3、服务管理
# 启动服务
_> systemctl start clickhouse-server
# 停止服务
_> systemctl stop clickhouse-server
# 进入 CLI 客户端
_> clickhouse-client
_> clickhouse-client --host localhost --port 9000
2.4、集群配置
配置 /etc/clickhouse-server/config.xml
# 取消 listen_host 注释
# 允许所有网络接口访问服务
_> vim /etc/clickhouse-server/config.xml
:set nu
<listen_host>::</listen_host>
配置 metrika.xml
_> vim /etc/metrika.xml
<yandex>
<clickhouse_remote_servers>
<!-- clickhouse_cluster 为集群名称 可自由指定 -->
<clickhouse_cluster>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>node01</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>node02</host>
<port>9000</port>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<replica>
<host>node03</host>
<port>9000</port>
</replica>
</shard>
</clickhouse_cluster>
</clickhouse_remote_servers>
<zookeeper-servers>
<node index="1">
<host>node01</host>
<port>2181</port>
</node>
<node index="2">
<host>node02</host>
<port>2181</port>
</node>
<node index="3">
<host>node03</host>
<port>2181</port>
</node>
</zookeeper-servers>
<macros>
<replica>01</replica>
</macros>
<networks>
<ip>::/0</ip>
</networks>
<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
:集群配置标签,固定写法。 -
clickhouse_cluster
:集群名称,可自由定义,集群名称中不能包含点号。 -
shard
:分片,一个集群可以分多个分片,每个分片可以存储数据。分片是指包含部分数据的服务器,要读取所有的数据,必须访问所有的分片。分片可以理解为 ClickHouse 机器中的每个节点。这里可以配置一个或者任意多个分片,在每个分片中可以配置一个或任意多个副本,不同分片可配置不同数量的副本。如果只是配置一个分片,这种情况下查询操作应该称为远程查询,而不是分布式查询。f -
replica
:每个分片的副本,默认每个分片配置了一个副本。副本是指存储分片备份数据的服务器,要读取所有的数据,访问任意副本上的数据即可。也可以配置多个。如果配置了副本,读取操作可以从每个分片里选择一个可用的副本。如果副本不可用,会依次选择下个副本进行连接。该机制利于系统的可用性。 -
internal_replication
:默认为false
,写数据操作会将数据写入所有的副本,设置为true
,写操作只会选择一个正常的副本写入数据,副本间数据同步在后台自动进行。 -
zookeeper-servers
:ZK 集群配置。 -
macros
:区分每台 ClickHouse 节点的宏配置,每台 ClickHouse 需要配置不同名称。 -
networks
:这里配置 IP 为::/0
代表任意 IP 可以访问,包含 IPv4 和 IPv6。注意:允许外网访问还需配置/etc/clickhouse-server/config.xml
。 -
clickhouse_compression
:MergeTree 引擎表的数据压缩设置。-
min_part_size
:代表数据部分最小大小。 -
min_part_size_ratio
:数据部分大小与表大小的比率。 -
method
:数据压缩格式。
-
注意:需要在每台 ClickHouse 节点上配置 metrika.xml
文件,并且修改每个节点的 macros
配置名称。
检查集群状态
_> clickhouse-client
:) select * from system.clusters;
2.5、相关目录
-
/etc/clickhouse-server
:服务端的配置文件目录,包括全局配置config.xml
和用户配置users.xml
。 -
/var/lib/clickhouse
:默认数据存储目录,通常会修改,将数据保存到大容量磁盘路径中。 -
/var/log/cilckhouse-server
:默认日志目录,通常会修改,将数据保存到大容量磁盘路径中。 -
/usr/bin
:可执行文件。-
clickhouse
:主程序可执行文件。 -
clickhouse-server
:一个指向clickhouse
可执行文件的软连接,供服务端启动使用。 -
clickhouse-client
:一个指向clickhouse
可执行文件的软连接,供客户端启动使用。
-
3、CLI命令
CLI 命令行参数
-
--host, -h
:服务端的host
名称,默认是localhost
。可以选择使用host
名称或者 IPv4 或 IPv6 地址。需要
config.xml
中开启<listen_host>::</listen_host>
配置,代表可以任意ip可访问。 --port
:连接的端口,默认值:9000。--user, -u
:用户名。 默认值:default
。--password
:密码。--query,-q
:使用非交互模式查询。--database, -d
:默认当前操作的数据库. 默认值:服务端默认的配置(默认是default
)。--multiline, -m
:如果指定,允许多行语句查询(Enter仅代表换行,不代表查询语句完结)。--time, -t
:如果指定,非交互模式下会打印查询执行的时间到stderr
中。--stacktrace
:如果指定,如果出现异常,会打印堆栈跟踪信息。--config-file
:配置文件的名称。--multiquery,-n
:使用非交互模式查询数据时,可以分号隔开多个sql语句。