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

news2024/11/17 6:19:59

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

目前已经更新到了:

  • 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等特点,在大数据领域越走越远。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2133522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何编译OpenHarmony SDK API

往期知识点记录: 鸿蒙(HarmonyOS)应用层开发(北向)知识点汇总 startup子系统之syspara_lite系统属性部件 (1) startup子系统之syspara_lite系统属性部件 (2) startup子系…

【数据集】城市不透水面数据集CLUD-Urban

城市不透水面数据集CLUD-Urban 数据概述数据下载参考 数据概述 1、论文-ESSD-A 30 m resolution dataset of China’s urban impervious surface area and green space, 2000–2018 空间分辨率:30 m 数据下载 数据下载:A 30-meter resolution data…

Grafana面板-linux主机详情(使用标签过滤主机监控)

1. 采集器添加labels标签区分业务项目 targets添加labels (模板中使用的project标签) … targets: [‘xxxx:9100’] labels: project: app2targets: [‘xxxx:9100’] labels: project: app1 … 2. grafana面板套用 21902 模板 演示

航空航司reese84逆向

reese84逆向 Reese84 是一种用于保护网站防止自动化爬虫抓取的防护机制,尤其是在航空公司网站等需要严格保护数据的平台上广泛使用。这种机制通过复杂的指纹识别和行为分析技术来检测和阻止非人类的互动。例如,Reese84 可以通过分析访问者的浏览器指纹、…

软件开发人员的真实面

我相信我们都看过视频上那些名为“软件工程师的一天”的视频。这些视频通常只展示一些日常任务,比如吃饭、打字和参加会议。我对这些视频未能展示软件开发工作的真实内容感到失望。这些内容往往只关注表面活动,却忽略了工作中的思维挑战和解决问题的部分…

新升级|优化航拍/倾斜模型好消息,支持处理多套贴图模型!

【天元轻量化软件】一直在不断地追求进步和完善,以满足更多用户的各种需求。 电脑登录天元官网免费体验:天元轻量化软件官网 本次我们对“智能PBR”功能进行了更新。更新后的“智能PBR”支持带多套贴图的模型进行使用。 本轮更新后,主要受益…

CISP-PTE CMS sqlgun靶场

sql靶场有个搜索框先点一下go,有回显说明存在漏洞 有个xss 然后在这里尝试sql注入 输入 -1 union select 1,2,3# 有回显可以查看数据库 然后查询数据库,用户 查询数据库的表名 查询它的数据这里admin用户的密码是md5加密 去解密看看 然后扫描ip目录发…

linux-L5.linux查看应用占用的资源top

启动 top 命令: 打开终端,输入 top 并按回车键。 查看进程信息: 默认情况下,top 会显示系统的整体资源使用情况,包括 CPU、内存、磁盘 I/O 和网络 I/O 等信息。然后它会列出当前运行的进程,以及它们分别占…

Leetcode面试经典150题-138.随机链表的复制

题目比较简单,重点是理解思想,random不管,copy一定要放在next 而且里面的遍历过程不能省略 解法都在代码里,不懂就留言或者私信 /* // Definition for a Node. class Node {int val;Node next;Node random;public Node(int val…

【脑机接口】脑机接口性能的电压波形的尖峰分类和阈值比较

Comparison of spike sorting and thresholding of voltage waveforms for intracortical brain–machine interface performance 脑机接口性能的电压波形的尖峰分类和阈值比较论文下载:摘要1 介绍2 方法2.1数据获取2.2spike sorting 技术2.3神经数据分析 3结果3.1神…

【机器学习】线性动态系统的基本概念以及卡尔曼滤波器的概念和应用方式

引言 线性动态系统(Linear Dynamical System,LDS)是一类特殊的动态系统,其中系统的状态转移和观测过程都是线性的 文章目录 引言一、线性动态系统1.1 LDS的基本组成1.2 LDS的数学表示1.2.1 状态方程1.2.2 观测方程LDS的应用 1.3 L…

计算机网络27、28——Linux命令1、2

1、虚拟机网络前方路径内容 用户名机器名:/$ $表示普通用户,#表示root用户 2、Linux不分盘,都是绝对路径 /表示根目录,表示计算机文件夹下 ~是当前用户的家,表示home文件夹下自己的文件夹 3、bin文件夹下的是可执…

【C++】—— list 的了解与使用

【C】—— list 的了解与使用 1 list 的函数接口2 迭代器2.1 简单使用 list 的迭代器2.2 迭代器的划分2.3 不同迭代器的使用场景2.3.1 sort2.3.2 reverse2.3.3 find 3 emplace_back4 操作函数4.1 sort4.1.1 list中sort介绍4.1.2 list 中 sort 与算法库中 sort 效率比较 4.2 mer…

软件测试面试少走弯路

自我介绍开场白 只会手工和会写基础脚本分别如何介绍 自动化性能都会该如何介绍?记得面试前准备好如何回答怎么做到的? 项目如何进行介绍 回答验证码机制的处理问题 不会自动化和性能能找到工作吗? 萌芽计划对软件测试的大致了解 自动化测试…

操作系统 ---- 调度算法【先来先服务(FCFS)、最短作业优先(SJF)、最高响应比优先(HRRN)】

目录 一、常见的调度算法 1. 先来先服务(FCFS, First-Come, First-Served) 2. 最短作业优先(SJF, Shortest Job First) 3. 优先级调度(Priority Scheduling algorithm,PSA) 4. 轮转调度&am…

嵌入式-QT学习-小练习

1. 实现多窗口 2. 给按键增加图标 3. 动图展示 结果演示&#xff1a; Mul_Con main.cpp #include "widget.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }一、第一个窗口展示 …

阿里云 EMR StarRocks 在七猫的应用和实践

七猫公司简介 七猫是一家深耕文化娱乐行业的互联网企业&#xff0c;总部坐落在上海市前滩中心。七猫旗下原创文学网站七猫中文网于2017年5月正式上线&#xff0c;专注为原创作者提供创作指导、版权运营等全方位一体化服务。七猫拳头产品七猫免费小说App于2018年8月正式上线&am…

力扣213-打家劫舍 II(Java详细题解)

题目链接&#xff1a;213. 打家劫舍 II - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 本体是打家劫舍的一个变形题&#xff0c;希望大家能先做198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09;&#xff0c;并看一下我上题的讲解力扣198-打家劫舍&…

TESSY创建需要手写桩的测试用例

如果需要让桩函数有额外的功能&#xff0c;如&#xff1a;传参检测、局部数据处理、多传参检测、函数实现变更等&#xff0c;可以进行手写桩。 我们以tessy5.1 IDE为例&#xff0c;给大家展示编写一个需要手写桩的测试用例过程。 1、前期的准备工作 可以参考以下文章&#xff1…

海运系统推荐:如何实现海运物流轨迹跟踪管理?

在海运业务中&#xff0c;物流信息的及时更新与透明化至关重要。然而&#xff0c;许多从事海运的企业和个人常常面临客户的连环追问&#xff0c;这些问题成为日常工作中的痛点&#xff1a;“我的货到哪了&#xff1f;”“怎么还没更新物流信息&#xff1f;”这样的情形让人感到…