华为云云耀云服务器L实例评测|云服务器使用docker部署ClickHouse
ClickHouse介绍
ClickHouse简介
ClickHouse是俄罗斯Yandex在2016年开源的用于在线分析处理(OLAP)的列式存储数据库。ClickHouse的全称是Click Stream DataWareHouse
列式存储
列式存储(Column oriented Storage)并不是一项新技术,它最早的时间可以追溯到1983年。然而,受限于早期的硬件条件和使用场景,主流的事务型数据库(OLTP)大多采用行式存储,直到近几年分析型数据库(OLAP)的兴起,列式存储这一概念才再次被提起。
列式存储的概念
与行式存储将每一行所有数据存在一个block中不同,列式存储当每一条新数据到来的时候,每一列会单独存储,查询时只有涉及到的列会被读取。
列式存储的优点及使用场景
优点
- 更好的性能:列式存储由于每一列单独存放,数据就是索引,所以在访问数据的时候只访问关心的字段部分,这将减少访问的吞吐量和系统的IO。
- 更高效压缩:列式存储同一列的数据类型一致,数据特征相似,可以利用磁盘压缩算法进行高效压缩。
- 更方便的大数据处理:ClickHouse支持数据分区和合并树引擎,这使得对大规模数据集的查询和分析更加高效。
应用场景
列式存储适合数据分析类场景,比如进行客户流量预测,需要对数据进行反复的遍历,由于列式存储相对于行式存储的压缩比较高,存储量更小,读取速度更快。
部署流程
部署ClickHouse Server与Client
由于只是学习使用ClickHouse,因此我会将这两个服务安装在同一台云服务器上。
部署ClickHouse Server
拉取ClickHouse Server镜像
docker pull yandex/clickhouse-server
运行ClickHouse Server服务
ClickHouse Server的docker运行命令如下:
docker run
-d
-p 8123:8123
--name clickhouse-server
--ulimit nofile=262144:262144
--volume=/root/click-house/click-house-server:/var/lib/clickhouse yandex/clickhouse-server
参数含义:
docker run :Docker 命令,用于运行一个容器。
-d :以后台(detached)模式运行容器。
-p 8123:8123:将服务器8123端口绑定至docker容器的8123端口
--name clickhouse-server :指定容器名称,这里是 "clickhouse-server"。
--ulimit nofile=262144:262144 :设置容器中 ClickHouse 进程的文件描述符限制。这里设置为 262144,即最大打开文件数。
-volume=/root/click-house/click-house-server:/var/lib/clickhouse :这是将宿主机的目录 /root/click-house/click-house-server挂载到容器中的 /var/lib/clickhouse 目录,用于持久化 ClickHouse 数据。
- yandex/clickhouse-server :这是指定所使用的 ClickHouse 服务器镜像。
命令执行后使用docker ps
查看运行情况
可以看到服务已经正常启动了
部署ClickHouse Client
拉取ClickHouse Client镜像
docker pull yandex/clickhouse-client
启动ClickHouse Client
docker run -it --rm --link clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
参数含义:
docker run :Docker 命令,用于运行一个容器。
-it :表示以交互模式运行容器,并分配一个伪终端。
--rm :表示容器在退出后将被自动删除。
--link clickhouse-server:clickhouse-server :将 ClickHouse 服务器容器链接到当前容器,并将其命名为 clickhouse-server 。
yandex/clickhouse-client :指定所使用的 ClickHouse 客户端镜像。
--host clickhouse-server :指定 ClickHouse 客户端连接的目标主机,这里是 clickhouse-server 。
可以看到docker客户端已经运行 并且进入了ClickHouse Client所在的容器中。
创建数据库
show databases
可以查看ClickHouse Client中所有的数据库
CREATE DATABASE testDB
创建一个名称为testDB的数据库
修改数据库密码
到这里,ClickHouse的任务其实就结束了,我们需要进入ClickHouse Server容器中,修改数据库的密码
docker exec -it clickhouse-server /bin/bash
在容器上安装vim
apt-get update
apt-get install vim -y
vim安装完成后来到/etc/clickhouse-server
目录,这个目录下的users.xml
文件中保存了用户名与密码
vi users.xml
编辑users.xml文件,可以看到数据库中已经有一个默认用户default
,找到标签<password></password>
这里有明文和密文两种密码形式,这里我选择了明文
保存退出后重启容器docker restart clickhouse-server
使用DataGrip连接ClickHouseDB
选择数据源类型为ClickHouse,下载必要依赖,输入之前设置的用户名与密码
可以看到已经连接成功了