IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 大数据原理与技术(八):数据仓库Hive -> 正文阅读

[大数据]大数据原理与技术(八):数据仓库Hive

Hive是基于Hadoop的数据仓库软件,可与将结构化的数据文件映射为数据库表,并提供类SQL查询功能。Hive将SQL语句转化成MapReduce任务进行处理,适用于大型分布式数据集的查询管理。

一、Hive概述

1.Hive简介和应用

(1)Hive是什么
Hive是基于Hadoop的数据仓库软件,某种程度上可以看作是用户编程接口,本身不存储和处理数据,可以用来进行数据提取转化加载(ETL),在Hadoop中存储、查询和分析大规模数据,依赖分布式文件系统HDFS存储数据,依赖分布式并行计算模型MapReduce处理数据,Hive还定义了类SQL查询语言——HiveQL,提供类SQL的查询功能。Hive查询的基本原理是将HiveQL语句自动转化成MapReduce任务,支持MapReduce、Tez、Spark等计算引擎。

(2)Hive的应用场景
Hive构建在Hadoop文件系统之上,Hive不提供实时的查询和基于行级的数据更新操作,不适合需要低延迟的应用,Hive适用于以下场景:
在这里插入图片描述

2.Hive的特性

(1)采用批处理方式处理海量数据

  • Hive需要把HiveQL语句转换成MapReduce任务进行运行;
  • 数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化

(2)提供适合数据仓库操作的工具

  • Hive本身提供了一系列对数据进行提取转化加载的工具,可以存储、查询和分析存储在Hadoop中的大规模数据;
  • 非常适合数据仓库应用程序维护海量数据、对数据进行挖掘、形成意见和报告等

3.传统数据仓库面临的挑战

  • 无法满足快速增长的海量数据存储需求
  • 无法有效处理不同类型的数据
  • 计算和处理能力不足

4.Hive与传统数据仓库的区别

Hive是用于查询分布式大型数据集的数据仓库,相比于传统数据仓库,在大数据的基础上有其独特的优势,但同时也牺牲了一部分性能。
在这里插入图片描述

二、Hive的架构和数据存储

1.Hive的架构原理

如图所示,Hive架构中主要包括客户端(Client)、HiveServer、元数据存储(MetaStore)、驱动器(Driver)。

在这里插入图片描述
Hive有多种接口供客户端使用,其中包括Thrift(Apache的一种软件框架,用于可扩展的跨语言服务开发)接口、数据库接口、命令行接口和Web接口。数据库接口、命令行接口和Web接口。数据库接口包括ODBC(Open DataBase Connectivity,开放数据库连接)和JDBC(Java DataBase Connectivity,Java数据库连接)。客户端通过Thrift接口及数据库接口访问Hive时,用户需连接到Hive Server,通过Hive Server与Driver通信。命令行接口CLI是和Hive交互最简单的方式,可以直接调用Driver进行工作。CLI只能支持单用户,可用于管理员工作,但不 适用于高并发的生产环境。用户也可以使用Web接口通过浏览器直接访问Driver并调用其进行工作。

Hive Server作为JDBC和ODBC的服务端,提供Thrift接口,可以将Hive和其他应用程序集成起来。Hive Server基于Thrift软件开发,又被称为Thrift Server。Hive Server有两个版本,包括HiveServer和HiveServer2。HiveServer支持单用户,HiveServer2在HiveServer得到基础上进行了优化,增加了多用户并发和用户安全认证的功能,提升了Hive的工作效率和安全性。HiveServer2本身自带了一个命令行工具BeeLine,方便用户对HiveServer2进行管理。

MetaStore存储Hive的元数据,Hive的元数据包括包括标的名字、表的属性、表的列和区分及其属性、表的数据所在目录等。元数据被存储在单独的关系数据库中,常用的数据库有MySQL和Apache Derby(Java数据库)。MetaStore提供Thrift界面供用户查询和管理元数据。

Driver接收客户端发来的请求,管理HiveQL命令执行的生命周期,并贯穿Hive任务整个执行期间。Driver中有编译器(Compiler)、优化器(Optimizer)和执行器(Executor)三个角色。Compiler编译HiveQL并将其转化为一系列相互依赖的Map/Reduce任务。Optimizer分为逻辑优化器和无力优化器,分别对HiveQL生成的执行计划和MapReduce任务进行优化。Executor按照任务的依赖关系分别执行Map/Reduce任务。

2.Hive的存储模型

Hive主要包括三类数据模型:表(Table)、分区(Partition)和桶(Bucket)。

Hive中的表类似于关系数据库中的表,表可以进行过滤、投影、连接和联合等操作。表的数据一般存储在HDFS的目录中, Hive的表实质上对应Hadoop文件系统上的一个目录.Hive将表的元数据存储在关系型数据库中,实现了元数据与数据的分离存储。

Hive根据分区列(Partition Column)的值将表以外区的形式进行划分,例如具有“日期”分区列的表可以根据日期划分为多个分区,表中的一个分区对应表所在目录下的一个子目录。每个分区中的数据可以根据表中列的哈希值分为桶,每个桶作为文件存储在分区目录中。

(1) Hive的分区和分桶
Hive将数据组织成数据库表的形式供用户进行较高效的查询分析.。Hive处理的数据集一般较大,为了提高查询的效率, Hive会在表的基础上进一步对数据的划分进行细化。
当表数据量较大时, Hive通过列值(如日期、地区等)对表进行分区处理(Partition),便于局部数据的查询操作。每个分区是一个目录,将相同属性的数据放在同个目录下,可提高查询效率,分区数量不固定,分区下可再有分区或者进一步细化为桶。
Hive可将表或分区进一步组织成桶,桶是比分区粒度更细的数据划分方式。每个桶是一个文件,用户可指定划分桶的个数。在分桶的过程中, Hive针对某一列进行哈希计算,根据哈希值将这一列中的数据划分到不同的桶中,分桶为表提供了额外的结构。Hive在处理某些查询(如join,表的合并)时利用这个结构可以提高效率,使数据抽样更高效。
2. Hive的托管表和外部表
Hive中的表分为两种,分别为托管表和外部表,托管表又称为内部表。Hive默认创建托管表,托管表由Hive来管理数据,意味着Hive会将数据移动到数据仓库的目录中。若创建外部表, Hive仅记录数据所在路径,不将其移动到数据仓库目录中。在读取外部表时, Hive会在数据仓库之外读取数据。在做删除表的操作时,托管表的元数据和数据会被一起剥除,而外部表仅删除元数据,处于数据仓库外部的数据则被保留。外部表相对于托管表要更为安全,也利于数据的共享。

选择使用外部表还是托管表组织数据取决于用户对数据的处理方式,如果一个数据集的数据处理操作都由Hive完成,则使用托管表;当需要使用桶时,则必须使用托管表。如果需要用Hive和其他工具一起处理同一个数据集,或者需要将同一个数据集组织成不同的表,则使用外部表。

总结

本节介绍了Hive的架构原理和数据模型,本篇文章借鉴了下面两本大数据书籍,在此郑重感谢。

《大数据技术原理与应用(第2版)》 林子雨编著
《大数据原理与技术》 黄史浩编著

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:07:10  更:2021-08-19 12:08:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 13:16:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码