欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

clickHouse 简介和集群方式的安装

程序员文章站 2022-07-13 10:19:07
...

简介:

ClickHouse是一款用于大数据实时分析的列式数据库管理系统,而非数据库。通过向量化执行以及对CPU底层指令集(SIMD)的使用,它可以对海量数据进行并行处理,从而加快数据的处理速度。

发展趋势:

ClickHouse最初是为YandexMetrica 世界第二大Web分析平台而开发的。多年来一直作为该系统的核心组件被该系统持续使用着。目前为止,该系统在ClickHouse中有超过13万亿条记录,并且每天超过200多亿个事件被处理。它允许直接从原始数据中动态查询并生成报告。

在2016年6月15日开源了一个数据分析的数据库。目前阿里云 率先推出了自己的ClickHouse托管产品:https://www.aliyun.com/product/clickhouse。

ClickHouse 特点:

1.真正的面向列的DBMS

ClickHouse是一个DBMS,而不是一个单一的数据库。ClickHouse允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器。

2.数据高效压缩

在一些列式数据库管理系统中(例如:InfiniDB CE 和 MonetDB) 并没有使用数据压缩。但是, 若想达到比较优异的性能,数据压缩确实起到了至关重要的作用。

3.磁盘存储的数据

许多的列式数据库(如 SAP HANA, Google PowerDrill)只能在内存中工作,这种方式会造成比实际更多的设备预算。ClickHouse被设计用于工作在传统磁盘上的系统,它提供每GB更低的存储成本,但如果有可以使用SSD和内存,它也会合理的利用这些资源。

4.多核并行处理

ClickHouse会使用服务器上一切可用的资源,从而以最自然的方式并行处理大型查询。

5.在多个服务器上分布式处理

在ClickHouse中,数据可以保存在不同的shard上,每一个shard都由一组用于容错的replica组成,查询可以并行地在所有shard上进行处理。这些对用户来说是透明的

6.SQL语法支持

ClickHouse支持基于SQL的声明式查询语言,该语言大部分情况下是与SQL标准兼容的。
支持的查询包括 GROUP BY,ORDER BY,IN,JOIN以及非相关子查询。
不支持窗口函数和相关子查询。

7.向量化引擎

为了高效的使用CPU,数据不仅仅按列存储,同时还按向量(列的一部分)进行处理,这样可以更加高效地使用CPU。

8.实时数据更新

ClickHouse支持在表中定义主键。为了使查询能够快速在主键中进行范围查找,数据总是以增量的方式有序的存储在MergeTree中。因此,数据可以持续不断地高效的写入到表中,并且写入的过程中不会存在任何加锁的行为。

9.索引

按照主键对数据进行排序,这将帮助ClickHouse在几十毫秒以内完成对数据特定值或范围的查找。

10.适合在线查询

在线查询意味着在没有对数据做任何预处理的情况下以极低的延迟处理查询并将结果加载到用户的页面中。

11.支持近似预估计算

ClickHouse提供各种各样在允许牺牲数据精度的情况下对查询进行加速的方法:

用于近似计算的各类聚合函数,如:distinct values, medians, quantiles
基于数据的部分样本进行近似查询。这时,仅会从磁盘检索少部分比例的数据。
不使用全部的聚合条件,通过随机选择有限个数据聚合条件进行聚合。这在数据聚合条件满足某些分布条件下,在提供相当准确的聚合结果的同时降低了计算资源的使用。
12.支持嵌套的数据结构和支持数组作为数据类型

13.支持限制查询复杂性以及配额

14.复制数据复制和对数据完整性的支持

ClickHouse使用异步的多主复制技术。当数据被写入任何一个可用副本后,系统会在后台将数据分发给其他副本,以保证系统在不同副本上保持相同的数据。在大多数情况下ClickHouse能在故障后自动恢复,在一些少数的复杂情况下需要手动恢复。

优点:

ClickHouse实现了大多数当前主流的数据分析技术,具有明显的技术优势:

提供了极致的查询性能:开源公开benchmark显示比传统方法快1001000倍,提供50MB200MB/s的高吞吐实时导入能力)
以极低的成本存储海量数据: 借助于精心设计的列存、高效的数据压缩算法,提供高达10倍的压缩比,大幅提升单机数据存储和计算能力,大幅降低使用成本,是构建海量数据仓库的绝佳方案。
简单灵活又不失强大:提供完善SQL支持,上手十分简单;提供json、map、array等灵活数据类型适配业务快速变化;同时支持近似计算、概率数据结构等应对海量数据处理。
相比于开源社区的其他几项分析型技术,如Druid、Presto、Impala、Kylin、ElasticSearch等,ClickHouse更是一整套完善的解决方案,它自包含了存储和计算能力(无需额外依赖其他存储组件),完全自主实现了高可用,而且支持完整的SQL语法包括JOIN等,技术上有着明显优势。相比于hadoop体系,以数据库的方式来做大数据处理更加简单易用,学习成本低且灵活度高。

缺点:

没有完整的事务支持。
缺少高频率,低延迟的修改或删除已存在数据的能力。仅能用于批量删除或修改数据,但这符合 GDPR。
稀疏索引使得ClickHouse不适合通过其键检索单行的点查询。
安装:

官网的提供的Linux安装步骤存在问题,所以采用离线安装的形式。安装的版本是(20.3.9.70)

第一步:下载clickHouse 所需要的包:

网址:https://repo.yandex.ru/clickhouse/rpm/lts/x86_64/

或则链接: https://pan.baidu.com/s/1R9aF_qQwhIixfvAJtRd8sA 密码: c62v 下载

第二步:安装clickhouse:

导入秘钥:

rpm --import CLICKHOUSE-KEY.GPG

rpm -ivh *.rpm;

第四步 修改配置config.xml文件和添加外部配置文件:
clickHouse 简介和集群方式的安装
在文件的最后添加上

528 <include_from>/etc/clickhouse-server/metrika.xml</include_from>
clickHouse 简介和集群方式的安装

第五步 创建metrika.xml文件

<yandex>
<!--ck集群节点-->
<clickhouse_remote_servers>
    <ck_cluster>
    <!--perftest_3shards_2replicas -->
        <!-- 数据分片1  -->
        <shard>
             <internal_replication>true</internal_replication>
             <replica>
                <host>172.31.101.95</host>
                <port>9000</port>
             </replica>
            <!--这里是备份集群的地址-->
             <!--<replica>
                <host>172.31.101.96</host>
                <port>9000</port>
             </replica>-->
        </shard>
        <!-- 数据分片2  -->
        <shard>
             <replica>
                <internal_replication>true</internal_replication>
                <host>172.31.101.96</host>
                <port>9000</port>
             </replica>
            <!-- <replica>
                <host>172.31.101.97</host>
                <port>9000</port>
             </replica>-->
        </shard>
        <!-- 数据分片3  -->
        <shard>
            <internal_replication>true</internal_replication>
            <replica>
                <host>172.31.101.97</host>
                <port>9000</port>
            </replica>
            <!--<replica>
                <host>172.31.101.95</host>
                <port>9000</port>
            </replica>-->
        </shard>
    </ck_cluster>
    <!--/perftest_3shards_2replicas -->
</clickhouse_remote_servers>

<!--zookeeper相关配置-->
<zookeeper-servers>
    <node index="1">
        <host>172.31.101.26</host>
        <port>2181</port>
    </node>
    <node index="2">
        <host>172.31.101.27</host>
        <port>2181</port>
    </node>
    <node index="3">
        <host>172.31.101.28</host>
        <port>2181</port>
    </node>
</zookeeper-servers>

<macros>
    <replica>172.21.101.96</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> <!--压缩算法lz4压缩比zstd快, 更占磁盘-->
    </case>
</clickhouse_compression>
</yandex>

注意:

<macros>
    <replica>172.31.101.96</replica>
</macros>

这块代码每台机器不一样。

这里分布式的搭建完成;

然后运行

sudo service clickhouse-server start 启动clickhouse服务 每个节点都要启动

clickhouse-client 运行clickhouse客户端

成功界面:
clickHouse 简介和集群方式的安装

相关标签: SQL 大数据