使用Docker安装ClickHouse

简介: ClickHouse是一个由俄罗斯最大的搜索公司Yandex开源的列式数据库(DBMS),主要用于在线分析处理查询(OLAP),于2016年开源,采用C++开发。凭借优秀的性能,市场反应非常热烈。

什么是ClickHouse


相对行式数据库,像Mysql、Oracle、SqlServer等都是行式存储,是把同一行的数据放到相邻同一数据块种,而列式存储是把同一列的数据放到相邻同一数据块种,这样在进行计算类查询时,可以大大减少IO消耗,返回结果更快,采用列式存储后在进行数据记录写入的时候会麻烦一些。


列式数据库VS 行式数据库


1.png


列式存储的主要优点之一就是可以大幅降低系统的I/O,尤其是在海量数据查询时,I/O向来是系统的主要瓶颈之一。通过下面这张图,相信大家能够彻底明白这一点。


2.png

 

ClickHouse 很多大厂都在用,本篇主要使用Docker进行安装


安装配置


  • 创建目录并更改权限


mkdir-p/app/cloud/clickhouse/datamkdir-p/app/cloud/clickhouse/confmkdir-p/app/cloud/clickhouse/logchmod-R777/app/cloud/clickhouse/datachmod-R777/app/cloud/clickhouse/confchmod-R777/app/cloud/clickhouse/log


  • 拉取镜像


dockerpullyandex/clickhouse-server:20.3.5.21


查看 https://hub.docker.com/r/yandex/clickhouse-server/dockerfile 文件,EXPOSE  9000  8123  9009 了三个端口,而宿主机9000端口已被 MinIO 对象存储服务器占用,所以创建容器暴露该端口用9090替换


root@jazz-pc:~#dockerps--format"table {{.Names}} ------> {{.Ports}}"|grepminiominio------>0.0.0.0:9000->9000/tcp


  • 创建临时容器


dockerrun--rm-d--name=clickhouse-server\--ulimitnofile=262144:262144\-p8123:8123-p9009:9009-p9090:9000\yandex/clickhouse-server:20.3.5.21


  • 复制临时容器内配置文件到宿主机


dockercpclickhouse-server:/etc/clickhouse-server/config.xml/app/cloud/clickhouse/conf/config.xmldockercpclickhouse-server:/etc/clickhouse-server/users.xml/app/cloud/clickhouse/conf/users.xml


  • 停掉临时容器


dockerstopclickhouse-server


  • 创建default账号密码


PASSWORD=$(base64</dev/urandom|head-c8); echo"$PASSWORD"; echo-n"$PASSWORD"|sha256sum|tr-d'-'


会输出明码和SHA256密码 SEGByR98 211371f5bc54970907173acf6facb35f0acbc17913e1b71b814117667c01d96d


  • 创建root账号密码


PASSWORD=$(base64</dev/urandom|head-c8); echo"$PASSWORD"; echo-n"$PASSWORD"|sha256sum|tr-d'-'


会输出明码和SHA256密码 092j3AnV 35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e


  • 修改 /app/cloud/clickhouse/conf/users.xml
    把default账号设为只读权限,并设置密码 yandex-->users-->default-->profile 节点设为 readonly 注释掉 yandex-->users-->default-->password 节点 新增  yandex-->users-->default-->password_sha256_hex 节点,填入生成的密码


  • 新增root账号


<root><password_sha256_hex>35542ded44184b1b4b6cd621e052662578025b58b4187176a3ad2b9548c8356e</password_sha256_hex><networksincl="networks"replace="replace"><ip>::/0</ip></networks><profile>default</profile><quota>default</quota></root>


  • 创建容器


dockerrun-d--name=clickhouse-server\-p8123:8123-p9009:9009-p9090:9000\--ulimitnofile=262144:262144\-v/app/cloud/clickhouse/data:/var/lib/clickhouse:rw\-v/app/cloud/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml\-v/app/cloud/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml\-v/app/cloud/clickhouse/log:/var/log/clickhouse-server:rw\yandex/clickhouse-server:20.3.5.21


  • 用 DataGrip 连接


3.png


  • 用 dbeaver 连接


4.png


目录
相关文章
|
6天前
|
Linux 虚拟化 Docker
Windows12安装Docker
Windows12安装Docker
31 2
|
2天前
|
Linux 开发工具 Android开发
Docker系列(1)安装Linux系统编译Android源码
Docker系列(1)安装Linux系统编译Android源码
4 0
|
3天前
|
Ubuntu Linux 数据安全/隐私保护
Linux(7)Ubuntu20.04 arm64安装Docker
Linux(7)Ubuntu20.04 arm64安装Docker
15 0
|
3天前
|
存储 Ubuntu Docker
如何在 Ubuntu 上安装 Docker?
【4月更文挑战第17天】
40 8
如何在 Ubuntu 上安装 Docker?
|
6天前
|
Kubernetes 数据安全/隐私保护 数据中心
Portainer的安装(docker)
Portainer的安装(docker)
15 0
|
6天前
|
Ubuntu Docker 索引
ubuntu 20.04 安装docker教程和安装中遇到的问题解决方案(超详细 附加图文教程)
ubuntu 20.04 安装docker教程和安装中遇到的问题解决方案(超详细 附加图文教程)
30 0
|
13天前
|
时序数据库 Docker 容器
Docker安装InfluxDB
Docker安装InfluxDB
11 0
|
13天前
|
关系型数据库 MySQL 数据库
Docker安装MySQL
Docker安装MySQL
29 1
|
14天前
|
Ubuntu Python
python3安装clickhouse_sqlalchemy(greenlet) 失败
如果上述方法仍然无法解决问题,建议查阅相关错误信息和官方文档,以获取更详细的帮助。确保你的Python环境和依赖库都在最新版本,有时问题可能会因为版本不兼容而导致安装失败。
18 0
|
16天前
|
关系型数据库 MySQL 数据库
docker自定义安装mysql 5.7
docker自定义安装mysql 5.7
23 0