一.环境准备:

主机 系统 应用 ip
ckh-01 centos 8 jdk,zookeeper,clickhouse 192.168.205.190
ckh-02 centos 8 jdk,zookeeper,clickhouse 192.168.205.191
ckh-03 centos 8 jdk,zookeeper,clickhouse 192.168.205.192
ckh-04 centos 8 jdk,clickhouse 192.168.205.193
ckh-05 centos 8 jdk,clickhouse 192.168.205.194
ckh-06 centos 8 jdk,clickhouse 192.168.205.195

java环境和zookeeper集群安装省略

各节点安装clickhouse

yum -y  install yum-utils
rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
dnf -y install clickhouse-server clickhouse-client

二.集群配置:(这里用原有配置文件/etc/clickhouse-server/config.xml)使用/etc/metrika.xml配置文件,后面测试配置无法生效

在配置文件/etc/clickhouse-server/config.xml找到

<!-- <listen_host>::</listen_host> -->取消掉注释

<listen_host>::</listen_host>

使用3节点2副本6台服务器配置(以一台为例子,配置完成拷贝至其他节点。然后将副本改成唯一)

在<remote_servers></remote_servers>标签中加入如下配置

<!--<perftest_3shards_1replicas>可以改成自定义名-->
<perftest_3shards_1replicas>
<shard>
  <internal_replication>true</internal_replication>
      <replica>
               <host>ckh-01</host>
               <port>9000</port>
               <user>admin</user>
               <password>111111</password>
      </replica>
      <replica>
               <host>ckh-02</host>
               <port>9000</port>
               <user>admin</user>
               <password>111111</password>
      </replica>
   </shard>
   <shard>
<internal_replication>true</internal_replication>
      <replica>                            
                <host>ckh-03</host>
                <port>9000</port>
                <user>admin</user>
                <password>111111</password>
      </replica>
      <replica>
               <host>ckh-04/host>
               <port>9000</port>
               <user>admin</user>
               <password>111111</password>
      </replica>
    </shard>
    <shard>
       <internal_replication>true</internal_replication>
      <replica>
                <host>ckh-05</host>
                <port>9000</port>
                <user>admin</user>
                <password>111111</password>
    </replica>
      <replica>
               <host>ckh-06</host>
               <port>9000</port>
               <user>admin</user>
               <password>111111</password>
      </replica>
    </shard>
</perftest_3shards_1replicas>

将如下配置加入到<yandex></yandex>标签中

<!--zookeeper相关配置-->

       <zookeeper>
               <node>
                    <host>ckh-01</host>
                    <port>2181</port>
               </node>
               <node>
                     <host>ckh-02</host>
                     <port>2181</port>
               </node>
               <node >
                     <host>ckh-03</host>
                     <port>2181</port>
               </node>
       </zookeeper>
       <macros>
  <shard>01</shard>
            <replica>ckh-01-01</replica>
       </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>

在<macros></macros>标签中接入对应分片和副本信息,确保每台副本唯一

主机名 分片 副本(主机名+副本编号)
ckh-01 01 ckh-01-01
ckh-02 01 ckh-02-02
ckh-03 02 ckh-03-01
ckh-04 02 ckh-04-02
ckh-05 03 ckh-05-01
ckh-06 03 ckh-06-02

修改以下文件,以便在一个节点上执行语句其他节点也同步执行

vim /etc/clickhouse-server/config.xml

三:用户密码配置

vim /etc/clickhouse-server/users.xml

如果配置密文加密请参照注释说明

clickhouse 默认用户为default 无密码可以登录,我们可以改成其他用户 或禁用default

在<users></users>标签里添加其他用户配置

        <admin>
           <password>111111</password>
           <networks incl="networks" replace="replace">
               <ip>::/0</ip>
           </networks>
           <!-- Settings profile for user. -->
           <profile>default</profile>
           <!-- Quota for user. -->
           <quota>default</quota>
       </admin>

注 <networks incl="networks" replace="replace"> 此处需要加上 incl="networks" replace="replace"

高版本已取消 ,在使用flink运行任务时会出现连接clickhouse超时现象

四.进入clickhouse-client:(注意如果需要外部访问需要将vim /etc/clickhouse-server/config.xml配置文件listen_host改成如下设置)

