Hive与ClickHouse的区别

这篇具有很好参考价值的文章主要介绍了Hive与ClickHouse的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive是Hadoop生态系统中事实上的数据仓库标准。Hive是建立在Hadoop生态中的数据仓库中间件,其本身并不提供存储与计算能力。Hive的存储引擎使用HDFS,计算引擎使用MapReduce或Spark。
Hive本质上是一个元数据管理平台,通过对存储于HDFS上的数据文件附加元数据,赋予HDFS上的文件以数据库表的语义。并对外提供统一的Hive SQL接口,将用户提交的SQL翻译为对应的MapReduce程序或Hive程序,交给相应的计算引擎执行。
由于MapReduce计算模型本身的缺陷,因此目前一般情况下会将Hive结合Spark使用。本文主要对比Hive On Spark与ClickHouse的区别。

ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。ClickHouse最初是一款名为Yandex.Metrica的产品,主要用于WEB流量分析。ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse。
ClickHouse非常适用于商业智能领域,除此之外,它也能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等众多其他领域。

一、Hive的数据文件

和ClickHouse不同,由于Hive本身并不存储数据,而是为HDFS上的文件赋予数据库表、列的语义,保存对应的元数据供查询时使用,因此Hive的数据文件存在多种类型。

1、textfile

textfile(文本文件)是Hive中默认的数据文件,是一类基于纯文本的数据文件格式。在大数据时代之前的CSV、TSV都属于该类文件。

textfile的特点:
(1)按行存储,文件内的一个物理行对应数据表中的一行数据。
(2)行内以特殊的符号分列。
(3)纯文本保存,不需要特殊解编码器即可识别。
(4)受限于纯文本表现力的限制,复杂类型可能需要额外的信息才能正确解析(即单独的数据文件不足以保存所有信息),例如日期等。
(5)默认情况下无压缩。
(6)文本文件由于其按行存储的特性,导致其在Spark中是性能最差的一种数据文件格式。文本文件通常由业务侧的程序直接生成,且在业务侧被大量使用。因此Hive默认情况下使用文本文件作为数据文件的存储格式,保证这些文本文件在导入大数据系统后可以不用转换而直接被Hive识别和处理。

2、Apache ORC

Apache ORC(Optimized Row Columnar,优化行列式)是Hive中一种列式存储的数据文件格式,ORC在textfile的基础上进行了大量的修改以优化大数据场景下的查询性能.

ORC的主要特点:
(1)按列存储。
(2)二进制存储,自描述。
(3)包含稀疏索引。
(4)支持数据压缩。
(5)支持ACID事务。

3、Parquet

Hadoop Parquet是Hadoop生态中的一种语言无关的,不与任何数据计算框架绑定的新型列式存储格式。Parquet可以兼容多种计算框架和计算引擎,由于其优秀的兼容性,在生产中被大量使用。

Parquet主要特点:
(1)按列存储。
(2)二进制存储,自描述。
(3)包含稀疏索引。
(4)支持数据压缩。
(5)语言独立、平台独立、计算框架独立。

4、Parquet与ORC

Parquet和ORC格式有着很多的相同点,那么在使用时应当如何选择呢?
(1) 原则一:希望平台独立,更好的兼容性,选择Parquet
Parquet在设计时考虑了通用性,如果希望进行联邦查询或为了将数据文件交给其他计算引擎使用,那么应该选择Parquet。
(2) 原则二:数据量庞大,希望获得最强的查询性能,选择ORC
ORC针对HDFS进行了针对性的优化,当数据非常庞大且需对查询性能有要求时,务必选择ORC格式。ORC在大数据量下的性能一定强于Parquet,大量的实验证明了这一点。因此本书后续的性能比较都是基于ORC格式的Hive。
ORC的设计原则和ClickHouse类似,都是存储服务于计算的典范。这也提现了性能和通用性不可兼得。再次强调,架构设计没有银弹,有得必有失。不要试图设计各方面都优秀的架构,即使是Parquet,也为了通用性放弃了性能。

