当前位置: 代码网 > 服务器>服务器>云虚拟主机 > docker for windonws之Windows 10 家庭中文版安装clickhouse 22.3版本及配置过程

docker for windonws之Windows 10 家庭中文版安装clickhouse 22.3版本及配置过程

2024年06月02日 云虚拟主机 我要评论
1. 拉取镜像docker pull clickhouse/clickhouse-server:22.3.11.12-alpine2. clickhouse单机版2.1. 配置容器因为如下原因,需要将

1. 拉取镜像

docker pull clickhouse/clickhouse-server:22.3.11.12-alpine

2. clickhouse单机版

2.1. 配置容器

因为如下原因,需要将clickhouse的配置文件及数据目录复制到宿主机

  • 修改配置文件
  • 避免容器重启时,丢失数据文件
#启动容器
docker run -d --name ch-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server:22.3.11.12-alpine
# 复制文件到宿主机
docker cp ch-server:/etc/clickhouse-server d:/docker/ch/etc/clickhouse-server
docker cp ch-server:/var/lib/clickhouse d:/docker/ch/data
#停止容器
docker stop ch-server
# 再次启动容器
docker run -d --name=single-ch-server -p 8123:8123 -p 9000:9000 -p 9009:9009 --ulimit nofile=262144:262144 -v d:/docker/ch/data:/var/lib/clickhouse:rw -v d:/docker/ch/etc/clickhouse-server:/etc/clickhouse-server:rw clickhouse/clickhouse-server:22.3.11.12-alpine

2.2. 测试jdbc连接

启动成功后,使用dbeaver测试,用户名default,密码为空,则可以正常连接。

在这里插入图片描述

3 clickhouse集群版

3.1. 修改集群配置

  • 将配置、日志放在ch01目录下
  • 修改 d:\docker\ch\ch01\etc\clickhouse-server下的config.xml中,删除 <remote_servers>节点并添加如下信息
	<include_from>/etc/clickhouse-server/metrika01.xml</include_from>
	<remote_servers incl="clickhouse_remote_servers" optional="true"/>
	<zookeeper incl="zookeeper_servers" optional="true"/>
	<macros incl="macros" optional="true"/>
    <!--mergetree引擎表的数据压缩设置,在metrika.xml-->
    <compression incl="clickhouse_compression"></compression>
  • 新增metrika01.xml文件,内容如下:
  • 考虑到一台笔记本的资源比较有限,所以就安装单个节点的zk, clickhouse的集群也是2分片1副本的。
<?xml version="1.0"?>
<yandex>
    <clickhouse_remote_servers>
      <cluster01>
            <shard>
                <internal_replication>true</internal_replication>
				<weight>1</weight>
                <replica>
                    <host>ch01</host>
                    <port>9000</port>
                    <user>default</user>
                    <password></password>
                </replica>
            </shard>
			<shard>
                <internal_replication>true</internal_replication>
				<weight>1</weight>
                <replica>
                    <host>ch02</host>
                    <port>9000</port>
                    <user>default</user>
                    <password></password>
                </replica>
            </shard>
		</cluster01>
    </clickhouse_remote_servers>

    <macros>
        <layer>01</layer>
        <shard>01</shard>
        <replica>ch01</replica>
    </macros>

    <zookeeper_servers>
        <node index="1">
            <host>zk01</host>
            <port>2181</port>
        </node>
    </zookeeper_servers>

   <networks>
     <ip>::/0</ip>
   </networks>

  <clickhouse_compression>
    <case>
      <min_part_size>1073741824</min_part_size>
      <min_part_size_ratio>0.01</min_part_size_ratio>
      <method>lz4</method>
    </case>
  </clickhouse_compression>
</yandex>

节点ch02的配置:复制ch01目录,产生ch02目录

修改metrika01.xml,将macros内容调整,其它配置与上面一致。

   <macros>
        <layer>01</layer>
        <shard>02</shard>
        <replica>ch02</replica>
    </macros>

3.2. 编辑docker-compose.yml

采用卷标的方式挂载数据