各节点启动服务:

systemctl start clickhouse-server

然后连接通过以下命令连接(-m为多行命令操作)

clickhouse-client -h  192.168.205.190 --port 9000 -m -u admin --password 111111

查看数据库信息:

show databases;

五.查看集群信息(任意一节点均可查看):

select * from system.clusters;

-------------------------------------------------------------------------------------------------------------------------------------

创建本地表及分布式表:

在各个节点分表创建数据库test(在一个节点执行即可)

create database test ON CLUSTER perftest_3shards_1replicas;

下面给出ReplicatedMergeTree引擎的完整建表DDL语句。

创建本地表及表引擎

Replicated Table & ReplicatedMergeTree Engines

CREATE TABLE IF NOT EXISTS test.events_local ON CLUSTER perftest_3shards_1replicas (  ts_date Date,  ts_date_time DateTime,  user_id Int64,  event_type String,  site_id Int64,  groupon_id Int64,  category_id Int64,  merchandise_id Int64,  search_text String ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/test/events_local','{replica}') PARTITION BY ts_date ORDER BY (ts_date,toStartOfHour(ts_date_time),site_id,event_type) SETTINGS index_granularity = 8192;

其中,ON CLUSTER语法表示分布式DDL,即执行一次就可在集群所有实例上创建同样的本地表。集群标识符{cluster}、分片标识符{shard}和副本标识符{replica}来自之前提到过的复制表宏配置,即config.xml中<macros>一节的内容,配合ON CLUSTER语法一同使用,可以避免建表时在每个实例上反复修改这些值。

分布式表及分布式表引擎

Distributed Table & Distributed Engine

ClickHouse分布式表的本质并不是一张表,而是一些本地物理表(分片)的分布式视图,本身并不存储数据。

支持分布式表的引擎是Distributed,建表DDL语句示例如下,_all只是分布式表名比较通用的后缀而已。

CREATE TABLE IF NOT EXISTS test.events_all ON CLUSTER perftest_3shards_1replicas AS test.events_local ENGINE = Distributed(perftest_3shards_1replicas,test,events_local,rand());

任意节点插入数据:

insert into test.events_all values('2021-03-03','2021-03-03 16:10:00',1,'ceshi1',1,1,1,1,'test1'),('2021-03-03','2021-03-03 16:20:01',2,'ceshi2',2,2,2,2,'test2'),('2021-03-03','2021-03-03 16:30:02',3,'ceshi2',3,3,3,3,'test3'),('2021-03-03','2021-03-03 16:40:03',4,'ceshi4',4,4,4,4,'test4'),('2021-03-03','2021-03-03 16:50:04',5,'ceshi5',5,5,5,5,'test5'),('2021-03-03','2021-03-03 17:00:05',6,'ceshi6',6,6,6,6,'test6');

查询各分片数据:

select * from test.events_all;

查看副本节点也复制了一份同样的数据

-------------------------------------------------------------------------------------

clickhouse基本操作:

查询clickhouse集群信息

select * from system.clusters;

创建数据库命令(一个节点上执行,多个节点同时创建)

create database test ON CLUSTER perftest_3shards_1replicas

删除数据库命令(一个节点上执行,多个节点同时删除)

drop database test ON CLUSTER perftest_3shards_1replicas

删除本地表数据(分布式表无法删除表数据)

alter table test.events_local ON CLUSTER perftest_3shards_1replicas delete where 1=1;

1=1表示删除所有数据,可以接字段名删除满足某个条件的数据

查看zookeeper下目录

select * from system.zookeeper WHERE path='/'

												

clickhouse分布式集群的更多相关文章

  1. Hadoop伪分布式集群环境搭建

    本教程讲述在单机环境下搭建Hadoop伪分布式集群环境,帮助初学者方便学习Hadoop相关知识. 首先安装Hadoop之前需要准备安装环境. 安装Centos6.5(64位).(操作系统再次不做过多描 ...

  2. ElasticSearch 5学习(7)——分布式集群学习分享2

    前面主要学习了ElasticSearch分布式集群的存储过程中集群.节点和分片的知识(ElasticSearch 5学习(6)--分布式集群学习分享1),下面主要分享应对故障的一些实践. 应对故障 前 ...

  3. ElasticSearch 5学习(6)——分布式集群学习分享1

    在使用中我们把文档存入ElasticSearch,但是如果能够了解ElasticSearch内部是如何存储的,将会对我们学习ElasticSearch有很清晰的认识.本文中的所使用的ElasticSe ...

  4. Redis分布式集群几点说道

    原文地址:http://www.cnblogs.com/verrion/p/redis_structure_type_selection.html  Redis分布式集群几点说道 Redis数据量日益 ...

  5. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  6. 安装ClouderaManager以及使用ClouderaManager安装分布式集群的若干细节

    目录 前言 整体介绍 分步安装介绍 总结 一.前言        周末干了近四十个小时中间只休息了五个小时终于成功安装了ClouderaManager以及分布式集群,其中各种辛酸无以言表,唯有泪两行. ...

  7. Zookeeper分布式集群搭建

    实验条件:3台安装linux的机子,配置好Java环境. 步骤1:下载并分别解包到每台机子的/home/iHge2k目录下,附上下载地址:http://mirrors.cnnic.cn/apache/ ...

  8. 分布式集群搭建(hadoop2.6.0+CentOS6.5)

    摘要:之前安装过hadoop1.2.1集群,发现比较老了,后来安装cloudera(hadoop2.6.0),发现集成度比较高,想知道原生的hadoop什么样子,于是着手搭建一个伪分布式集群(三台), ...

  9. MySQL分布式集群之MyCAT(转)

    原文地址:http://blog.itpub.net/29510932/viewspace-1664499/ 隔了好久,才想起来更新博客,最近倒腾的数据库从Oracle换成了MySQL,研究了一段时间 ...

随机推荐

  1. Redis(二) 数据类型操作指令以及对应的RedisTemplate方法

    1.Redis key值操作以及RedisTemplate对应的API 本文默认使用RedisTemplate,关于RedisTemplate和StringRedisTemplate的区别如下 Red ...

  2. Java真的是白天鹅

    前言 我最近越来越真切的感受到,Java真的是白天鹅. 这真的是一种羡慕嫉妒恨的感受. 今天和一个Java技术Leader聊天,我告诉他敏捷开发是以人为本,他居然跟我说敏捷开发在行业内有规范,规范是死 ...

  3. SpringBoot——配置类实现WebMvcConfigurer接口来配置拦截器、view-controller、视图解析器等

    目的:为了保留SpringBoot对SpringMVC自动配置,另外我们还想要做一些自己拓展的功能 如何做扩展? 以配置view-controller实现跳转为例: 原先在SpringMvc中我们写v ...

  4. 【Android编程】android平台的MITM瑞士军刀_cSploit源码解析及中间人攻击复现

    /文章作者:Kali_MG1937 作者博客ID:ALDYS4 QQ:3496925334 未经允许,禁止转载/ 何为MITM欺骗,顾名思义,中间人攻击的含义即为在局域网中充当数据包交换中间人的角色 ...

  5. 彻底删除Docker

    yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-la ...

  6. 【NX二次开发】Block UI 指定平面

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

  7. 【NX二次开发】缝合片体例子UF_MODL_create_sew

    缝合片体,没有成功缝合的片体涂绿色. 效果:  源码: extern DllExport void ufusr(char *param, int *returnCode, int rlen) { UF ...

  8. Java的一些细节语法(不定时更新。。。)

    可信考试Java相关题目 目录 可信考试Java相关题目 ConcurrentHashMap不允许key为null,但是HashMap是可以的.TreeMap key不支持null. 以下代码里面,请 ...

  9. Spring Cloud专题之三:Hystrix

    在微服务架构中,我们将系统拆分成很多个服务单元,各单位的应用间通过服务注册与订阅的方式相互依赖.由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服务自身问 ...

  10. 高性能的Redis之对象底层实现原理详解

    对象 在前面的数个章节里, 我们陆续介绍了 Redis 用到的所有主要数据结构, 比如简单动态字符串(SDS).双端链表.字典.压缩列表.整数集合, 等等. Redis 并没有直接使用这些数据结构来实 ...