docker-compose快速部署clickhouse

    ClickHouse 是俄罗斯第一大搜索引擎 Yandex 开发的列式储存数据库。令人惊喜的是,这个列式储存数据库的性能大幅超越了很多商业 MPP 数据库软件,比如 Vertica,InfiniDB.

相比传统的数据库软件,ClickHouse 要快 100-1000X:

  100Million 数据集:

  • ClickHouse 比 Vertica 约快 5 倍,比 Hive 快 279 倍,比 My SQL 快 801 倍

  1Billion 数据集:

  • ClickHouse 比 Vertica 约快 5 倍,MySQL 和 Hive 已经无法完成任务了

1. 部署 Clickhouse 服务

1.1 创建clickhouse 数据存储目录

cd /data

mkdir clickhouse

1.2 创建clickhouse 工作目录

cd /home

mkdir clickhouse

cd clickhouse

mkdir config

1.3 docker-compose 启动镜像

version: '3'

services:
  clickhouse:
    image: yandex/clickhouse-server:21.3.20-alpine
    container_name: clickhouse
    restart: always
    networks:
      - deng
    ports:
      - "8123:8123"
      - "9000:9000"
    volumes:
      # 默认配置
      - /etc/localtime:/etc/localtime:ro
      # 运行日志
      - /data/clickhouse/log:/var/log/clickhouse-server
      # 数据持久
      - /data/clickhouse:/var/lib/clickhouse:rw

networks:
  deng:
    external: true

 启动:docker-compose up -d

2. 修改 Clickhouse 配置

2.1 更改默认配置

    进入容器查看配置:

docker exec -it clickhouse /bin/bash

    clickhouse 默认配置路径是: /etc/clickhouse-server/ 

    

2.2 退出容器,复制配置文件到当前工作目录

docker cp clickhouse:/etc/clickhouse-server/config.xml ./config

docker cp clickhouse:/etc/clickhouse-server/users.xml ./config

docker cp clickhouse:/etc/clickhouse-server/config.d/docker_related_config.xml ./config

2.3 修改docker-compose 配置文件

     修改后的完整配置如下

version: '3'

services:
  clickhouse:
    image: yandex/clickhouse-server:21.3.20-alpine
    container_name: clickhouse
    restart: always
    networks:
      - deng
    ports:
      - "8123:8123"
      - "9000:9000"
    volumes:
      # 默认配置
      - ./config/docker_related_config.xml:/etc/clickhouse-server/config.d/docker_related_config.xml:rw
      - ./config/config.xml:/etc/clickhouse-server/config.xml:rw
      - ./config/users.xml:/etc/clickhouse-server/users.xml:rw
      - /etc/localtime:/etc/localtime:ro
      # 运行日志
      - /data/clickhouse/log:/var/log/clickhouse-server
      # 数据持久
      - /data/clickhouse:/var/lib/clickhouse:rw
  
networks:
  deng:
    external: true

2.4 修改监听地址

     关闭监听地址 ./config/docker_related_config.xml 第3行如下:

<!-- <listen_host>::</listen_host> -->

     打开监听地址 ./config/config.xml 第146行如下:

<listen_host>0.0.0.0</listen_host>

2.5 创建clickhouse用户

     查看 ./config/users.xml文件,在<users></users> 中加入自定义用户dev

<dev>
    <password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>
    <networks incl="networks" replace="replace">
        <ip>::/0</ip>
    </networks>
    <profile>default</profile>
    <quota>default</quota>
    <allow_databases>
        <database>default</database>
    </allow_databases>
</dev>

     生成密码(必须进入容器内运行)

docker exec -it clickhouse /bin/bash
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'

     然后将生成的密码(第二行)替换掉<password_sha256_hex></password_sha256_hex>中的。 

2.6 重新启动服务

docker-compose up -d

    重启服务后,再重新用DBeaver连接可成功。