IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> clickhouse-20.8.20.1 部署及使用 -> 正文阅读

[大数据]clickhouse-20.8.20.1 部署及使用

基础架构

在这里插入图片描述
多主架构:大多数分布式系统如 HDFS、Spark、HBase 和 Elasticsearch,采用的都是 Master-Slave 主从架构,由一个管控节点作为 Leader,其它节点为 Slave。而 CH 则采用 Multi-Master 多主架构,集群中的每个节点角色相同,客户端访问任意一个节点都能得到同样的效果。这种架构因角色相同使系统架构变得更加简单,不用再区分主控节点、数据节点和计算节点,集群中的所有节点功能相同,所以就不存在单点故障问题了。
ClickHouse 既可以单机运行,又可以分布式运行。
在单机情况下,可以在一个服务器上运行一个 ClickHouse 进程,在分布式情况下,ClickHouse 分为多个 Shard,Shard 和 Shard 之间的数据是完全隔离的,在数据分配上可以通过 random 的 Shard,或者是 hash 方式的 Shard 去分配数据所去的 Shard。每个 Shard 内部可以有多个副本(主机 + 从机 = 副本),每个 Shard 中的 ClickHouse 互为副本,副本与副本之间的数据是完全一致的,作用就是保证集群的高可用,每一个 Shard 中的副本数是可以随意拓展的,也就是 Shard 与 Shard 之间的副本数可以不一致,假如业务上有些查询热点情况在 Shard0 上,那么 Shard0 的压力会非常大,那么可以为 Shard0 指定更多的副本数,从而缓解 Shard0 上查询热点的压力,但是在拓展时,新加入的副本无法自动进行数据的同步,这是一个不足。

部署

基础安装

下载安装包
https://packagecloud.io/altinity/clickhouse 路径下下载对应系统版本的安装包

wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-test-20.8.20.1-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-common-20.8.20.1-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-server-20.8.20.1-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-common-static-20.8.20.1-1.el7.x86_64.rpm/download.rpm
wget --content-disposition https://packagecloud.io/Altinity/clickhouse/packages/el/7/clickhouse-client-20.8.20.1-1.el7.x86_64.rpm/download.rpm
rpm -ivh clickhouse-common-static-20.8.20.1-1.el7.x86_64.rpm 
rpm -ivh clickhouse-server-common-20.8.20.1-1.el7.x86_64.rpm 
rpm -ivh clickhouse-server-20.8.20.1-1.el7.x86_64.rpm 
rpm -ivh clickhouse-client-20.8.20.1-1.el7.x86_64.rpm

rpm安装完毕无误后,clickhouse-server和clickhouse-client配置目录如下

[root@ck01 clickhouse]# ll /etc/clickhouse-server/
-rw-r--r-- 1 root root 34331 824 23:56 config.xml
-rw-r--r-- 1 root root  5587 824 23:56 users.xml
[root@ck01 clickhouse]# ll /etc/clickhouse-server/
-rw-r--r-- 1 root root 34331 824 23:56 config.xml
-rw-r--r-- 1 root root  5587 824 23:56 users.xml
vim /etc/clickhouse-server/config.xml

<!-- Path to data directory, with trailing slash. -->
<path>/home/clickhouse/data/clickhouse</path>

日志路径,数据路径可以适当进行修改,新路径需要改用户、用户组
注意这个配置的目录磁盘空间必须足够大
其他配置可以根据自己的实际情况而定,注意配置端口是否被占用


如果路径修改了,必须预先创建对应的文件夹,不然启动会报错:UNKNOWN

chown -R clickhouse:clickhouse clickhouse/

单机版

单机版不需要zookeeper

启动clickhouse-server

$: /etc/init.d/clickhouse-server start

停止clickhouse-server:

$: /etc/init.d/clickhouse-server stop

进入clickhouse-client:

$: clickhouse-client --host 127.0.0.1 --port 9000

通过查询验证客户端成功 :select 1
在这里插入图片描述

集群部署

zookeeper额外部署,这边就不演示zookeeper部署了

配置修改

vim /etc/metrika.xml,添加配置信息如下:

<yandex>
    <clickhouse_remote_servers>
        <my_cluster>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>172.17.2.143</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <replica>
                    <internal_replication>true</internal_replication>
                    <host>172.17.2.144</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>172.17.2.145</host>
                    <port>9000</port>
                </replica>
            </shard>
            <shard>
                <internal_replication>true</internal_replication>
                <replica>
                    <host>172.17.2.146</host>
                    <port>9000</port>
                </replica>
            </shard>
        </my_cluster>
    </clickhouse_remote_servers>

    <!--zookeeper相关配置-->
    <zookeeper-servers>
        <node index="1">
            <host>172.17.2.63</host>
            <port>2182</port>
        </node>
        <node index="2">
            <host>172.17.2.64</host>
            <port>2182</port>
        </node>
        <node index="3">
            <host>172.17.2.65</host>
            <port>2182</port>
        </node>
    </zookeeper-servers>

    <macros>
        <shard>04</shard>
        <replica>172.17.2.146</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>

