且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

使用Docker安装ClickHouse

更新时间:2022-06-16 01:49:34

什么是ClickHouse


相对行式数据库,像Mysql、Oracle、SqlServer等都是行式存储,是把同一行的数据放到相邻同一数据块种,而列式存储是把同一列的数据放到相邻同一数据块种,这样在进行计算类查询时,可以大大减少IO消耗,返回结果更快,采用列式存储后在进行数据记录写入的时候会麻烦一些。


列式数据库VS 行式数据库


使用Docker安装ClickHouse


列式存储的主要优点之一就是可以大幅降低系统的I/O,尤其是在海量数据查询时,I/O向来是系统的主要瓶颈之一。通过下面这张图,相信大家能够彻底明白这一点。


使用Docker安装ClickHouse

 

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@jazz-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>35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e</password_sha256_hex>
     <networks incl="networks" replace="replace">
        <ip>::/0</ip>
    </networks>
    <profile>default</profile>
    <quota>default</quota>
</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 连接


使用Docker安装ClickHouse


  • 用 dbeaver 连接


使用Docker安装ClickHouse