《Hadoop大数据分析与挖掘实战》——3.2节Hive原理

简介:

本节书摘来自华章社区《Hadoop大数据分析与挖掘实战》一书中的第3章,第3.2节Hive原理,作者张良均 樊哲 赵云龙 李成华 ,更多章节内容可以访问云栖社区“华章社区”公众号查看

3.2 Hive原理
3.2.1 Hive架构
Hive的架构如图3-2所示。


4fd473e992fd68ede564dfd312c33461229bce0f

从图3-2中可以看到,Hive包含用户访问接口(CLI、JDBC/ODBC、GUI和Thrift Server)、元数据存储(Metastore)、驱动组件(包括编译、优化、执行驱动)。
用户访问接口即用户用来访问Hive数据仓库所使用的工具接口。CLI(command line interface)即命令行接口。Thrift Server是Facebook开发的一个软件框架,它用来开发可扩展且跨语言的服务,Hive集成了该服务,能让不同的编程语言调用Hive的接口。Hive客户端提供了通过网页的方式访问Hive提供的服务,这个接口对应Hive的HWI组件(Hive web interface),使用前要启动HWI服务。
Metastore是Hive中的元数据存储,主要存储Hive中的元数据,包括表的名称、表的列和分区及其属性、表的属性(是否为外部表等)、表的数据所在目录等,一般使用MySQL或Derby数据库。Metastore和Hive Driver驱动的互联有两种方式,一种是集成模式,如图3-3所示;一种是远程模式,如图3-4所示。


bbbff69f5fb2e60e2f72e53fbf0adb1cd9f9d0a1

驱动组件包括编译器、优化器和执行引擎,分别完成HQL查询语句的词法分析、语法分析、编译、优化以及查询计划的生成,生成的查询计划存储在HDFS中,并在随后由MapReduce调用执行。
3.2.2 Hive的数据模型
Hive支持多种基本数据类型,具体如表3-2所示。


4689854b421c44935d92a987c708c4f481f2584c

Hive中的所有数据都存储在HDFS中,Hive中包含以下数据模型:表、外部表、分区、桶。
1)表(Table):Hive中的表和关系型数据库中的表在概念很类似,每个表在HDFS中都有相应的目录用来存储表的数据,这个目录可以通过$HIVE_HOME/conf/hive-site.xml配置文件中的hive.metastore.warehouse.dir属性来配置,这个属性的默认值是/user/hive/warehouse(这个目录在HDFS上),可以根据实际情况来修改这个配置。如果有一个表employees,那么在HDFS中会创建/user/hive/warehouse/ employees目录,employees表的所有数据都存放在这个目录中。
2)外部表(External Table):Hive中的外部表和表很类似,但是其数据不是放在hive.metastore.warehouse.dir配置的目录中,而是放在建立表时指定的目录。创建外部表可以在删除该外部表时,不删除该外部表所指向的数据,它只会删除外部表对应的元数据;但是如果要删除表,该表对应的所有数据包括元数据都会被删除。
3)分区(Partition):在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都存储在对应的目录中。比如,针对下面的建表语句:crea

te table employees (id int, name string, salary double)
partitioned by (dept string);在HDFS中,其数据的目录如下:/user/hive/warehouse/employees
/dept=hr/
/dept=support/
/dept=engineering/
/dept=training/即在进行数据存储时,指定的分区列的每一个值都会新建一个目录。

4)桶(Bucket):对指定的列计算其哈希值,根据哈希值切分数据,目的是并行,每一个桶对应一个文件(注意和分区的区别)。例如,将employees表的id列分散至8个桶中,那么首先会对每个桶进行编号,从0~7,然后对id列的值计算哈希值,再把计算的哈希值使用求余运算得到0~7的某个数字,把该数据放入数字对应的桶中

相关文章
|
4月前
|
SQL HIVE
Hive sql 执行原理
Hive sql 执行原理
42 0
|
4月前
|
分布式计算 Hadoop
Hadoop系列 mapreduce 原理分析
Hadoop系列 mapreduce 原理分析
38 1
|
4天前
|
SQL HIVE
Hive【Hive学习大纲】【数据仓库+简介+工作原理】【自学阶段整理的xmind思维导图分享】【点击可放大看高清】
【4月更文挑战第6天】Hive【Hive学习大纲】【数据仓库+简介+工作原理】【自学阶段整理的xmind思维导图分享】【点击可放大看高清】
8 0
|
9天前
|
SQL 分布式计算 Hadoop
利用Hive与Hadoop构建大数据仓库:从零到一
【4月更文挑战第7天】本文介绍了如何使用Apache Hive与Hadoop构建大数据仓库。Hadoop的HDFS和YARN提供分布式存储和资源管理,而Hive作为基于Hadoop的数据仓库系统,通过HiveQL简化大数据查询。构建过程包括设置Hadoop集群、安装配置Hive、数据导入与管理、查询分析以及ETL与调度。大数据仓库的应用场景包括海量数据存储、离线分析、数据服务化和数据湖构建,为企业决策和创新提供支持。
40 1
|
3月前
|
SQL 数据可视化 数据挖掘
将Sqoop与Hive集成无缝的数据分析
将Sqoop与Hive集成无缝的数据分析
|
3月前
|
SQL 数据采集 分布式计算
Hadoop和Hive中的数据倾斜问题及其解决方案
Hadoop和Hive中的数据倾斜问题及其解决方案
41 0
|
3月前
|
SQL 分布式计算 安全
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
131 0
|
3月前
|
SQL 存储 分布式计算
Hadoop中的Hive是什么?请解释其作用和用途。
Hadoop中的Hive是什么?请解释其作用和用途。
35 0
|
3月前
|
SQL 存储 编解码
Hive中的压缩技术是如何实现的?请解释其原理和常用压缩算法。
Hive中的压缩技术是如何实现的?请解释其原理和常用压缩算法。
27 0
|
4月前
|
分布式计算 资源调度 搜索推荐
《PySpark大数据分析实战》-02.了解Hadoop
大家好!今天为大家分享的是《PySpark大数据分析实战》第1章第2节的内容:了解Hadoop。
44 0
《PySpark大数据分析实战》-02.了解Hadoop

热门文章

最新文章