大数据-133 - ClickHouse 基础概述 全面了解

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 大数据-133 - ClickHouse 基础概述 全面了解

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)

HDFS(已更完)

MapReduce(已更完)

Hive(已更完)

Flume(已更完)

Sqoop(已更完)

Zookeeper(已更完)

HBase(已更完)

Redis (已更完)

Kafka(已更完)

Spark(已更完)

Flink(正在更新!)

章节内容

上节我们完成了如下的内容:


Flink SQL

Flink SQL Hello World

简要概述

ClickHouse 是一个快速开源的OLAP数据库管理系统,它是面向列的,允许使用SQL查询实时生成分析报告。


随着物联网IOT时代的来临,IOT设备感知和报警存储数据越来越大,有用的价值数据需要数据分析师去分析。大数据分析成了非常重要的环节,开源也为大数据分析工程师提供了十分丰富的工具,但这也增加了开发者选择适合的工具的难度,尤其是新入行的开发者来说。


框架的多样化和复杂度成了很大的难题,例如:Kafka、HDFS、Spark、Hive等等组合才能产生最后的分析结果,把各种开源框架、工具、库、平台人工整合到一起所需的工作之复杂,是大数据领域开发和数据分析师常有的抱怨之一,也就是他们支持大数据分析简化和统一化的首要原因。

从业务维度来分析,用户需求会反向促使技术发展。


OLTP

OLTP:On-Lineage Transaction Processing:联机事务处理过程。


应用场景

ERP:Enterprise Resource Planning 企业资源计划

CRM:Customer Relationship Management 客户关系管理

流程审批、数据录入、填报等


具体特点

线下工作线上化,数据保存在各自的系统中,互不相同(数据孤岛)


OLAP

OLAP:On-Line Analytical Processing:联机分析系统


分析报表、分析决策等。


应用场景

方案1:数仓

如上图所示,数据实时写入HBase,实时的数据更新也在HBase完成,为了应对OLAP需求,我们定时(通常是T+1或者T+H)将HBase数据写成静态的文件(如:Parquet)导入到 OLAP引擎(如HDFS,比较常见的是Impala操作Hive)。这一架构又能满足随机读写,又可以支持OLAP分析的场景,但是有如下缺点:


架构复杂:从架构上看,数据在HBase、消息队列、HDFS间流转,涉及到的环节过多,运维成本也很高,并且每个环节需要保证高可用,都需要维护多个副本,存储空间也有一定的浪费。最后数据在多个系统上,对数据安全策略、监控都提出了挑战。

时效性低:数据从HBase导出静态文件是周期性的,一般这个周期一天(或者一小时),有时效性上不是很高。

难以应对后续的更新:真实场景中,总会有数据是延迟到达的,如果这些数据之前已经从HBase导出到HDFS,新到的变更数据更难以处理了,一个方案是把原有数据应用上新的变更后重写一遍,但这代价又很高。

方案2:ClickHouse、Kudu

实现方案2就是 ClickHouse、Kudu


发展历史

Yandex在2016年6月15日开源了一个数据分析数据库,叫做ClickHouse,这对保守的俄罗斯人来说是个特大事件。更让人惊讶的是,这个列式数据库的跑分要超过很多流行的商业MPP数据库软件,例如Vertica。如果你没有Vertica,那你一定听过Michael Stonebraker,2014年图灵奖的获得者,PostgreSQL和Ingres发明者(Sybase和SQL Server都是继承Ingres而来的),Paradigm4和SciDB的创办者。Micheal StoneBraker于2005年创办的Vertica公司,后来该公司被HP收购,HP Vertica成为MPP列式存储商业数据库的高性能代表,Facebook就购买了Vertica数据用于用户行为分析。


ClickHouse技术演变之路

Yandex公司在2011年上市,它的核心产品是搜索引擎。

我们知道,做搜索引擎的公司营收非常依赖流量和在线广告,所以做搜索引擎公司一般会并行推出在线流量分析产品,比如说百度的百度统计,Google的Google Analytics等,Yandex的Yandex.Metricah。ClickHouse就是在这种背景下诞生的。


ROLAP:传统关系型数据库OLAP,基于MySQL的MyISAM表引擎

MOLAP:借助物化视图的形式实现数据立方体,预处理的结果存在HBase这类高性能的分布式数据库中

HOLAP:R和M的结合体H

