ClickHouse 配置指南

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
在这里插入图片描述

一、ClickHouse

1.1.ClickHouse简介

1.1.1. 传统数据库存储方式与列式数据库存储方式

  • 在传统的行式数据库系统中,数据按如下顺序存储:
    在这里插入图片描述
    处于同一行中的数据总是被物理的存储在一起。
    常见的行式数据库系统有:MySQL、Postgres和MS SQL Server。

  • 在列式数据库系统中,数据按如下的顺序存储:
    在这里插入图片描述这些示例只显示了数据的排列顺序。来自不同列的值被单独存储,来自同一列的数据被存储在一起。
    常见的列式数据库有: Vertica、 Paraccel (Actian Matrix,Amazon Redshift)、 Sybase IQ、 Exasol、 Infobright、 InfiniDB、 MonetDB (VectorWise, Actian Vector)、 LucidDB、 SAP HANA、 Google Dremel、 Google PowerDrill、 Druid、 kdb+。

不同的数据存储方式适用不同的业务场景,数据访问的场景包括:进行了何种查询、多久查询一次以及各类查询的比例;每种类型的查询(行、列和字节)读取多少数据;读取数据和更新之间的关系;使用的数据集大小以及如何使用本地的数据集;是否使用事务,以及它们是如何进行隔离的;数据的复制机制与数据的完整性要求;每种类型的查询要求的延迟与吞吐量等等

1.1.2 、ClickHouse

ClickHouse 是一个真正的列式数据库管理系统(DBMS)。在 ClickHouse 中,数据始终是按列存储的,包括矢量(向量或列块)执行的过程。只要有可能,操作都是基于矢量进行分派的,而不是单个的值,这被称为«矢量化查询执行»,它有利于降低实际的数据处理开销。

这个想法并不新鲜,其可以追溯到 APL 编程语言及其后代:A +、J、K 和 Q。矢量编程被大量用于科学数据处理中。即使在关系型数据库中,这个想法也不是什么新的东西:比如,矢量编程也被大量用于 Vectorwise 系统中。

通常有两种不同的加速查询处理的方法:矢量化查询执行和运行时代码生成。在后者中,动态地为每一类查询生成代码,消除了间接分派和动态分派。这两种方法中,并没有哪一种严格地比另一种好。运行时代码生成可以更好地将多个操作融合在一起,从而充分利用 CPU 执行单元和流水线。矢量化查询执行不是特别实用,因为它涉及必须写到缓存并读回的临时向量。

二、安装

2.1 系统要求

系统要求
ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。
官方预构建的二进制文件通常针对x86_64进行编译,并利用SSE 4.2指令集,因此,除非另有说明,支持它的CPU使用将成为额外的系统需求。下面是检查当前CPU是否支持SSE 4.2的命令:

[hadoop@master ~]$ grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
SSE 4.2 supported

在这里插入图片描述

2.2 、RPM安装包

通过RPM安装包进行ClickHouse的安装

  • 首先,添加官方存储库:
sudo yum install yum-utils

sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG

sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
  • 然后运行命令安装ClickHouse安装包:
sudo yum install clickhouse-server clickhouse-client

2.3 、启动ClickHouse

当Click安装成功后启动服务后,

[root@slave2 hadoop]# systemctl start clickhouse-server.service

您可以使用命令行客户端连接到它:

[root@slave2 hadoop]# clickhouse-client --host 127.0.0.1 --port 7000
ClickHouse client version 21.1.2.15 (official build).
Connecting to 127.0.0.1:7000 as user default.
Connected to ClickHouse server version 21.1.2 revision 54443.

slave2 :) 

问题总结

在执行客户端启动命令(sudo /etc/init.d/clickhouse-server start)时,会出现提示:

Init script is already running

接着打开clickhouse的客户端(clickhouse-client),会报错:

ClickHouse client version 20.11.3.3 (official build).
Connecting to localhost:9000 as user default.
Code: 210. DB::NetException: Connection refused (localhost:9000)

反查,发现日志未生成,再查,发现服务端启动根本就没启动成功,解决方式:
1 服务端的启动,centos7应使用systemctl:

systemctl start clickhouse-server.service
2 连接失败,是默认配置的监听host有问题,应修改配置文件(命令:vim /etc/clickhouse-server/config.xml),将以下配置的注释打开或添加一行:

<listen_host>::</listen_host>
3 重启server以使配置生效

systemctl restart clickhouse-server.service
4 客户端连接(命令:clickhouse-client),成功!

猜你喜欢

转载自blog.csdn.net/DAweibeke/article/details/113256710