利用docker安装启动ClickHouse

一、clickhouse简介

​ ClickHouse是一个面向列存储的数据库管理系统,可以使用SQL查询实时生成分析数据报告,主要用于OLAP(在线分析处理查询)场景。关于clickhouse原理以及基础知识在以后学习中慢慢总结。(^_^)

二、安装启动

这里主要描述如何使用docker安装并启动clickhouse,其他安装方法均参考了官方文档: https://clickhouse.tech/docs/zh/getting_started/install/

1、Debian/Ubuntu/RPM安装ClickHouse

对于以上方法安装,官方均提供了安装包,直接通过apt-get installrpm -ivh安装即可,安装包路径如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Debian/Ubuntu
## 安装包位置:https://repo.yandex.ru/clickhouse/deb/stable/main/
deb http://repo.yandex.ru/clickhouse/deb/stable/ main/
sudo apt-get install dirmngr # optional
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4 # optional
sudo apt-get update
sudo apt-get install clickhouse-client clickhouse-server

# rpm安装
## 安装包位置:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64
sudo yum install yum-utils
sudo rpm --import https://repo.yandex.ru/clickhouse/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.yandex.ru/clickhouse/rpm/stable/x86_64
sudo yum install clickhouse-server clickhouse-client

2、docker安装ClickHouse

2.1 docker安装

Centos安装docker参考于docker官方文档:https://docs.docker.com/install/linux/docker-ce/centos/

2.1.1、卸载老版本docker

1
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

2.1.2、安装依赖包并设置官方镜像源

1
2
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2.1.3、安装最新版docker

1
yum install docker-ce docker-ce-cli containerd.io

2.1.4、启动docker

目前docker最新版本为19.03版本,安装该版本启动时(安装17.03版本并没有报错)有可能产生以下报错:

1
2
3
4
5
6
7
8
# systemctl start docker
A dependency job for docker.service failed. See 'journalctl -xe' for details.
## 报错具体如下图:出现该报错的原因是,由于主机之前对/etc/group等文件进行过`chattr +i`加锁操作,导致docker安装时执行groupadd docker报错
## 解决方法,对相关文件解锁之后,执行groupadd docker即可
此时执行systemctl start docker即可成功启动

启动完成后可利用官方提供的hello-world进行测试
docker run hello-world

2.2 安装ClickHouse

​ docker环境搭建好之后,利用docker安装clickhouse比较简单,clickhouse官方提供了默认的镜像,直接使用即可。官方文档参考:https://hub.docker.com/r/yandex/clickhouse-server/

​ 目前正在研究如何根据源码包修改docker文件,安装之后得到想要的配置,预计下周出个文章详解^_^

2.2.1、拉取clickhouse的docker镜像

1
2
docker pull yandex/clickhouse-server
docker pull yandex/clickhouse-clinet

2.2.2、启动server端

1
2
3
4
5
6
7
# 默认直接启动即可
docker run -d --name [启动之后的名称] --ulimit nofile=262144:262144 yandex/clickhouse-server

# 如果想指定目录启动,这里以clickhouse-test-server命令为例,可以随意写
mkdir /work/clickhouse/clickhouse-test-db ## 创建数据文件目录
# 使用以下路径启动,在外只能访问clickhouse提供的默认9000端口,只能通过clickhouse-client连接server
docker run -d --name clickhouse-test-server --ulimit nofile=262144:262144 --volume=/work/clickhouse/clickhouse_test_db:/var/lib/clickhouse yandex/clickhouse-server

2.3 启动并连接clickhouse-server

2.3.1、docker启动clickhouse-client

1
docker run -it --rm --link clickhouse-test-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server

2.3.2、使用clickhouse-client连接

3、客户端常用参数

1
2
3
4
5
6
7
8
9
10
11
12
clickhouse-client
--host, -h :服务端host名称,默认 localhost
--port :连接端口,默认9000
--user, -u :用户名,默认 default
--password :密码,默认空
--query, -q :非交互模式下的查询语句
--database, -d :默认当前操作的数据库,默认default
--multiline, -m :允许多行语句查询,在clickhouse中默认回车即为sql结束,可使用该参数多行输入
--format, -f :使用指定的默认格式输出结果 csv,以逗号分隔
--time, -t :非交互模式下会打印查询执行的时间
--stacktrace :出现异常会打印堆栈跟踪信息
--config-file :配置文件名称