当前位置:   article > 正文

面向OLAP的列式存储DBMS-4-[ClickHouse]在windows中基于docker安装部署

面向OLAP的列式存储DBMS-4-[ClickHouse]在windows中基于docker安装部署

参考手把手教你ClickHouse(一、搭建windows环境)
参考windows下docker desktop的安装和使用

1 docker安装单机clickhouse

clickhouse官方提供了默认的镜像,直接使用即可。官方文档参考:https://hub.docker.com/r/yandex/clickhouse-server/。
(1)拉取clickhouse的docker镜像

docker search clickhouse
docker pull yandex/clickhouse-server
docker pull yandex/clickhouse-client
  • 1
  • 2
  • 3

在这里插入图片描述
(2)启动server端
docker run -d --name clickhouse --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server
参数含义

-d 代表后台运行。 
--name 是你自定义的名字。  
-p是容器端口映射到当前主机端口。
Linux通过nofile配置来限制进程能够打开的文件句柄。
  • 1
  • 2
  • 3
  • 4

端口必须映射出来,这样其他主机就可以远程访问该服务。

用自定义配置文件启动容器
docker run -d --name docker-clickhouse --ulimit nofile=262144:262144 -p 8123:8123 -p 9000:9000 -p 9009:9009 -v /etc/clickhouse-server/config.xml:/etc/clickhouse-server/config.xml yandex/clickhouse-server

(3)进入容器运行

docker ps -a 查看容器
docker exec -it docker-clickhouse /bin/bash 进入容器 
clickhouse-client 进入clickhouse命令行
show databases 查看所有的数据库
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
(4)配置远程访问
clickhouse允许远程访问,将clickhouse的配置文件拷贝出来。

docker cp clickhouse-server:/etc/clickhouse-server/ /etc/clickhouse-server/
修改 /etc/clickhouse-server/config.xml 中注释去掉<listen_host>::</listen_host>
  • 1
  • 2

2 Windows相关配置

(1)启用虚拟化
打开任务管理器-> 选择性能 -> CPU ->虚拟化,确认是否已启用。
在这里插入图片描述
(2)启用Hyper-v
控制面板-> 程序 -> 启用或关闭Windows功能 -> 勾选Hyper-v。
启用Hyper-V后,VirtualBox就无法在使用。 但是,将保留所有现有的VirtualBox VM映像
在这里插入图片描述

3 Docker desktop

3.1 安装

在windows使用docker根据官方文档安装的是Docker Desktop。Docker desktop是Microsoft Windows的Docker的社区版本。 我们可以从Docker Hub下载适用于Windows的Docker desktop。
Docker Desktop for Windows
Docker Desktop installer包括Docker Engine,Docker CLI客户端,Docker Compose,Notary,Kubernetes和Credential Helper。
不勾选WSL(wsl是适用于Linux的Windows 子系统)。
在这里插入图片描述
安装成功后查看windows任务栏会出现docker的经典logo,小鲸鱼。

CMD>>docker --version
Docker version 20.10.10, build b485636
  • 1
  • 2

3.2 配置

(1)打开Docker配置中心
任务栏小鲸鱼右键 -> Settings。
(2)配置Dcoker文件挂载目录权限
左侧菜单 Resources -> FILE SHARING -> 加号 -> D:\clickhouse -> 选择文件夹。
在这里插入图片描述
(4)配置Docker国内镜像加速下载
左侧菜单 Docker Engine -> 右侧输入框 -> Apply & Restart

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ],
  "insecure-registries": [],
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

4 ClickHouse相关

(1)拉取镜像

docker pull yandex/clickhouse-server
docker pull yandex/clickhouse-client
  • 1
  • 2

4.1 启动临时容器

(2)运行临时容器temp-clickhouse-server
Windows控制台继续执行命令

docker run --rm -d --name=temp-clickhouse-server yandex/clickhouse-server
  • 1

(3)config配置和users配置映射Windows硬盘目录
在D盘根目录创建D:/clickhouse/conf文件夹
将容器内的配置文件直接复制到外边的目录中。

docker cp temp-clickhouse-server:/etc/clickhouse-server/config.xml D:/clickhouse/conf/config.xml
docker cp temp-clickhouse-server:/etc/clickhouse-server/users.xml D:/clickhouse/conf/users.xml
  • 1
  • 2

查看文件情况。
在这里插入图片描述
(4)进入临时容器temp-clickhouse-server

docker exec -it temp-clickhouse-server /bin/bash
  • 1

(5)修改监听host
修改D:/clickhouse/conf/config.xml文件

<listen_host>0.0.0.0</listen_host>
  • 1

(6)销毁临时容器

docker stop temp-clickhouse-server
  • 1

4.2 运行ClickHouse服务

(1)创建目录:D:/clickhouse/data 和 D:/clickhouse/log
(2)Windows控制台执行命令,映射端口 8123、9000、9009,数据、配置、日志映射到Windows硬盘。
通过-v标识可以将主机的目录挂载到容器中去。

docker run -d --name=single-clickhouse-server -p 8123:8123 -p 9000:9000 -p 9009:9009 --ulimit nofile=262144:262144 --volume D:/clickhouse/data:/var/lib/clickhouse:rw --volume D:/clickhouse/conf:/etc/clickhouse-server:rw --volume D:/clickhouse/log:/var/log/clickhouse-server:rw yandex/clickhouse-server
  • 1

4.3 clickhouse-client操作

4.3.1 mysql数据库

数据库sales_source。

销售表【sales_order】
order_number		订单序号		整型		主键		非空		自增长
customer_number		用户序号		整型		非空
product_code		产品代码		整型		非空
order_date			订单日期		date	非空
entry_date			入库日期		date	非空
order_amount		预定数量		整型		非空

mysql>select count(*) from sales_order;
100000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在这里插入图片描述

4.3.2 从mysql导入数据到clickhouse

CREATE TABLE FactSaleOrders ENGINE = MergeTree ORDER BY order_number AS SELECT * FROM mysql('10.23.241.81:3306', 'sales_source', 'sales_order', 'root', 'bigdata');
其中
mysql('IP:PORT', 'dbname', 'tableName', 'root', 'password')
order_number是mysql中表的主键。
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

4.3.3 删除数据

(1)删除指定数据

(1)语法
ALTER TABLE <table> DELETE WHERE <filter expression>
(2)举例
select count(*) from FactSaleOrders where customer_number=4;
输出16736
alter table FactSaleOrders delete where customer_number=4;
输出0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

删除之前
在这里插入图片描述
(2)删除全部数据
您始终必须指定过滤器表达式。如果要通过Mutation删除所有数据,请指定始终为true的内容,例如:

(1)语法
ALTER TABLE <table> DELETE WHERE 1=1;
(2)举例
alter table FactSaleOrders delete where 1=1;
  • 1
  • 2
  • 3
  • 4

4.3.4 更新数据

(1)语法
ALTER TABLE <table> UPDATE column1 = expr1 [, ...] WHERE <filter expression>
(2)举例
select * from FactSaleOrders where customer_number=3 limit 5;
alter table FactSaleOrders update product_code=8888 where customer_number=3;
  • 1
  • 2
  • 3
  • 4
  • 5

修改之后
在这里插入图片描述

注意删除/更新,这是异步的。
请注意,两个命令都不直接执行变异。相反,他们安排ClickHouse在后台独立执行的变异。这就是为什么选择ALTER TABLE语法而不是典型的SQL UPDATE / DELETE的原因。您可以通过以下方式检查未完成的变异的进度。

SELECT * FROM system.mutations WHERE is_done = 0;
  • 1
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号