赞
踩
参考手把手教你ClickHouse(一、搭建windows环境)
参考windows下docker desktop的安装和使用
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
(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配置来限制进程能够打开的文件句柄。
端口必须映射出来,这样其他主机就可以远程访问该服务。
用自定义配置文件启动容器
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 查看所有的数据库
(4)配置远程访问
clickhouse允许远程访问,将clickhouse的配置文件拷贝出来。
docker cp clickhouse-server:/etc/clickhouse-server/ /etc/clickhouse-server/
修改 /etc/clickhouse-server/config.xml 中注释去掉<listen_host>::</listen_host>
(1)启用虚拟化
打开任务管理器-> 选择性能 -> CPU ->虚拟化,确认是否已启用。
(2)启用Hyper-v
控制面板-> 程序 -> 启用或关闭Windows功能 -> 勾选Hyper-v。
启用Hyper-V后,VirtualBox就无法在使用。 但是,将保留所有现有的VirtualBox VM映像。
在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)打开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)拉取镜像
docker pull yandex/clickhouse-server
docker pull yandex/clickhouse-client
(2)运行临时容器temp-clickhouse-server
Windows控制台继续执行命令
docker run --rm -d --name=temp-clickhouse-server yandex/clickhouse-server
(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
查看文件情况。
(4)进入临时容器temp-clickhouse-server
docker exec -it temp-clickhouse-server /bin/bash
(5)修改监听host
修改D:/clickhouse/conf/config.xml文件
<listen_host>0.0.0.0</listen_host>
(6)销毁临时容器
docker stop temp-clickhouse-server
(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
数据库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条
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)删除指定数据
(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
删除之前
(2)删除全部数据
您始终必须指定过滤器表达式。如果要通过Mutation删除所有数据,请指定始终为true的内容,例如:
(1)语法
ALTER TABLE <table> DELETE WHERE 1=1;
(2)举例
alter table FactSaleOrders delete where 1=1;
(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;
修改之后
注意删除/更新,这是异步的。
请注意,两个命令都不直接执行变异。相反,他们安排ClickHouse在后台独立执行的变异。这就是为什么选择ALTER TABLE语法而不是典型的SQL UPDATE / DELETE的原因。您可以通过以下方式检查未完成的变异的进度。
SELECT * FROM system.mutations WHERE is_done = 0;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。