ROLAP:ClickHouse

ClickHouse 的核心特点

超高的查询性能

列式存储:只读取查询所需的列,减少了磁盘 I/O。

向量化计算:批量处理数据,提高了 CPU 使用效率。

数据压缩:高效的压缩算法,降低了存储成本。

水平可扩展性

分布式架构:支持集群部署,轻松处理 PB 级数据。

线性扩展:通过增加节点提升性能,无需停机。

实时数据写入

高吞吐量:每秒可插入数百万行数据。

低延迟:数据写入后立即可查询,满足实时分析需求。

丰富的功能支持

多样的数据类型:支持从基本类型到复杂类型的数据。

高级 SQL 特性:窗口函数、子查询、JOIN 等。

物化视图:预计算和存储查询结果,进一步提升查询性能。

典型应用场景

用户行为分析:电商、游戏、社交平台的实时用户行为跟踪。

日志和监控数据存储:处理服务器日志、应用程序日志和性能监控数据。

商业智能(BI):支持复杂的报表和数据分析需求。

部署与运维

单机部署:适合测试和小规模应用。

集群部署:用于生产环境,可通过 Zookeeper 进行协调。

运维工具:提供了监控和管理工具,如 clickhouse-client、clickhouse-copier。

最佳实践

数据分区:根据时间或其他字段进行分区,提高查询效率。

索引优化:使用主键和采样键,加速数据定位。

硬件配置:充分利用多核 CPU、高速磁盘和大内存。

ClickHouse支持特性

ClickHouse具体有哪些特性呢:


真正的面向列的DBMS

数据高效压缩

磁盘存储的数据

多核并行处理

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

SQL语法支持

向量化引擎

实时数据更新

索引

适合在线查询

支持近似预估计算

支持嵌套的数据结构

支持数组作为数据类型

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

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

ClickHouse和其他对比

商业OLAP

例如:


HP Vertica

Actian the Vector

区别:


ClickHouse 是开源而且免费的

云解决方案

例如:


亚马逊 RedShift

谷歌 BigQuery

区别:


ClickHouse 可以使用自己机器部署,无需云付费

Hadoop生态

例如:


Cloudera Impala

Spark SQL

Facebook Presto

Apache Drill

区别:


ClickHouse 支持实时的高并发系统

ClickHouse不依赖于Hadoop生态软件和基础

ClickHouse支持分布式机房的部署

开源OLAP数据库

例如:


InfiniDB

MonetDB

LucidDB

区别:


应用规模小

没有在大型互联网服务中蚕尝试

非关系型数据库

例如:


Druid

Apache Kylin

区别:


ClickHouse 可以支持从原始数据直接查询,支持类SQL语言,提供了传统关系型数据的便利。

真正的面向列DBMS

如果你想要查询速度变快:


减少数据扫描范围

减少数据传输时的大小

在一个真正的面向列的DBMS中,没有任何无用的信息在值中存储。

例如:必须支持定长数值,以避免在数值旁边存储长度数字,10亿个Int8的值应该大约消耗1GB的未压缩磁盘空间,否则这将强烈影响CPU的使用。由于解压的速度(CPU的使用率)主要取决于未压缩的数据量,即使在未压缩的情况下,紧凑的存储数据也是非常重要的。

因为有些系统可以单独存储独列的值,但由于其他场景的优化,无法有效处理分析查询,例如HBase、BigTable、Cassandra和HypeTable。在这些系统中,每秒可以获得大约十万行的吞吐量,但是每秒不会到达数亿行。


另外,ClickHouse是一个DBMS,而不是一个单一的数据库,ClickHouse允许运行时创建表和数据库,加载数据和运行查询,而不用重新配置或启动系统。


之所以称作 DBMS,因为ClickHouse:

DDL

DML

权限管理

数据备份

分布式存储

等等功能

数据压缩

一些面向列的DBMS(InfiniDB CE 和 MonetDB)不使用数据压缩,但是数据压缩可以提高性能。


磁盘存储

许多面向列的DBMS(SAP HANA和GooglePower Drill)只能在内存中工作,但即使在数千台服务器上,内存也太小,无法在Yandex.Metrica中存储所有浏览和会话。


多核并行

多核并行进行大型的查询。


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

