大数据-ClickHouse技术一(安装部署)
零、大数据-ClickHouse做为列式数据库,是2016年由俄罗斯人开源,独立于Hoodop生态
研究一番使用如下
docker安装
一、安装
可以安装到linux服务器,与通过docker安装,方便简单。按照官方文档即可
后续文章使用的是docker方式
二、docker安装文档-服务端
初始化docker文件见百度网盘:
链接:https://pan.baidu.com/s/12OiRnQhAQiRfb2hnIFXw2A
提取码:netx
文件介绍:docker文件-
ch_data初始化数据文件
ch_initdb数据库初始脚本,用于存放sql、sh脚本。在初始数据化前置同步,比如可以初始化一些数据,或者建基础表、基础库等等
ch_logs用于同步数据库的日志
通过使用docker执行启动命令:
docker run -d -p 18123:8123 -p 19000:9000 -v "$(pwd)/ch_data:/var/lib/clickhouse/" -v "$(pwd)/ch_logs:/var/log/clickhouse-server/" -v "$(pwd)/ch_initdb:/docker-entrypoint-initdb.d/" --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
三、连接数据库-客户端
可以通过docke自带client服务来启动客户端,也可以通过常用的数据库连接工具
比如Dbeaver-也可以无缝连接ClickHouse数据库
四、初始化数据
docker环境可以初始化一批数据 1000W+ 或者几十亿数据,只需要在docker文件中加入数据文件即可。参考官方文档:示例数据集 | ClickHouse Docs
docker文件配置在:
ch_initdb文件夹中的 data.sh 来初始化库、表、数据 将附带数据文件下载放到同级文件夹中,同步数据库实例的时候将数据加载进去即可
五、数据库查询
支持常用的Mysql语法
比如:SLEECT、 CREATE、ALTER、
尤其对于GROUP BY、SUM、分组计算尤为擅长
linux tar文件安装 分片副本安装
一、按照官网安装
二、安装zooker集群
三、在clickhouse配置zookeeper地址
安装启动好zookeeper后,我们需要在clickhouse中配置zookeeper
clickhouse两种配置zookeeper方式,一种是直接在config.xml中配置,另外一种是在外部文件中配置好了,在config.xml中进行引用
1、内部配置方式
vim /etc/clickhouse-server/config.xml
添加如下配置:
<zookeeper>
<node index="1"> #index是连接zk的顺序
<host>node01</host> #znode地址
<port>2181</port> #znode端口
</node>
<node index="2">
<host>10.20.30.40</host>
<port>2181</port>
</node>
<node index="3">
<host>10.20.30.45</host>
<port>2181</port>
</node>
</zookeeper>
2、zookeeper配置不支持热更改,必须重启clickhouse服务,重启之前使用sql查询
select * from system.zookeeper where path = '/';
显示表不存在,证明不在zookeeper注册
重启完服务,就可以查看到该zookeeper表,说明zookeeper配置好了
四、副本的实现
1、通过clickhouse的cluster分片设置副本
首先配置cluster
vim /etc/clickhouse-server/config.xml
在vim模式下输入:/remote_servers快速查找到配置cluster的标签

在<remote_servers>标签之中就是我们配置shard与replica的地方
先看下面配置,说明
<remote_servers incl="clickhouse_remote_servers" >
<my_shard>
<shard>
<internal_replication>true</internal_replication>
<weight>1</weight>
<replica>
<host>node01</host>
<port>9000</port>
<user>default</user>
<password>default</password>
</replica>
<replica>
<host>node02</host>
<port>9000</port>
<user>default</user>
<password>default</password>
</replica>
</shard>
<shard>
<internal_replication>true</internal_replication>
<weight>1</weight>
<replica>
<host>node03</host>
<port>9000</port>
<user>default</user>
<password>default</password>
</replica>
<replica>
<host>node04</host>
<port>9000</port>
<user>default</user>
<password>default</password>
</replica>
</shard>
</my_shard>
</remote_servers>
<my_shard>是cluster名称,任意填写,在后面通过这个名字引用如 on cluster my_shard
<shard>指分片,有几个分片就配置几个<shard>标签
<replica>指副本,有几个副本就有几个<replica>标签.
上方的配置是有两个分片,每个分片两个副本.这里理解也可以是有两个分片,每个分片一个副本.
打个比方说,一张test表基于以上配置,共有id 1,2,3,4 四条数据,那么node01中有1,2两条,node02中有1,2两条,node03中有3,4两条,node04中有3,4两条,这样子举例比较好理解
注意:<internal_replication>true</internal_replication>属性,在有zookeeper情况下写true。如果没有zookeeper一定设置为false。false是通过click内部机制实现副本的数据同步,true是通过zookeeper实现数据同步。
<weight>1</weight> 设置各个分片的数据比重
2、配置好了之后校验
cluster可以热加载,所以不需要重启服务,通过系统表可以查看cluster
select * from system.clusters where cluster='my_shard';

五、其他配置项
1、打开配置cluster
vim /etc/clickhouse-server/config.xml
2、指定IP
指定自己所在节点IP,如不指定,默认会读电脑名称,可能导致在数据副本同步时候连接不上,建议指定为自身电脑的IP
<interserver_http_host>10.20.30.40</interserver_http_host>
3、指定集群分片配置 && 默认副本表配置项,后续新建会省事
<macros>
<shard>s01</shard>
<replica>r02</replica>
</macros>
<default_replica_path>/clickhouse/tables/{shard}/{database}/{table}</default_replica_path>
<default_replica_name>{replica}</default_replica_name>
如上,即搭建好了分布式的数据库以及zookeeper配置。后续可以建分布式数据库表了