docker-compose快速部署clickhouse

satuo20 1年前 ⋅ 194 阅读

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: clickhouse/clickhouse-server
    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

  1. 修改 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连接可成功。


全部评论: 0

    我有话说: