1.4.3Hive(理论)

2020-03-30  本文已影响0人  寒暄_HX

总目录:https://www.jianshu.com/p/e406a9bc93a9

Hadoop - 子目录:https://www.jianshu.com/p/9428e443b7fd

什么是HIVE

HIVE是由Facebook开源(目前移交Apache)用于解决海量结构化日志的数据统计。
他是一个基于Hadoop的数据仓库工具,可以将结构化数据映射成一张表,并提供类SQL的查询服务。
HIVE原理本质上是一个将HQL语句转换为MapReduce的转换器。

原理

HIVE可以理解为Hadoop的客户端,让人更方便的操作内部存储的数据。也是Hadoop生态圈中少有的不是分布式框架的组件。毕竟没有听说过谁的chrome浏览器还是分布式的。

HIVE的优缺点

HIVE的优点

HIVE的缺点

HIVE的架构原理

架构图

HIVE本质是一个客户端,所以在这个框架里面很多东西并不在HIVE中,元数据存放在关系型数据库中,上端是用户的操作,下端是MR。
之后中间四个器是HIVE的,这四个器的运行顺序是解析器-->编译器-->优化器-->执行器。

ANTLR解析阶段
ANTER

HIVE运行原理

运行原理

HIVE和数据库的区别

查询语言的区别

因为SQL被广泛用于数据仓库方面,因此专门针对HIVE的特性设计了类SQL语言--HQL。
这使得熟悉SQL的开发者可以方便使用HIVE进行开发。

数据存放位置的区别

HIVE是建立在Hadoop之上,所以数据存储在HDFS中。
数据库则是存储在本地文件系统中。

数据更新

由于HIVE是针对数据仓库应用设计的,而数据仓库的内容是读多写少。因此,HIVE不建议对数据仓库进行频繁读写,所有的数据再存入时就要确定好。
而数据库的数据是要频繁读写的,因此可以使用语句来添加修改数据。

索引

HIVE没有索引,也不需要索引。他读取数据就是暴力扫描所有数据
而数据库需要根据实际应用对一个或多个建立索引,方便读取和检索。

执行

HIVE的查询时基于MapReduce实现的,数据库则是有自己的执行引擎。

执行延迟

HIVE的读取是直接暴力扫描所有数据,而且底层还是MR,双重延迟,导致HIVE延迟很高,但是这个高是相对的,HIVE可以处理海量数据还保持一个可以接收的延迟。
在和数据库比较时,HIVE的并行处理能力优势就得到的体现。

可扩展性

HIVE的存储是基于Hadoop的HDFS,世界上最大的hadoop集群是Yahoo的集群(4W台服务器,600PB数据,19个集群。)
而oracle最多也不过百台服务器。

上一篇 下一篇

猜你喜欢

热点阅读