终于有人讲明确了 ClickHouse与Hive的区别
一、Hive的数据文件
和ClickHouse不同,因为Hive自身并不存储数据,而是为HDFS上的文件赋予数据库表、列的语义,保留对应的元数据供查问时经常使用,因此Hive的数据文件存在多种类型
1、textfile
textfile(文本文件)是Hive中自动的数据文件,是一类基于纯文本的数据文件格局。在大数据时代之前的CSV、TSV都属于该类文件。这类文件的特点如下。
文本文件因为其按行存储的特性,造成其在Spark中是功能最差的一种数据文件格局。文本文件通常由业务侧的程序间接生成,且在业务侧被少量经常使用。因此Hive自动状况下经常使用文本文件作为数据文件的存储格局,保障这些文本文件在导入大数据系统后可以不用转换而间接被Hive识别和解决。
2、Apache ORC
Apache ORC(Optimized Row Columnar,提升行列式)是Hive中一种列式存储的数据文件格局,ORC在textfile的基础上启动了少量的修正以提升大数据场景下的查问功能,ORC的关键特点如下。
Hadoop Parquet是Hadoop生态中的一种言语有关的,不与任何数据计算框架绑定的新型列式存储格局。Parquet可以兼容多种计算框架和计算引擎,因为其低劣的兼容性,在消费中被少量经常使用。其关键特点如下。
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上,调度的环节十分消耗期间。
关于作者:陈峰,资深大数据专家和架构师,ClickHouse技术专家,滴普科技(2B畛域独角兽)合伙人兼首席架构师。《ClickHouse功能之巅:从架构设计解读功能之谜》作者。