centos7.6搭建clickhouse集群以及数据目录挂载、集群的使用

**

clickhouse优点与弊端:

**
优点:1,为了高效的使用CPU,数据不仅仅按列存储,同时还按向量进行处理;

2,数据压缩空间大,减少IO;处理单查询高吞吐量每台服务器每秒最多数十亿行;

3,索引非B树结构,不需要满足最左原则;只要过滤条件在索引列中包含即可;即使在使用的数据不在索引中,由于各种并行处理机制ClickHouse全表扫描的速度也很快;

4,写入速度非常快,50-200M/s,对于大量的数据更新非常适用。

弊端

1,不支持事务,不支持真正的删除/更新;

2,不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;

3,SQL满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似SQL的join,但性能不好;

4,尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;

5,Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用CPU核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数。

全量数据导入:数据导入临时表 -> 导入完成后,将原表改名为tmp1 -> 将临时表改名为正式表 -> 删除原表

增量数据导入: 增量数据导入临时表 -> 将原数据除增量外的也导入临时表 -> 导入完成后,将原表改名为tmp1-> 将临时表改成正式表-> 删除原数据表

下面来搭建服务器集群吧

一、服务器IP

1.1.1.1    
1.1.1.2
1.1.1.3

1、需要这个四个rpm包进行下载(离线下载地址 clickhouse离线下载地址
在这里插入图片描述

2、 使用root 用户 , 将放入的四个rpm放入指定目录/data/ck下面

3.、在三台服务器的/data/ck目录下分别执行 :

 rpm -ivh *.rpm

4、三台服务器上面分别执行

vim /etc/clickhouse-server/config.xml

将 60行左右的

<!-- <listen_host>::</listen_host> -->
打开改为
<listen_host>::</listen_host>
<max_concurrent_queries>100</max_concurrent_queries>修改为
<max_concurrent_queries>1000</max_concurrent_queries>
     <!-- 新增外部配置文件metrika.xml  增加下面配置-->
<include_from>/etc/clickhouse-server/metrika.xml</include_from>

在这里插入图片描述

5、在1.1.1.1服务器上 /etc/clickhouse-server/目录下新建metrika.xml文件

vim /etc/clickhouse-server/metrika.xml
<yandex>
<!-- 集群配置 -->
<clickhouse_remote_servers>
    <!-- 3分片1备份 -->
    <cluster_3shards_1replicas>
        <!-- 数据分片1  -->
        <shard>
            <replica>
                <host>1.1.1.1</host>     #  服务器1.1.1.1地址
                <port>9000</port>
            </replica>
        </shard>
        <!-- 数据分片2  -->
        <shard>
            <replica>
                <host>1.1.1.2</host>     # 服务器1.1.1.2地址
                <port> 9000</port>
            </replica>
        </shard>
        <!-- 数据分片3  -->
        <shard>
            <replica>
                <host>1.1.1.3</host>      # 服务器1.1.1.3地址
                <port>9000</port>
            </replica>
        </shard>
    </cluster_3shards_1replicas>
</clickhouse_remote_servers>
<zookeeper-servers>
        <node index="1">
            <host>1.1.1.1</host>   # zookeeper地址,这个zk是我搭建的单机版的zk,很简单,解压就可以用了,不用部署集群
            <port>2181</port>
        </node>
    </zookeeper-servers>
   <macros>
        <replica>1.1.1.1</replica>   #(这里要写本机的地址,本机地址为1.1.1.1.另外两台记得改为对应的地址)
    </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>

如下图
在这里插入图片描述
6、将1.1.1.1服务器上面的metrika.xml scp到另外两台服务器的相同目录上面,
将对应的id修改正确即可。
附:另一台服务器的截图metrika.xml
在这里插入图片描述
7、启动
三台服务器分别执行:

sudo service clickhouse-server start

使用dbeaver能够成功连接即可。

8、clickhouse数据目录挂载(数据目录挂载

https://blog.csdn.net/sojer/article/details/104643238

9、搭建好ck集群,使用新集群插入数据

1 首先在三个节点上创建三个相同的库名。
create database test_1130
2、在三个节点上创建三个相同的表名。
create table test_1130.haha(a UInt16, b String , c Nullable(String)) ENGINE = MergeTree() ORDER BY (a,b);
3、在任一个节点上面执行(此操作是创建一个视图表,此视图表和三个节点上面的数据量相加的和相等。)
create table test_1130.haha1(a UInt16, b String , c Nullable(String)) engine= Distributed(cluster_3shards_1replicas, test_1130, haha , a);
解释   
cluster_3shards_1replicas:集群名称, 
test_1130:三个节点上面的库名,
haha :三个节点上面的表名,
a:ck插入数据使用的hashId,这个必须有。
4、插入数据,直接插入到步骤三里面的视图表haha1就可以
insert into test_1130.dis_table2(a, b,c) values(3, '3s','34w');

说明:ck插入数据会根据每条数据里面的hashId(上面的为字段a)来判断自己的规则,看自己是插入到哪个分表里。也就是说,总的数据在haha1的视图表里,其他的3个表输入分表,每个里面储存一部分数据。

10、增加用户权限:
在三台服务器上面分别操作

cd  /etc/clickhouse-server/
vim user.xml

现在最上面增

  <normal> --只读,不能DDL 
            <readonly>1</readonly>
            <allow_ddl>0</allow_ddl>
        </normal>

        <normal_1> --读且能set,不能DDL
            <readonly>2</readonly>
            <allow_ddl>0</allow_ddl>
        </normal_1>

        <normal_2> --只读,即使DDL允许
            <readonly>1</readonly>
            <allow_ddl>1</allow_ddl>
        </normal_2>

        <normal_3> --读写,能DDL
            <readonly>0</readonly>
            <allow_ddl>1</allow_ddl>
        </normal_3>

在这里插入图片描述

增加

<!-- 具有读写功能用户-->
        <admin>
            <password>123456</password>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <profile>default</profile>
            <quota>default</quota>
        </admin>
        
<!--只看某库,只读用户 -->
        <test>
         <password>123456</password> --明文密码
           <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <profile>normal_1</profile>
            <quota>default</quota>
            <allow_databases>
                <database>test_1217</database>
                <database>test_0108</database>
            </allow_databases>
        </test>
 <!--只读用户,查看所有库 -->
        <lisi>
            <password>123456</password>
            <networks incl="networks" replace="replace">
                <ip>::/0</ip>
            </networks>
            <profile>normal_1</profile> --用户引用相关profile
            <quota>default</quota>
        </lisi>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值