《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的某个数字,把该数据放入数字对应的桶中

相关文章
|
25天前
|
存储 分布式计算 Hadoop
Hadoop【基础知识 01】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)
【4月更文挑战第3天】Hadoop【基础知识 01】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)
39 3
|
25天前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
74 2
|
1天前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
9 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
13天前
|
SQL 分布式计算 大数据
[AIGC 大数据基础]hive浅谈
[AIGC 大数据基础]hive浅谈
|
13天前
|
SQL 存储 分布式计算
基于Hadoop数据仓库Hive1.2部署及使用
基于Hadoop数据仓库Hive1.2部署及使用
|
22天前
|
SQL HIVE
Hive【Hive学习大纲】【数据仓库+简介+工作原理】【自学阶段整理的xmind思维导图分享】【点击可放大看高清】
【4月更文挑战第6天】Hive【Hive学习大纲】【数据仓库+简介+工作原理】【自学阶段整理的xmind思维导图分享】【点击可放大看高清】
17 0
|
26天前
|
SQL 分布式计算 Hadoop
利用Hive与Hadoop构建大数据仓库:从零到一
【4月更文挑战第7天】本文介绍了如何使用Apache Hive与Hadoop构建大数据仓库。Hadoop的HDFS和YARN提供分布式存储和资源管理,而Hive作为基于Hadoop的数据仓库系统,通过HiveQL简化大数据查询。构建过程包括设置Hadoop集群、安装配置Hive、数据导入与管理、查询分析以及ETL与调度。大数据仓库的应用场景包括海量数据存储、离线分析、数据服务化和数据湖构建,为企业决策和创新提供支持。
74 1
|
4月前
|
SQL 数据可视化 数据挖掘
将Sqoop与Hive集成无缝的数据分析
将Sqoop与Hive集成无缝的数据分析
|
4月前
|
SQL 数据采集 分布式计算
Hadoop和Hive中的数据倾斜问题及其解决方案
Hadoop和Hive中的数据倾斜问题及其解决方案
48 0
|
4月前
|
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
148 0