上面列出的DBMS几乎不支持分布式处理,在ClickHouse中,数据可以驻留不同的分片上,每个分片可以是用于容错的一组副本,查询在所有分片上并行处理,这对用户来说是透明的。


SQL支持

支持的查询包括 GROUP BY、ORDER BY

子查询在FROM、IN、JOIN子句中被支持

标量子查询支持

关联子查询不支持

真是因为ClickHouse提供了标准协议的SQL查询接口,使得现有可视化分析系统能够轻松的与它集成对接

向量化引擎

数据不仅案列存储,而且由矢量-列的部分进行处理,这使我们能够实现高CPU性能。

向量化执行时寄存器硬件层面上的特性,可以理解为消除程序中循环的优化。

为了实现向量化执行,需要利用CPU的SIMD指令(Single Instrution Multiple Data),即用单条指令处理多条数据。现代计算机系统概念中,它是利用数据并行度来提高性能的一种实现方式,它的原理是在CPU寄存器层面实现数据并行的实现原理。


实时数据更新

ClickHouse支持主键表,为了快速执行对主键范围的查询,数据使用合并树(MergeTree)进行递增排序,由于这个原因,数据可以不断的添加到表中,添加数据时无锁处理。


索引

例如,带有主键可以在特定的时间范围内为特定的客户端(Metrica计数器)抽取数据,并且延迟事件小于几十毫秒。


支持在线查询

我们可以使用该系统作为Web界面的后端,低延迟意味着可以无延迟的实时的处理查询。


支持近似计算

系统包含用于近似计算各种值,中位数和分位数的集合函数

支持基于部分(样本)数据运行查询并获得近似结果,在这种情况下,从磁盘检索比例较少的数据。

支持为有限数量的随机秘钥(而不是所有秘钥)运行聚合,在数据中秘钥分发的特定场景下,这提供了相对准确的结果,同时使用较少的资源。

数据复制和对数据完整性支持

使用异步多主复制,写入任何可用的副本后,数据将分发到所有剩余的副本,系统在不同的副本上保持相同的数据。

要注意的是,ClickHouse并不完美:


不支持事务

不支持Update、Delete操作

支持有限的操作系统

最后总结

在大数据分析领域中,传统的大数据分析需要不同框架和技术组合才能达到最终效果,在人力成本、技术能力、硬件成本、维护成本上,让大数据分析变成了很昂贵的事情,很多中小企业非常痛苦,不得不被迫租赁第三方大型数据分析服务。

ClickHouse开源的出现让许多想做大数据且想做大数据分析的很多公司和企业都耳目一新。ClickHouse正是以不依赖Hadoop生态、安装维护简单、查询快速、支持SQL等特点,在大数据领域越走越远。

————————————————


                           版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                     

原文链接:https://blog.csdn.net/w776341482/article/details/142201263

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
3天前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
15 0
|
3天前
|
消息中间件 分布式计算 NoSQL
大数据-134 - ClickHouse 集群三节点 安装配置启动
大数据-134 - ClickHouse 集群三节点 安装配置启动
15 0
|
4天前
|
存储 分布式计算 API
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
大数据-107 Flink 基本概述 适用场景 框架特点 核心组成 生态发展 处理模型 组件架构
20 0
|
3天前
|
存储 分布式计算 NoSQL
大数据-144 Apache Kudu 基本概述 数据模型 使用场景
大数据-144 Apache Kudu 基本概述 数据模型 使用场景
10 0
|
3天前
|
SQL 消息中间件 分布式计算
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(一)
17 0
|
3天前
|
SQL 大数据
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
大数据-143 - ClickHouse 集群 SQL 超详细实践记录!(二)
20 0
|
3天前
|
存储 SQL 分布式计算
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
大数据-142 - ClickHouse 集群 副本和分片 Distributed 附带案例演示
14 0
|
3天前
|
SQL 消息中间件 分布式计算
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(一)
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(一)
13 0
|
3天前
|
SQL 大数据
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(二)
大数据-141 - ClickHouse 集群 副本和分片 Zk 的配置 Replicated MergeTree原理详解(二)
20 0
|
3天前
|
存储 SQL 分布式计算
大数据-139 - ClickHouse 集群 表引擎详解4 - MergeTree 实测案例 ReplacingMergeTree SummingMergeTree
大数据-139 - ClickHouse 集群 表引擎详解4 - MergeTree 实测案例 ReplacingMergeTree SummingMergeTree
11 0