前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ClickHouse 分布式集群的安装、使用

ClickHouse 分布式集群的安装、使用

原创
作者头像
南非骆驼说大数据
修改2020-12-13 15:32:07
3K0
修改2020-12-13 15:32:07
举报

一、什么是ClickHouse

ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。适合巨量数据环境下用户数据查询、数据分析等工作。ClickHouse 简称为 CH,是近2年日益火起来的一款类数据库分析工具。

CH官网https://clickhouse.yandex/


CH下载地址:

Cent6 访问链接: http://repo.red-soft.biz/repos/clickhouse/stable/el6/

Cent7 访问链接: http://repo.red-soft.biz/repos/clickhouse/stable/el7/

二、ClickHouse 分布式集群部署

  1. 安装前的准备: 3台CVM(CentOS 7.6 ),ZK 3.6.2
  2. 下载对应的安装包,如下:
CH安装包
CH安装包

3. 安装部署,为了节省资源,每个节点既是ZK节点,又是CH节点。3个CVM对应为CH1、CH2、CH3

说明:这里仅以一台CVM为例进行操作,其它2台则复制同类操作即可。

4. 操作系统相关安全设置

  • CentOS 取消打开文件数限制,在/etc/security/limits.conf、/etc/security/limits.d/90-nproc.conf这2个文件的末尾加入内容:
代码语言:javascript
复制
* soft nofile 655360
* hard nofile 655360
* soft nproc 131072 
* hard nproc 131072

重启服务器之后生效,用ulimit -n 或者ulimit -a查看设置结果;

  • CentOS取消SELINUX,并重启OS。
代码语言:javascript
复制
vim /etc/selinux/config
SELINUX=disabled
  • 关闭防火墙
代码语言:javascript
复制
iptables -F
iptables -X
iptables -Z
  • 安装依赖
代码语言:javascript
复制
[root@CH1 ~]# yum install -y libtool
[root@CH1 ~]# yum install -y *unixODBC*

5. 上传并安装CH安装包,执行如下命令:

代码语言:javascript
复制
rpm -ivh *.rpm

如下,就表示安装完毕:

CH安装成功
CH安装成功

6. 修改配置文件config.xml,添加如下配置

代码语言:javascript
复制
vim /etc/clickhouse-server/config.xml             //开启节点间远程通信的功能,每个节点都要操作
<listen_host>::</listen_host>
<!-- <listen_host>::1</listen_host> -->
<!-- <listen_host>127.0.0.1</listen_host> -->

7. 在三台机器的etc目录下新建metrika.xml文件,这个名称不能变!配置文件内容如下:

代码语言:javascript
复制
添加如下内容:
<yandex>
<clickhouse_remote_servers>
    <perftest_3shards_1replicas>  //cluser_name  可以自定义
        <shard>
             <internal_replication>true</internal_replication>
            <replica>
                <host>CH1</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <replica>
                <internal_replication>true</internal_replication>
                <host>CH2</host>
                <port>9000</port>
            </replica>
        </shard>
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>CH3</host>
                <port>9000</port>
            </replica>
        </shard>
    </perftest_3shards_1replicas>
</clickhouse_remote_servers>


<zookeeper-servers>
  <node index="1">
    <host>hadoop102</host>
    <port>2181</port>
  </node>

  <node index="2">
    <host>hadoop103</host>
    <port>2181</port>
  </node>
  <node index="3">
    <host>hadoop104</host>
    <port>2181</port>
  </node>
</zookeeper-servers>

<macros>
    <replica>CH1</replica>       //这里需要自定义,跟本机Hostname相同
</macros> 


<networks>
   <ip>::/0</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>

8,机器启动 ClickServer,如下:

代码语言:javascript
复制
clickhouse-server --config-file=/etc/clickhouse-server/config.xml

9,使用client连接server,如下,报错:

client连接server报错
client连接server报错

原因:节点未安装ZK组件

10,安装zk集群,这里附上截图:

zk配置文件
zk配置文件

11,再次启动,连接成功:

使用client连接server成功
使用client连接server成功

三、ClickHouse 实践

上面我们经过配置,一个3节点的分布式CH集群安装成功,既然是分布式集群,那我们就创建分布式表来体验一把:

我们使用 Distributed 引擎来试验:

1)在CH1,CH2,CH3上分别创建一个单表t;

代码语言:javascript
复制
create table t(id UInt16, name String) ENGINE=TinyLog;

2)在三台机器的t表中插入一些数据

代码语言:javascript
复制
insert into t(id, name) values (1, 'zhangsan');
insert into t(id, name) values (2, 'lisi');

3)在CH1上创建分布式表

代码语言:javascript
复制
create table dis_table(id UInt16, name String) ENGINE=Distributed(perftest_3shards_1replicas, default, t, id);

4) 然后我们 select * from dis_table,看看有什么效果??

查看分布式表内容
查看分布式表内容

结果:通过创建分布式表,将3个节点上的单表进行了统一的集合规整展示。

5) 往该分布式表里插入一些数据,默认会在哪个表上呢?

代码语言:javascript
复制
insert into dis_table values(3,"lihua")

6) 接着,查一下该分布式表: select *from dis_table

插入数据查询
插入数据查询

默认插入的新数据会按照一定的规则插入到不同节点的单表上。如下:

CH1上承担该新数据
CH1上承担该新数据

那么,至此,一个CH分布式集群的安装,部署,测试基本成功。

四、总结

在腾讯云,我们可以快速构建一个基于云端的安全、稳定的CH集群,欢迎大家来腾讯云购买使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、什么是ClickHouse
  • 二、ClickHouse 分布式集群部署
  • 三、ClickHouse 实践
  • 四、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档