一,ClickHouse介绍
ClickHouse 是一个开源的列式数据库管理系统(Column-Oriented DBMS),由俄罗斯的 Yandex 公司开发。它最初是为 Yandex 的 Metrica 分析服务设计的,用于处理大规模的数据分析任务。ClickHouse 能够提供快速的数据查询性能,即使在处理非常大的数据集时也能保持高效。
特点:
- 高性能:ClickHouse 针对读取操作进行了优化,能够以极高的速度处理复杂的查询。
- 列式存储:与传统的行式存储不同,列式存储可以更有效地压缩数据,并且在进行聚合查询时效率更高。
- SQL 支持:虽然 ClickHouse 使用的是 SQL 的一个变种,但它支持大多数标准 SQL 查询,使得用户能够轻松地执行复杂的数据分析任务。
- 分布式处理:ClickHouse 可以部署为分布式集群,支持跨多个节点的数据存储和处理,这有助于提高系统的可扩展性和可用性。
- 易用性:安装和配置相对简单,同时也提供了丰富的文档和支持。
- 灵活的数据类型:支持多种数据类型,包括数组、嵌套结构等,使得数据模型更加灵活。
应用场景:
- 实时数据分析
- 日志分析
- 业务智能报告
- 在线广告系统
- 用户行为分析
关于列式存储:
1)采用行式存储时,数据在磁盘上的组织结构为:
每条记录的信息是在一起的,多条记录依次排列。
好处是想查某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以。但是当想查所有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。
2)采用列式存储时,数据在磁盘上的组织结构为:
按列来存储数据,同一个字段(列)的数据是放在一起的。
好处是如果要对某一列的数据做聚合计算的时候,只需要查询这个字段的数据块,而不是全表查询。
3)列式存储的好处:
- 对于列的聚合、计数、求和等统计操作原因优于行式存储;
- 由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重;
- 由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于cache也有了更大的发挥空间
二,安装
1,下载安装包
地址:https://packages.clickhouse.com/rpm/stable/
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-client-21.7.3.14-2.noarch.rpm
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-21.7.3.14-2.x86_64.rpm
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-dbg-21.7.3.14-2.x86_64.rpm
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-server-21.7.3.14-2.noarch.rpm
2,安装rpm
rpm -ivh *.rpm
3,配置
cd /etc/clickhouse-server/
vi config.xml
把<listen_host>0.0.0.0</listen_host>注释打开,保证服务能被非本机访问到。
这个配置文件中,ClickHouse有一些默认路径配置:
数据文件路径:<path>/var/lib/clickhouse/</path>
日志文件路径:<log>/var/log/clickhouse-server/clickhouse-server.log</log>
4,在安装过程中,会默认创建用户组和用户
clickhouse/clickhouse
5,在安装过程中,会让你输入一个密码,这个在后面登录的时候会用到。
6,启动
systemctl start clickhouse-server
7,查看启动状态
systemctl status clickhouse-server
ClickHouse默认会有两个端口,在本机上连是9000端口,通过连接工具用http连接是8123端口。
三,连接
1,使用clickhouse-client -m连接
clickhouse-client -m
如果报错:
(1)Code: 210. DB::NetException: Connection refused (localhost:9000). (NETWORK_ERROR)
就需要修改config.xml文件中的<listen_host>0.0.0.0</listen_host>,打开注释,重启
(2)Code: 516. DB::Exception: Received from localhost:9000. DB::Exception: default: Authentication failed: password is incorrect or there is no user with such name. (AUTHENTICATION_FAILED)
就需要加上密码,密码就是在安装步骤中设定的那个密码
clickhouse-client -m --password
如何免密:
cd /etc/clickhouse-server/users.d
删除下面的文件(defaultUser.xml)。
再连接的时候就不需要带密码了,clickhouse-client -m 就可以连接了。
2,数据库连接工具上连接
以DBeaver为例
填入主机IP,端口号是默认的8123.
因为我们没有密码,所以直接可以测试连接和完成保存了。
3,在浏览器连接
ClickHouse默认提供了一个WebUI工具,通过路径 IP:8123/play 来访问