1

单机安装

ClickHouse支持运行在主流64位CPU架构(X86、AArch和PowerPC)的Linux操作系统之上,可以通过源码编译、预编译压缩包、Docker镜像和RPM等多种方法进行安装。由于篇幅有限,本节着重讲解离线RPM的安装方法。更多的安装方法请参阅官方手册,此处不再赘述。

操作系统:centos7.x
ClickHouse版本:19.17.4.11
ClickHouse安装包下载地址:
https://packagecloud.io/altin...
https://repo.yandex.ru/clickh...

需要下载下面四个安装包
clickhouse-client-19.17.4.11-1.el7.x86_64.rpm
clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm
clickhouse-server-19.17.4.11-1.el7.x86_64.rpm
clickhouse-server-common-19.17.4.11-1.el7.x86_64.rpm

关闭防火墙,检查环境:
systemctl stop firewalld.service
systemctl disable firewalld.service

需要验证当前服务器的CPU是否支持SSE 4.2指令集,因为向量化执行需要用到这项特性:

#grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported

设置FQDN:
hostnamectl --static set-hostname ch5.nauu.com
验证修改:
hostname -f
ch5.nauu.com

最后需要配置hosts文件,配置后的效果如下:
192.168.59.136 ch5.nauu.com ch5

安装执行
将RPM包上传到/chbase/setup目录下
cd /chbase/setup
rpm -ivh *.rpm

image.png
如果报错缺少依赖包,需要一一补齐

目录结构

程序在安装的过程中会自动构建整套目录结构,接下来分别说明它们的作用。首先是核心目录部分:
(1)/etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等。
(2)/var/lib/clickhouse:默认的数据存储目录(通常会修改默认路径配置,将数据保存到大容量磁盘挂载的路径)。
(3)/var/log/clickhouse-server:默认保存日志的目录(通常会修改路径配置,将日志保存到大容量磁盘挂载的路径)。

接着是配置文件部分:
(1)/etc/security/limits.d/clickhouse.conf:文件句柄数量的配置,默认值如下所示。

image.png

该配置也可以通过config.xml的max_open_files修改。
(2)/etc/cron.d/clickhouse-server:cron定时任务配置,用于恢复因异常原因中断的ClickHouse服务进程,其默认的配置如下。
image.png

可以看到,在默认的情况下,每隔10秒就会使用condstart尝试启动一次ClickHouse服务,而condstart命令的启动逻辑如下所示。
image.png

如果ClickHouse服务正在运行,则跳过;如果没有运行,则通过start启动。最后是一组在/usr/bin路径下的可执行文件:
(1)clickhouse:主程序的可执行文件。
(2)clickhouse-client:一个指向ClickHouse可执行文件的软链接,供客户端连接使用。
(3)clickhouse-server:一个指向ClickHouse可执行文件的软链接,供服务端启动使用。
(4)clickhouse-compressor:内置提供的压缩工具,可用于数据的正压反解。

启动服务

在启动服务之前,建议修改默认的数据保存目录,将它切换到大容量磁盘挂载的路径。打开config.xml配置文件,修改数据保存的地址:
vim /etc/clickhouse-server/config.xml
image.png

安装过程中clickhouse用户已经被创建,
usermod -s /bin/bash clickhouse

在root用户下启动:
image.png

在启动成功之后,就可以使用客户端测试连接了:
clickhouse-client
image.png

到此,单节点安装结束。

版本升级
在使用离线RPM安装包安装后,可以直接通过rpm命令升级:
image.png

客户端的访问接口

ClickHouse的底层访问接口支持TCP和HTTP两种协议,其中,TCP协议拥有更好的性能,其默认端口为9000,主要用于集群间的内部通信及CLI客户端;而HTTP协议则拥有更好的兼容性,可以通过REST服务的形式被广泛用于JAVA、Python等编程语言的客户端,其默认端口为8123。通常而言,并不建议用户直接使用底层接口访问ClickHouse,更为推荐的方式是通过CLI和JDBC这些封装接口,因为它们更加简单易用。

CLI(Command Line Interface)即命令行接口,其底层是基于TCP接口进行通信的,是通过clickhouse-client脚本运行的。它拥有两种执行模式。

重要参数
(1)--host / -h:服务端的地址,默认值为localhost。如果修改了config.xml内的listen_host,则需要依靠此参数指定服务端地址,例如下面所示的代码。
image.png
(2)--port:服务端的TCP端口,默认值为9000。如果要修改config.xml内的tcp_port,则需要使用此参数指定。
(3)--user / -u:登录的用户名,默认值为default。如果使用非default的其他用户名登录,则需要使用此参数指定,例如下面所示代码。关于自定义用户的介绍将在第11章展开。
image.png
(4)--password:登录的密码,默认值为空。如果在用户定义中未设置密码,则不需要填写(例如默认的default用户)。
(5)--database / -d:登录的数据库,默认值为default。
(6)--query / -q:只能在非交互式查询时使用,用于指定SQL语句。(7)--multiquery / -n:在非交互式执行时,允许一次运行多条SQL语句,多条语句之间以分号间隔。
(8)--time / -t:在非交互式执行时,会打印每条SQL的执行时间,例如下面所示代码。
image.png

用Datagrip链接clickhouse:

image.png
用户default 密码默认为空,数据库default

JDBC连接
ClickHouse支持标准的JDBC协议,底层基于HTTP接口通信。使用下面的Maven依赖,即可为Java程序引入官方提供的数据库驱动包:
image.png

标准形式
标准形式是我们常用的方式,通过JDK原生接口获取连接,其关键参数如下:
JDBC Driver Class为ru.yandex.clickhouse.ClickHouseDriver;
JDBC URL为jdbc:clickhouse://<host>:<port>[/<database>]。接下来是一段伪代码用例:

image.png

高可用模式
高可用模式允许设置多个host地址,每次会从可用的地址中随机选择一个进行连接,其URL声明格式如下:
image.png
在高可用模式下,需要通过BalancedClickhouseDataSource对象获取连接,接下来是一段伪代码用例:
image.png
image.png


小明的数据脚印
145 声望41 粉丝