version: '3.1'
services:
  zookeeper:
    image: zookeeper:3.4.14
    ports:
      - "8181:2181"
      - "8182:2182"
    hostname: zk01
  ch01:
    image: clickhouse/clickhouse-server:22.3.11.12-alpine
    restart: on-failure
    container_name: ch01
    ports:
      - 9000:9000
      - 8123:8123
      - 9009:9009
    volumes:
      - ch1-data:/var/lib/clickhouse
      - d:/docker/ch/ch01/etc/clickhouse-server:/etc/clickhouse-server:rw
      - d:/docker/ch/ch01/log:/var/log/clickhouse-server:rw
    hostname: ch01
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    depends_on:
      - "zookeeper"
  ch02:
    image: clickhouse/clickhouse-server:22.3.11.12-alpine
    restart: on-failure
    container_name: ch02
    ports:
      - 9800:9000
      - 8823:8123
      - 9809:9009
    volumes:
      - ch2-data:/var/lib/clickhouse
      - d:/docker/ch/ch02/etc/clickhouse-server:/etc/clickhouse-server:rw
      - d:/docker/ch/ch02/log:/var/log/clickhouse-server:rw
    hostname: ch02
    ulimits:
      nofile:
        soft: 262144
        hard: 262144
    depends_on:
      - "zookeeper"
volumes:
  ch1-data:
  ch2-data:

3.3. 启动ch集群

docker-compose up -d

3.4. 测试

create database test on cluster cluster01;
use test;
create table events_local on cluster cluster01 (
	id string,
	eventtype uint8,
	url string,
	eventtime datetime
) engine = mergetree()
partition by tostartofday(eventtime)
order by (eventtime,eventtype)
settings index_granularity = 8192;

create table events on cluster cluster01 as test.events_local engine = distributed('cluster01', 'test', 'events_local', rand());

insert into events(id,eventtype,url,eventtime) values ('11',1,'http://www.baidu.com','2021-12-20 12:00:00');
insert into events(id,eventtype,url,eventtime) values ('12',1,'http://www.baidu.com','2021-12-20 12:00:00');
insert into events(id,eventtype,url,eventtime) values ('13',1,'http://www.baidu.com','2021-12-20 12:00:00');
insert into events(id,eventtype,url,eventtime) values ('14',1,'http://www.baidu.com','2021-12-20 12:00:00');
insert into events(id,eventtype,url,eventtime) values ('15',1,'http://www.baidu.com','2021-12-20 12:00:00');
insert into events(id,eventtype,url,eventtime) values ('16',1,'http://www.baidu.com','2021-12-20 12:00:00');

4. 存在的解决问题

4.1. permission denied

将clickhouse的数据目录放在宿主机时,在插入数据时报如下错误,但如果不放在宿主机,则数据会丢失。

received exception from server (version 22.3.11):
code: 1001. db::exception: received from localhost:9000. db::exception: std::__1::__fs::filesystem::filesystem_error: filesystem error: in rename: permission denied [/var/lib/clickhouse/store/0d4/0d4a6f52-b3a6-4496-8174-e03ae9503321/tmp_insert_1639958400_1_1_0/] [/var/lib/clickhouse/store/0d4/0d4a6f52-b3a6-4496-8174-e03ae9503321/1639958400_1_1_0/]. (std_exception)
  • 采用将宿主机 路径直接挂载到本地,比较直观,但需要管理本地的路径,但这种方式在clickhouse写数据时,会报:permission denied
  • 使用卷标的方式,比较简洁,但你不知道数据存在本地什么位置,但这种方式在clickhouse写数据时是正常的

目前不清楚具体的原因,如果你知道,烦请告知。 4.2. ports are not available

报错信息:error response from daemon: ports are not available: exposing port tcp 0.0.0.0:8848 -> 0.0.0.0:0: listen tcp 0.0.0.0:8848: bind: an attempt was made to access a socket in a way forbidden by its access permissions.

通过cmd命令查看哪些端口被禁用tcp协议

netsh interface ipv4 show excludedportrange protocol=tcp

将docker启动命令中的宿主机端口改成禁用之外的就可以了

在这里插入图片描述

到此这篇关于docker for windonws之windows 10 家庭中文版安装clickhouse 22.3版本及配置的文章就介绍到这了,更多相关windows 10安装clickhouse内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com