导图社区 第8章数据仓库Hive
这是一篇关于第8章数据仓库Hive的思维导图,Hive是一个可以提供有效、合理、直观组织和使用数据的分析工具,适用于各种数据仓库场景。
编辑于2023-12-19 18:39:11第8章数据仓库Hive
初识Hive
. Hive由Facebook公司开源,主要用于解决海量结构化日志数据的离线分析。Hive是基子Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供了类SQL查询语言HiveQL
Hive具有如下特征: (1)查询语言与SQL接近。 (2)并行执行。 (3)使用HDFS存储。 (4)支持多种数据格式。 (5)不支持数据更新。 (6)不支持索引。 (7)执行延迟高。 (8)可扩展性高。 (9)数据规模大。
部署Hive
运行环境
Hive部署与运行所需要的系统环境包括以下几个方面。 1)操作系统Hive支持不同平台,在当前绝大多数主流的操作系统上都能够运行,例如Unix/Linux、Windows等。本书采用的操作系统为Linux发行版CentOS 7。 2)Java环境Hive使用Java语言编写,因此它的运行环境需要Java环境的支持。 3)HadoopHive需要Hadoop的支持,它使用HDFS进行存储,使用MapReduce进行计算。
部署模式
1)内嵌模式是Hive Metastore最简单的部署方式,使用Hive内嵌的Derby数据库来存储元数据。但是Derby只能接受一个Hive会话的访问,试图启动第二个Hive会话就会导致Metastore连接失败。 2)本地模式是Metastore的默认模式。该模式下,单Hive会话(一个Hive服务JVM)以组件方式调用Metastore和Driver,允许同时存在多个Hive会话,即多个用户可以同时连接到元数据库中。 3)远程模式将Metastore分离出来,成为一个独立的Hive服务,而不是和Hive服务运行在同一个虚拟机上。
规划Hive
Hive优化策略
(1)Map任务的数目不需要单独设置,通过设置block的最小和最大值来改变Map任务的个数。 (2)为了减轻网络传输压力使用压缩技术对MapReduce中需要传输的数据进行压缩。 (3)开启分布式缓存以保留计算任务的中间结果集。 (4)根据具体业务需求,提取和预处理部分表数据,以提高查询计算效率。 (5)设置并行参数hive.exec.parallel为true,并设置线程数量hive.exec.parallel.thread.number为CPU的实际线程数量,可以提高Hive任务的并行性。 (6)关闭预测执行。当数据分片存在倾斜时,Hive会把执行时间长的任务当作失败,继而再产生一个相同的任务去执行,会降低执行效率。 (7)设置Java虚拟机JVM重用,即允许一个JVM运行多个任务,来节省虚拟机初始化时间。 (8).JOIN连接操作的优化。对于同一个关键字Key,对应的值小的应该放到JOIN前面,大的放到JOIN后面。
Hive函数
内置运算符
内置函数
自定义函数
普通自定义函数(UDF)
表生成自定义函数(UDTF)
聚集自定义函数(UDAF)
Hive文件格式
Hive数据类型
基本数据类型
集合数据类型
Hive体系架构
.Hive体系架构中主要包括如下组件: CLI、JDBC/ODBC、ThriftServer、HWI、Metastore和Driver,这些组件可以分为两类:客户端组件,服务端组件。·另外,Hive还需要Hadoop的支持,它使用HDFS进行存储,使用MapReduce进行计算。
客户端组件
1) CLI是Hive命令行接口,是最常用的一种用户接口。CLI启动时会同时启动一个Hive副本。
2) JDBC是Java Database Connection规范,它定义了一系列Java访问各类数据库的访问接口,因此Hive-JDBC其实本质上扮演了一个协议转换的角色,把JDBC标准协议转换为访问Hive Server服务的协议。 3)HWI是Hive的Web访问接口,提供了一种可以通过浏览器来访问Hive的服务。
服务端组件
1) Thrift是Facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务开发,Hive集成了Thrift Server服务,能让不同的编程语言如Java、Python等调用Hive接口。 2)元数据Metastore组件用于存储Hive的元数据,表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表).表的数据所在目录等。 3)驱动器Driver组件的作用是将用户编写的HiveQL语句进行解析、编译、优化,生成执行计划,然后调用底层的MapReduce计算框架。
Hive驱动器由四部分组成:. (1)解析器 (2)编译器 (3)优化器 (4)执行器