</yandex>
<!-- 其中大部分配置一样,以下的配置根据节点的IP/域名具体配置 -->
<macros>
    <shard>04</shard>
    <replica>172.17.2.146</replica>
</macros>

注意:为什么直接vim /etc/metrika.xml一个新文件,这里很难去理解,有点莫名其妙,其实如果仔细看过clickhouse的配置文件/etc/clickhouse-server/config.xml就能明白,有这么一段被注释的配置说明:

<!-- If element has 'incl' attribute, then for it's value will be used corresponding substitution from another file.
         By default, path to file with substitutions is /etc/metrika.xml. It could be changed in config in 'include_from' element.
         Values for substitutions are specified in /yandex/name_of_substitution elements in that file.
      -->

参考单机版启动服务

验证

在每个节点启动clickhouse客户端,和单节点启动完全一样,查询集群信息

clickhouse-client -h 127.0.0.1 --port 9000 -u default -m

select 1;
select * from system.clusters;

在这里插入图片描述

使用

简介

ClickHouse有多少CPU,吃多少资源,所以飞快;
ClickHouse不支持事务,不存在隔离级别。ClickHouse的定位是分析性数据库,而不是严格的关系型数据库。又有人要问了,数据都不一致,统计个毛。举个例子,汽车的油表是100%准确么?为了获得一个100%准确的值,难道每次测量你都要停车检查么?统计数据的意义在于用大量的数据看规律,看趋势,而不是100%准确。
IO方面,MySQL是行存储,ClickHouse是列存储,后者在count()这类操作天然有优势,同时,在IO方面,MySQL需要大量随机IO,ClickHouse基本是顺序IO。
有人可能觉得上面的数据导入的时候,数据肯定缓存在内存里了,这个的确,但是ClickHouse基本上是顺序IO,用过就知道了,对IO基本没有太高要求,当然,磁盘越快,上层处理越快,但是99%的情况是,CPU先跑满了(数据库里太少见了,大多数都是IO不够用)。

创建库

CREATE/ATTACH DATABASE test_db ENGINE = Ordinary;

ATTACH 也可以建库,但是metadata目录下不会生成.sql文件,一般用于metadata元数据sql文件被删除后,恢复库表结构使用

创建本地表

CREATE TABLE test01( id UInt16,col1 String,col2 String,create_date date ) ENGINE = MergeTree(create_date, (id), 8192);

ENGINE:是表的引擎类型,

  1. MergeTree:最常用的,MergeTree要求有一个日期字段,还有主键。
  2. Log引擎没有这个限制,也是比较常用。
  3. ReplicatedMergeTree:MergeTree的分支,表复制引擎。
  4. Distributed:分布式引擎。

create_date:是表的日期字段,一个表必须要有一个日期字段。
id:是表的主键,主键可以有多个字段,每个字段用逗号分隔。
8192:是索引粒度,用默认值8192即可。

创建分布式表

CREATE TABLE distributed_table AS table ENGINE = Distributed(cluster, db, table, rand());

cluster:配置文件中的群集名称。
db:库名。
table:本地表名。
rand():分片方式:随机。
intHash64():分片方式:指定字段做hash。
Distribute引擎会选择每个分发到的Shard中的”健康的”副本执行SQL
在这里插入图片描述

概念

  1. clickhouse的cluster环境中,每台server的地位是等价的,即不存在master-slave之说,是multi-master模式。
  2. 各replicated表的宿主server上要在hosts里配置其他replicated表宿主server的ip和hostname的映射。
  3. 上面描述的在不同的server上建立全新的replicated模式的表,如果在某台server上已经存在一张replicated表,并且表中已经有数据,这时在另外的server上执行完replicated建表语句后,已有数据会自动同步到其他server上面。
  4. 如果zookeeper挂掉,replicated表会切换成read-only模式,不再进行数据同步,系统会周期性的尝试与zk重新建立连接。
  5. 如果在向一张replicated表insert数据的时候zookeeper挂掉,这时候会抛一个异常,等到与zk重新建立连接以后,系统(其他replicated表所在server)会检查本地文件与预期文件(保存在zk上)的差别,如果是轻微的差别,直接同步覆盖,如果发现有数据块损坏或者识别不了,则将这些数据文件移动到“detached”子目录,然后重新根据zk所记录的文件信息进行副本的同步。
  6. drop掉某一台server上的replicated表,不会对其他server上面的replicated表造成影响。
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:26:45  更:2021-09-02 11:28:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:33:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码