ClickHouse入门实践安装与部署

55次阅读

共计 3065 个字符,预计需要花费 8 分钟才能阅读完成。

单机安装

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


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

目录结构

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

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

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

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

如果 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

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

在 root 用户下启动:

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

到此,单节点安装结束。

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

客户端的访问接口

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,则需要依靠此参数指定服务端地址,例如下面所示的代码。

(2)–port:服务端的 TCP 端口,默认值为 9000。如果要修改 config.xml 内的 tcp_port,则需要使用此参数指定。
(3)–user / -u:登录的用户名,默认值为 default。如果使用非 default 的其他用户名登录,则需要使用此参数指定,例如下面所示代码。关于自定义用户的介绍将在第 11 章展开。

(4)–password:登录的密码,默认值为空。如果在用户定义中未设置密码,则不需要填写(例如默认的 default 用户)。
(5)–database / -d:登录的数据库,默认值为 default。
(6)–query / -q:只能在非交互式查询时使用,用于指定 SQL 语句。(7)–multiquery / -n:在非交互式执行时,允许一次运行多条 SQL 语句,多条语句之间以分号间隔。
(8)–time / -t:在非交互式执行时,会打印每条 SQL 的执行时间,例如下面所示代码。

用 Datagrip 链接 clickhouse:


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

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

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

高可用模式
高可用模式允许设置多个 host 地址,每次会从可用的地址中随机选择一个进行连接,其 URL 声明格式如下:

在高可用模式下,需要通过 BalancedClickhouseDataSource 对象获取连接,接下来是一段伪代码用例:

正文完
 0