怎么用Docker安装ClickHouse教程
什么是ClickHouse
相对行式数据库,像Mysql、Oracle、SqlServer等都是行式存储,是把同一行的数据放到相邻同一数据块种,而列式存储是把同一列的数据放到相邻同一数据块种,这样在进行计算类查询时,可以大大削减IO耗费,返回结果更快,采用列式存储后在进行数据记录写入的时分会费事一些。
列式数据库VS 行式数据库
列式存储的主要优点之一便是可以大幅降低体系的I/O,尤其是在海量数据查询时,I/O向来是体系的主要瓶颈之一。通过下面这张图,信任我们可以彻底理解这一点。
ClickHouse 很多大厂都在用,本篇主要运用Docker进行装置
装置装备
- 创立目录并更改权限
mkdir -p /app/cloud/clickhouse/data mkdir -p /app/cloud/clickhouse/conf mkdir -p /app/cloud/clickhouse/log chmod -R 777 /app/cloud/clickhouse/data chmod -R 777 /app/cloud/clickhouse/conf chmod -R 777 /app/cloud/clickhouse/log
- 拉取镜像
docker pull yandex/clickhouse-server:20.3.5.21
查看 https://hub.docker.com/r/yandex/clickhouse-server/dockerfile 文件,EXPOSE 9000 8123 9009 了三个端口,而宿主机9000端口已被 MinIO 目标存储服务器占用,所以创立容器露出该端口用9090替换
root-pc:~# docker ps --format "table {{.Names}} ------> {{.Ports}}" | grep minio minio ------> 0.0.0.0:9000->9000/tcp
- 创立暂时容器
docker run --rm -d --name=clickhouse-server \ --ulimit nofile=262144:262144 \ -p 8123:8123 -p 9009:9009 -p 9090:9000 \ yandex/clickhouse-server:20.3.5.21
- 仿制暂时容器内装备文件到宿主机
docker cp clickhouse-server:/etc/clickhouse-server/config.xml /app/cloud/clickhouse/conf/config.xml docker cp clickhouse-server:/etc/clickhouse-server/users.xml /app/cloud/clickhouse/conf/users.xml
- 停掉暂时容器
docker stop clickhouse-server
- 创立default账号暗码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
会输出明码和SHA256暗码 SEGByR98 211371f5bc54970907173acf6facb35f0acbc17913e1b71b814117667c01d96d
- 创立root账号暗码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'
会输出明码和SHA256暗码 092j3AnV 35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e
-
修改 /app/cloud/clickhouse/conf/users.xml
把default账号设为只读权限,并设置暗码 yandex-->users-->default-->profile 节点设为 readonly 注释掉 yandex-->users-->default-->password 节点 新增 yandex-->users-->default-->password_sha256_hex 节点,填入生成的暗码
- 新增root账号
<root> <password_sha256_hex>35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356epassword_sha256_hex> <networks incl="networks" replace="replace"> <ip>::/0ip> networks> <profile>defaultprofile> <quota>defaultquota> root>
- 创立容器
docker run -d --name=clickhouse-server \ -p 8123:8123 -p 9009:9009 -p 9090:9000 \ --ulimit nofile=262144:262144 \ -v /app/cloud/clickhouse/data:/var/lib/clickhouse:rw \ -v /app/cloud/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \ -v /app/cloud/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \ -v /app/cloud/clickhouse/log:/var/log/clickhouse-server:rw \ yandex/clickhouse-server:20.3.5.21
- 用 DataGrip 衔接
- 用 dbeaver 衔接