二、Hive的存储系统

Hive本身不提供存储,其数据都存储于HDFS(Hadoop Distribution File System,Hadoop分布式文件系统)上。HDFS是大数据中专用的分布式文件系统,专为大数据处理而设计。

三、Hive与ClickHouse计算引擎的差异

Hive本身并不提供计算引擎,而是使用Hadoop生态的MapReduce或Spark实现计算。由于Spark更高层次的抽象,使得Spark的计算引擎的性能远高于MapReduce。两者之间的区别如下:

1、运行模式不同

ClickHouse是MPP架构,强调充分发挥单机性能,没有真正的分布式表,ClickHouse的分布式表只是本地表的代理,对分布式表的查询都会被转换为对本地表的查询。这导致ClickHouse在执行部分大表join时可能出现资源不足的情况。
Hive的数据存储于分布式文件系统,因此Hive的计算引擎Spark在执行计算任务时,需要依据数据分布进行调度。在必要时,Spark可以通过CBO将数据重新排序后再分散到多台机器执行,以实现复杂的查询。
ClickHouse适合简单的DW之上的即席查询。而Spark由于其分布式特性,导致其任务启动时间很长,因此不适合实现即席查询,但是对于大数据量的join等复杂查询时具备非常大的优势。

2、优化重点不同

ClickHouse的优化重点在如何提高单机的处理能力,而Spark的优化重点在于如何提高分布式的协作效率。

四、ClickHouse比Hive快的原因

需要再次强调的是,ClickHouse只是在DW即席查询场景下比Hive快,并没有在所有场景都比Spark快,详细的分析请参考第5章。本节对比的是,当ClickHouse和Hive都进行即席查询,ClickHouse比Hive快的原因。

1、严格数据组织更适合做分析

ClickHouse的数据组织相对于Hive更严格,需要用户在建表时制定排序键进行预排序。虽然Hive的ORC格式和ClickHouse的数据文件其实一定程度上是等价的,但是Hive的ORC格式并不要求数据存储前进行预排序。
在预排序的情况下,数据在写入物理存储时已经按照一定的规律进行了聚集,在理想条件下可以大幅度降低I/O时间,避免数据的遍历。Hive的ORC格式在这一块并没有严格要求,因此ORC的存储就已经比ClickHouse消耗更多的I/O来遍历数据了。而ClickHouse却可以通过实现预排序好的数据和良好的索引,直接定位到对应的数据,节省了大量的I/O时间。

2、更简单的调度

ClickHouse目的在于压榨单机性能,并没有真正的分布式表,数据都在本地,这也使得ClickHouse不需要复杂的调度,直接在本机执行SQL即可。而Hive的数据都在HDFS上,在真正任务前需要依据数据分布确定更复杂的物理计划,然后将Spark程序调度到对应的Data Node上,调度的过程非常消耗时间。

文章参考:https://mp.weixin.qq.com/s/z1WU3MsekiSKjurH6v5eLw文章来源地址https://www.toymoban.com/news/detail-669402.html

