0
点赞
收藏
分享

微信扫一扫

Hive基础知识补遗

女侠展昭 2022-12-07 阅读 151


Hive学习途径:

1、官网:http://hive.apache.org/
2、慕课网:Hive相关入门课程
3、《Hadoop实战》第二版
4、网络上各种相关Blog以及相关介绍(主要用来进行问题查找解疑)

Hive的定义与功能:

定义
hive 含义为蜂巢,百度百科定义为:hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive主要用来做数据提取转化加载(ETL),由于多数情况下要执行MapReduce任务,所以Hive 并不适合那些需要低延迟的应用,例如,联机事务处理(OLTP)。Hive 并不提供实时的查询和基于行级的数据更新操作。Hive 的最佳使用场合是大数据集的批处理作业,例如,网络日志分析。

Hive 的设计特点如下。
● 支持索引,加快数据查询。
● 不同的存储类型,例如,纯文本文件、HBase 中的文件。
● 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。
● 可以直接使用存储在Hadoop 文件系统中的数据。
● 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。
● 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。

Hive的体系结构(图片来源自网络):


用户接口
用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。
元数据存储
Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器、执行器
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行。
Hadoop
Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from article 不会生成 MapReduce 任务)。

Hive的执行流程:


Hive的数据存储:


  1. 表:Hive中的表和关系型数据库中的表在概念上很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通过${HIVE_HOME}/conf/hive-site.xml配置文件中的 hive.metastore.warehouse.dir属性来配置,这个属性默认的值是/user/hive/warehouse(这个目录在 HDFS上),我们可以根据实际的情况来修改这个配置。如果我有一个表article,那么在HDFS中会创建/user/hive/warehouse/article 目录(这里假定hive.metastore.warehouse.dir配置为/user/hive/warehouse);article表所有的数据都存放在这个目录中。这个例外是外部表。

2、外部表:Hive中的外部表和表很类似,但是其数据不是放在自己表所属的目录中,而是存放到别处,这样的好处是如果你要删除这个外部表,该外部表所指向的数据是不会被删除的,它只会删除外部表对应的元数据;而如果你要删除表,该表对应的所有数据包括元数据都会被删除。

3、分区:在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中。比如article 表有userid和content两个分区,则对应userid=1001,content=testcontent对应表的目录为/user/hive/warehouse /userid=1001/content=testcontent,所有属于这个分区的数据都存放在这个目录中。

4、桶:对指定的列计算其hash,根据hash值切分数据,目的是为了并行,每一个桶对应一个文件(注意和分区的区别)。比如将article表id列分散至16个桶中,首先对id列的值计算hash,对应hash值为0和16的数据存储的HDFS目录为:/user /hive/warehouse/article/part-00000;而hash值为2的数据存储的HDFS 目录为:/user/hive/warehouse/articlep/part-00002。


举报

相关推荐

0 条评论