目录

hive概述

Hive

hive优点

hive缺点

hive构架原理

hive与数据库比较


hive概述

Hive

Hive是基于Hadoop的一个数据仓库工具,由Facebook开源用于解决海量结构化日志,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。

(1)hive的本质是将HQL转化成为MapReduce

(2)hive分析数据底层的实现是MapReduce;

(3)hive处理的数据存储在HDFS上;

(4)执行程序运行在yarn上;

hive优点

(1)hive支持用户自定义函数,可以根据需求实现用户的自定义函数;

(2) 避免写MapReduce,减少了开发人员的学习成本;

(3)采用类SQL语法,简单、容易上手,实现快速开发;

(4)执行延迟高,常用于数据分析、对实时性要求不高的地方;

(5)处理大数据有优势,因为hive延迟高;处理一个数据会生成一个MapReduce,处理大数据比处理小数据减少生成MapReduce。

hive缺点

(1)效率比较低

hive自动生成MapReduce,不够智能化;

hive粒度比较粗,调优比较困难;

(2)HQL表达有限

不能表达迭代式算法;

不擅长数据挖掘;

因为MapReduce的关系不能实现效率高的算法。

hive构架原理

 

(1)Metastore:元数据

元数据包括:列/分区字段、表名、表所属的数据库、表的拥有者、表的类型(内外部表)、表数据所在的目录。

(2)client:用户接口 

CLI(command-line-interface)、JDBC/ODBC(访问hive)、WEBUI(浏览器访问hive)。

(3)driver:驱动器

1)解析器(SQL parser):将SQL字符串转换成抽象语法树AST;

2)编译器(physical plan): 将AST编译生成逻辑执行计划;

3)优化器(query optimizer):对逻辑执行计划进行优化;

4)执行器(execution):将逻辑执行计划转化成为可运行的物理计划(MR/spark);

Hive提供一系列交互接口,接收到用户指令(SQL),结合元数据(MetaStore),使用自己的Driver,将这些指令翻译成MapReduce提交到Hadoop中执行,将返回的结果输出到用户交互接口。

(4)Hadoop

使用HDFS进行存储,使用MapReduce进行计算。

hive与数据库比较

数据库可以用在Online的应用中,Hive是为数据仓库而设计的,Hive和数据库除了拥有类似的查询语言其他再无类似之处。

(1)数据更新

Hive是针对数据仓库应用设计的,数据仓库是读多写少,不建议对数据进行改写,所有的数据都是在加载的时候确定好的;数据库中的数据通常需要进行修改。

(2)查询语言

SQL被广泛应用在数据仓库中,为此专门针对Hive的特性设计了类SQL的查询语言HQL

(3)执行延迟

Hive在查询数据时没有索引需要扫描整个表,并且MapReduce本身具有较高的延迟,因此延迟较高;数据规模较小时数据库的执行延迟较低;当数据规模大到超过数据库的处理能力的时Hive的并行计算能体现出优势。

(4)数据规模

Hive建立在集群上并且可以利用MapReduce进行并行计算,因此可以支持大规模数据;数据库可以支持的数据规模较小。

本文为学习笔记!!!!!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