1.1 什么是蜂巢

Hive:开源用来解决海量结构化日志的数据统计。

Hive是基于Hive的数据仓库工具,可以将结构化数据文件映射成表,并提供类似SQL的查询功能。其本质是:将HQL转换为程序

Hive处理后的数据存储在HDFS中

Hive分析数据的底层实现是

执行器运行在 Yarn 上

1.2 Hive的优缺点

1.2.1 优点

操作界面采用类SQL语法,提供快速开发能力(简单易用)。

避免了编写,降低了开发者的学习成本。

Hive的执行延迟比较高,因此Hive常用于实时性要求不高的数据分析。

Hive的优势在于处理大数据,但是在处理小数据时就没有优势了,因为Hive的执行延迟比较高。

Hive支持用户自定义函数,用户可以根据自己的需求实现自己的功能。

1.2.2 缺点

1. Hive的HQL表达能力有限

(1)迭代算法无法表达

(2)不擅长数据挖掘

2.Hive的效率比较低

(1) Hive自动生成的作业通常不够智能

(2) Hive调优难度大、粒度粗

1.3 Hive架构原理

1. 用户界面:

CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive)

2. 元数据:

元数据包括:表名、表所属数据库(默认为)、表所有者、列/分区字段、表类型(是否为外部表)、表数据所在目录等;

默认情况下,它存储在内置的 derby 数据库中。 推荐使用MySQL而不是derby存储。

3.

使用 HDFS 进行存储和计算。

4. 司机:

(1)解析器(SQL):将SQL字符串转换为抽象语法树AST。 此步骤一般使用第三方工具库完成,例如antlr; 对AST进行语法分析,比如表是否存在,字段是否存在,SQL语义是否错误?

(2)编译器(Plan):编译AST,生成逻辑执行计划。

(3)优化器(Query):优化逻辑执行计划。

(4)():将逻辑执行计划转换为可以运行的物理计划。 对于 Hive 来说,就是 MR/Spark。

Hive通过提供给用户的一系列交互接口接收用户的指令(SQL),使用自己的,结合元数据(),将这些指令翻译成,提交给服务器执行,最后输出返回的结果执行到用户交互界面。

1.4 Hive与数据库的比较

由于Hive使用类似SQL的查询语言HQL(Hive Query),因此很容易将Hive理解为数据库。 事实上,从结构上来看,Hive 和数据库除了具有相似的查询语言之外,没有任何共同点。 本文将从多个方面解释Hive与数据库的区别。 数据库可以在应用程序中使用,但 Hive 是为数据仓库设计的。 了解这一点将有助于你从应用角度理解Hive的特性。

1.4.1 查询语言

由于SQL在数据仓库中应用广泛,因此专门针对Hive的特点设计了类SQL查询语言HQL。 熟悉SQL开发的开发人员可以轻松使用Hive进行开发。

1.4.2 数据存储位置

Hive建立在其之上,所有Hive数据都存储在HDFS中。 数据库可以将数据存储在块设备或本地文件系统中。

1.4.3 数据更新

由于Hive是为数据仓库应用而设计的,所以数据仓库的内容需要多读少写。 因此,不建议在Hive中重写数据。 所有数据在加载时确定。 数据库中的数据通常需要经常修改,因此可以使用INTO…添加数据,使用…SET修改数据。

1.4.4 索引

Hive在加载数据的过程中不会对数据进行任何处理,甚至不会扫描数据,因此数据中的某些键没有建立索引。 当Hive想要访问数据中满足条件的特定值时,需要暴力扫描整个数据,因此访问延迟较高。 由于Hive的引入,Hive可以并行访问数据,因此即使没有索引,Hive仍然可以在访问大量数据时展现出优势。 在数据库中,索引通常是在一列或多列上创建的,因此数据库对于特定条件下的少量数据的访问可以具有高效率和低延迟。 由于数据访问的延迟较高,Hive不适合在线数据查询。

1.4.5 执行

Hive 中大多数查询的执行都是通过提供的来实现的。 数据库通常有自己的执行引擎。

1.4.6 执行延迟

Hive查询数据时,由于没有索引,需要扫描全表,因此延迟较高。 导致 Hive 执行延迟较高的另一个因素是框架。 由于其高延迟,在执行 Hive 查询时也会出现高延迟。 相比之下,数据库的执行延迟较低。 当然,这个低是有条件的,那就是数据规模小。 当数据规模大到超过数据库的处理能力时,Hive的并行计算就能明显地体现出它的优势。

1.4.7 可扩展性

由于Hive是建立在其之上的,因此Hive的可扩展性与Hive的可扩展性是一致的(世界上最大的集群在Yahoo!,2009年规模约为4000个节点)。 由于ACID语义的严格限制,数据库的扩展行非常有限。 目前最先进的并行数据库理论扩展能力也只有100个单位左右。

1.4.8 数据规模

由于Hive构建在集群之上,可以进行并行计算,因此可以支持大规模数据; 相应地,数据库可以支持较小的数据规模。

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注