目录
必读参考:https://www.jianshu.com/p/ae45e0aa2b52
1、离线安装
离线安装包下载地址http://repo.yandex.ru/clickhouse/
另一个下载地址https://packagecloud.io/altinity/clickhouse
- Ubuntu
(1)下载安装介质
安装ClickHouse需要用到3个安装包:
clickhouse-client
clickhouse-server-base
clickhouse-server-common
下载地址:http://repo.yandex.ru/clickhouse/deb/stable/main/
(2)把下载好的三个deb安装包上传到服务器的/tmp目录
clickhouse-client_1.1.54362_amd64.deb
clickhouse-server-base_1.1.54362_amd64.deb
clickhouse-server-common_1.1.54362_amd64.deb
(3)执行安装
sudo dpkg -i clickhouse-server-base_1.1.54362_amd64.deb
sudo dpkg -i clickhouse-server-common_1.1.54362_amd64.deb
sudo dpkg -i clickhouse-client_1.1.54362_amd64.deb
(4)启动clickhouse-sever服务
sudo service clickhouse-server start
- Centos7
安装介质可以在这里找到:https://packagecloud.io/altinity/clickhouse
Centos7
1、将文件包的镜像文件全部安装(顺序可能有点出入,根据显示报错安装即可)
rpm -ivh libicu-50.2-3.el7.x86_64.rpm
rpm -ivh epel-release-latest-6.noarch.rpm
rpm -ivh clickhouse-server-common-19.9.2.4-1.el7.x86_64.rpm
rpm -ivh clickhouse-server-19.9.2.4-1.el7.x86_64.rpm
rpm -ivh clickhouse-common-static-19.9.2.4-1.el7.x86_64.rpm
rpm -ivh clickhouse-client-19.9.2.4-1.el7.x86_64.rpm
2、执行clickhouse-server服务启动命令
service clickhouse-server start
3、查看clickhouse-server运行程序状态
ps -ef |grep clickhouse-server
2、Docker 安装
服务端
docker pull yandex/clickhouse-server
客户端,也可以不装
docker pull yandex/clickhouse-client
创建配置存储目录,数据存储目录:
[root@master clickhouse]# mkdir bmconfig
[root@master clickhouse]# mkdir bmdata
[root@master clickhouse]# pwd
/root/clickhouse
运行
docker run -d --name clickhouse-server -p 8123:8123 -p 9000:9000 --ulimit nofile=262144:262144 -v=/root/clickhouse/bmdata:/var/lib/clickhouse docker.io/yandex/clickhouse-server:latest
-d参数:当前容器在后台启动
--name参数:当前容器的名字,不传的话docker会随机生成
--ulimit参数:这个参数还不清楚,有了解的朋友可以在评论区告诉我一下
--volume参数:将冒号两侧的路径建立映射,当容器服务读取冒号后面的虚拟机内路径时,会去读冒号前面的本机路径。加这个参数的作用是自定义配置
以上单机就安装好了
测试
配置详解
主要的配置文件:
(1) /etc/clickhouse-server/config.xml
先把文件拷贝出来
docker cp 068a971be410:/etc/clickhouse-server/config.xml config.xml
(2) /etc/clickhouse-server/user.xml
3、集群安装
在各个节点加入以下配置文件 /etc/metrika.xml
<yandex>
<clickhouse_remote_servers>
<cluster>
<shard>
<internal_replication>false</internal_replication>
<replica>
<host>192.168.10.12</host>
<port>9000</port>
<user>default</user>
<password></password>
</replica>
<replica>
<host>192.168.10.13</host>
<port>9000</port>
<user>default</user>
<password></password>
</replica>
</shard>
</cluster>
</clickhouse_remote_servers>
</yandex>
internal_replication:
为true代表了只写入shard内的一台,与ZooKeeper配合进行复制;
为false代表了写入shard内所有的replica,与分布式表配合进行复制。
每一个节点都要建分表
CREATE TABLE default.tb01 (
`id` UInt64,
`dq` String,
`MDATE` Date
)
ENGINE = MergeTree(MDATE, id, 8192)
每一个节点都要建总表
CREATE TABLE default.tb01_all (
`id` UInt64,
`dq` String,
`MDATE` Date
)
ENGINE = Distributed(cluster, default, tb01, rand())
在总表中插入数据
insert into tb01_all (`id`,`dq`,`MDATE`) values (12,'tianjin',toDate('2020-01-10'))
在任意节点查分表都会看到这一条数据
效果略.....
进一步验证是否达到随机读取效果,在不同的分表中加入不同的数据,再读取总表发现,确实实现了random