集群节点信息
192.168.30.118
192.168.30.117
192.168.30.116
192.168.30.115
注意:1个节点,1副本
1、安装依赖组建JDK
(1)下载版本:jdk-8u333-linux-x64.tar.gz
(2)下载连接:https://www.oracle.com/java/technologies/downloads/#java8-linux
(3)linux中创建目录:/usr/local,将下载的jdk上传到此目录下,并将jdk-8u333-linux-x64重命名为jdk1.8
mv jdk-8u333-linux-x64 jdk1.8
(4)解压文件:(把下载的文件上传到服务器再次进行解压)
tar -zxvf jdk-8u333-linux-x64.tar.gz
(5)配置环境变量
vim /etc/profile
i 是insert 简写,进入编辑输入模式
/ 是可以搜索关键字
:wq 保存退出
:q 不保存退出
:q! 强制退出
添加如下内容(注意:java_home按照自己的jdk存放目录来放)
export JAVA_HOME=/root/jdk/jdk1.8.0_333 export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/ export PATH=$PATH:$JAVA_HOME/bin
按 Esc 退出编辑模式,输入 :wq 保存并退出
(6)生效环境变量
source /etc/profile
(7)检查是否安装成功
javac -version
java -version
2、搭建zookeeper集群
在这三个节点搭建一个zookeeper集群(如果搭建可以直接忽略这一步),先在一个节点上根据以下配置
参考安装方法:https://www.cnblogs.com/jiashengmei/p/11991243.html
最终的zookeeper在zoo.cfg的内容如下,注意:只需要进行3个节点的zookeeper集群配置即可
dataDir=/data dataLogDir=/datalog tickTime=2000 initLimit=5 syncLimit=2 autopurge.snapRetainCount=3 autopurge.purgeInterval=0 maxClientCnxns=60 standaloneEnabled=true admin.enableServer=true clientPort=12181 server.118=192.168.30.118:12888:13888 #12888:13888不用改,改的示例:server.数字=IP:12888:13888,注意此处的数字,最后写在对应IP地址的myid的文件中 server.117=192.168.30.117:12888:13888 server.116=192.168.30.116:12888:13888
在192.168.30.118服务器上,myid的文件中,添加118
在192.168.30.117服务器上,myid的文件中,添加117
在192.168.30.116服务器上,myid的文件中,添加116
3、安装clickhouse
安装方式:clickhouse的官网安装方法:https://clickhouse.com/#quick-start
注意:如下的内容,每个
开始安装
sudo apt-get install apt-transport-https ca-certificates dirmngr sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754 echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \ /etc/apt/sources.list.d/clickhouse.list sudo apt-get update sudo apt-get install -y clickhouse-server clickhouse-client sudo service clickhouse-server start #此句是启动clickhouse的服务 clickhouse-client # or "clickhouse-client --password" if you set up a password.
验证clickhouse是否安装成功,执行命令
sudo service clickhouse-server status
安装完后的目录,即存放安装后文件的路径:/etc/clickhouse-server
执行完如上的步骤,则执行如下的命令,查看clickhouse是否部署成功
//客户端连接,直接在命令行运行即可
clickhouse-client
备注:clickhouse常用的其他命名
sudo service clickhouse-server start sudo service clickhouse-server restart #重启clickhouse sudo service clickhouse-server status #查看clickhouse的状态 sudo service clickhouse-server stop #停止clickhouse
集群版的部署
注意事项:每次修改了配置文件的内容,记得重启clickhouse的服务:systemctl restart clickhouse-server
1、进入cd /etc/clickhouse-server目录下,创建touch metrika.xml,再次修改config.xml文件,修改后的内容如下,
vim config.xml
<timezone>Asia/Shanghai</timezone>
<listen_host>0.0.0.0</listen_host> #在文档中有,此行取消注释即可
<include_from>/etc/clickhouse-server/metrika.xml</include_from> #此行在conf文档中没有,需要手动的添加上
<macros incl="macros" optional="true"/> #此行在conf文档中没有,需要手动的添加上
<zookeeper> #根据zookeeper的配置IP,写在这里即可 <node index="118"> #"118"指的是:在zookeeper中的server.118后的数字,server.118=192.168.30.118:12888:13888 <host>192.168.30.118</host> <port>12181</port> #12181端口是自己给定的,也可用默认的2181 </node> <node index="117"> <host>192.168.30.117</host> <port>12181</port> </node> <node index="116"> <host>192.168.30.116</host> <port>12181</port> </node> </zookeeper>
2、目录cd /etc/clickhouse-server/文件下,手动创建文件:metrika.xml
vim metrika.xml
直接复制粘贴如下的内容到metrika.xml文档中即可,注意修改自己的IP地址,端口9000可以不用改,用默认即可
<yandex> <clickhouse_remote_servers> <ck_cluster>
<!--4分片1副本--> <shard> <internal_replication>true</internal_replication> <replica> <host>192.168.30.118</host> <port>9000</port> #注意:若在users.xml中设置了用户和密码,此处要添加<user>test</user><password>123</password> </replica> </shard> <shard> <internal_replication>true</internal_replication> <replica> <host>192.168.30.117</host> <port>9000</port> </replica> </shard> <shard> <internal_replication>true</internal_replication> <replica> <host>192.168.30.116</host> <port>9000</port> </replica> </shard> <shard> <internal_replication>true</internal_replication> <replica> <host>192.168.30.115</host> <port>9000</port> </replica> </shard> </ck_cluster> </clickhouse_remote_servers> <macros>
<shard>01</shard> #注意:这里的内容,每个服务器的配置文件必须相同,否则复制表将无法操作 <replica>192.168.30.118</replica> #注意:每台服务器的配置文件。写自己的IP地址 </macros> <networks> <ip>::</ip> </networks> <clickhouse_compression> <case> <min_part_size>10000000000</min_part_size> <min_part_size_ratio>0.01</min_part_size_ratio> <method>lz4</method> </case> </clickhouse_compression> </yandex>
3、若需查看clickhouse的log日志,在config.xml文件中就包含了,比如:
/var/log/clickhouse-server/clickhouse-server.log
/var/log/clickhouse-server/clickhouse-server.err.log
4、进行完如上的配置,重新启动clickhouse,再次查看clickhouse是否启动成功
sudo service clickhouse-server restart #重启clickhouse sudo service clickhouse-server status #查看clickhouse的状态
˙注意:状态也要是 active (running) 才可以
5、连接clickhouse数据库,查看集群是否部署成功
//客户端连接 clickhouse-client //验证数据库 show databases; //查看集群 select * from system.clusters;
6、验证zookeeper是否与当前数据库clickhouse进行了正确的配置,可以正确连接到
直接在clickhouse的数据库中,输入如下的命令进行验证:
SELECT * FROM system.zookeeper WHERE path = '/clickhouse';
7、clickhouse数据中创建表,验证集群能力
首先进入到clickhouse数据库:
clickhouse-client
(1)创建一个测试库
create database abc;
(2)分别在4个(118、117、116、115)节点上,创建本地表cluster3s1r_local。(直接复制,不用做任何的更改)
CREATE TABLE abc.cluster3s1r_local
(
`id` Int32,
`website` String,
`wechat` String,
`FlightDate` Date,
Year UInt16
)
ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192);
(3)在第一个(118)节点上,创建分布式表
#ck_cluster:为metrika.xml配置文件中建立的标签
CREATE TABLE abc.cluster3s1r_all AS cluster3s1r_local ENGINE = Distributed(ck_cluster, abc, cluster3s1r_local, rand());
(4)往分布式表cluster3s1r_all中插入数据,cluster3s1r_all 会随机插入到四个节点的本地表(cluster3s1r_local)中#
INSERT INTO default.cluster3s1r_all (id,website,wechat,FlightDate,Year)values(1,'https://niocoder.com/','java干货','2020-11-28',2020); INSERT INTO default.cluster3s1r_all (id,website,wechat,FlightDate,Year)values(2,'http://www.merryyou.cn/','javaganhuo','2020-11-28',2020); INSERT INTO default.cluster3s1r_all (id,website,wechat,FlightDate,Year)values(3,'http://www.xxxxx.cn/','xxxxx','2020-11-28',2020);
(5)可以查看四个节点本地表的数据和分布式表的数据
# 查询总量查分布式表 select * from cluster3s1r_all; #各机器节点的本地表 select * from cluster3s1r_local;
具体的内容可参考这篇文章:
文章一:https://www.cnblogs.com/qa-freeroad/p/14394135.html
文章二:https://www.cnblogs.com/ywjfx/p/14329605.html