到了这里,关于Hive与ClickHouse的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术

    2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金融企业、安全机构啥的,他们必须要用oracle数据库 这oracle比sql安全,强大多了,所以你需要学

    2024年02月08日
    浏览(47)
  • ClickHouse 与 Hadoop 整合: 大数据分析与集成解决方案

    大数据技术在过去的几年里已经成为企业和组织中最重要的技术之一。随着数据的规模和复杂性的增加,传统的数据库和数据处理技术已经不能满足需求。因此,新的数据处理技术和系统必须被开发出来以满足这些需求。 ClickHouse 和 Hadoop 是两个非常受欢迎的大数据技术。C

    2024年02月20日
    浏览(32)
  • 大数据测试-hive、doris、clickhouse、mysql、elasticsearch、kudu、postgresql、sqlserver

    大数据工作要接触很多的数据库和查询引擎 数据库 : 1、 hive :用于跑批,大批量,稳定,缺点:无update。用于数仓 2、 doris db :已更名starrocks。即时查询 可达千亿级别 文档:什么是 StarRocks @ StarRocks_intro @ StarRocks Docs 3、 clickhouse :亿级别 局限性:主表,单表支持能力强,

    2024年02月05日
    浏览(36)
  • ClickHouse(19)ClickHouse集成Hive表引擎详细解析

    目录 Hive集成表引擎 创建表 使用示例 如何使用HDFS文件系统的本地缓存 查询 ORC 输入格式的Hive 表 在 Hive 中建表 在 ClickHouse 中建表 查询 Parquest 输入格式的Hive 表 在 Hive 中建表 在 ClickHouse 中建表 查询文本输入格式的Hive表 在Hive 中建表 在 ClickHouse 中建表 资料分享 系列文章

    2024年02月04日
    浏览(34)
  • 大数据之Hadoop数据仓库Hive

    Hive 是一个构建在 Hadoop 之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类 SQL 查询功能,用于查询的 SQL 语句会被转化为 MapReduce 作业,然后提交到 Hadoop 上运行。 特点: 简单、容易上手 (提供了类似 sql 的查询语言 hql),使得精通 sql 但是不了解 Java 编程的人也

    2024年02月01日
    浏览(38)
  • 大数据Hadoop之——部署hadoop+hive+Mysql环境(window11)

    目录 一、安装JDK8 1)JDK下载地址 2)设置环境变量 二、Hadoop安装(window10环境) 1)下载Hadoop3.1.3 2)Hadoop配置环境变量 3)在hadoop解压目录下创建相关目录 4)修改Hadoop配置文件 1、core-site.xml文件:添加以下配置 2、hdfs-site.xml文件:添加以下配置,路径改成自己的安装路径 3、

    2024年02月08日
    浏览(33)
  • HDFS 跨集群数据同步(hive,hadoop)

    两个不同的HDFS 集群数据迁移( A集群的数据 - B 集群) 采用的是 SHELL 脚本  按表进行; 日期分区进行; #!/bin/bash ##################### #创建人:DZH #创建日期: 2020-04 #内容: 数据迁移 ##################### ##################################### [ \\\"$#\\\" -ne 0 ] FILE=$1 path=$(cd `dirname $0`; pwd) ############## 获取执

    2024年04月27日
    浏览(36)
  • 大数据技术之Hadoop学习(七)——Hive数据仓库

    目录 素材 一、数据仓库简介 1、数据仓库的认识 (1)数据仓库是面向主题的。 (2)数据仓库是随时间变化的。 (3)数据仓库相对稳定 (4)OLTP和OLAP 2、数据仓库的结构 (1)数据源 (2)数据存储及管理 (3)OLAP 服务器 (4)前端工具 3、数据仓库的数据模型 (1)星状模

    2024年02月17日
    浏览(33)
  • 0401hive入门-hadoop-大数据学习.md

    Apache Hive是一个开源的数据仓库查询和分析工具,最初由Facebook开发,并后来捐赠给Apache软件基金会。Hive允许用户使用SQL语言来查询和分析存储在Hadoop分布式文件系统(HDFS)中的大规模数据集。它的设计目标是使非技术用户能够轻松地在Hadoop集群上执行数据查询和分析任务,

    2024年02月09日
    浏览(36)
  • 详解数据库、Hive以及Hadoop之间的关系

    数据库是一个用于存储和管理数据的系统。 数据库管理系统(DBMS)是用于管理数据库的软件。 数据库使用表和字段的结构来组织和存储数据。 关系型数据库是最常见的数据库类型,使用SQL(Structured Query Language)进行数据操作和查询。 数据库管理系统(DBMS):数据库管理系

    2024年03月15日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包