Hive 体系结构
Hive 的结构如图所示,
主要分为以下几个部分:
用户接口,包括 CLI,Client,WUI。
元数据存储,通常是存储在关系数据库如 mysql, derby 中。
解释器、编译器、优化器、执行器。
Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算。
用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。
Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。
Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。
Hive 元数据存储
Hive 将元数据存储在 RDBMS 中,有三种模式可以连接到数据库:
Single User Mode: 此模式连接到一个 In-memory 的数据库 Derby,一般用于 Unit Test。
Multi User Mode:通过网络连接到一个数据库中,是最经常使用到的模式。
Remote Server Mode:用于非 Java 客户端访问元数据库,在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库。
Hive 的数据存储
首先,Hive 没有专门的数据存储格式,也没有为数据建立索引,用户可以非常自由的组织 Hive 中的表,只需要在创建表的时候告诉 Hive 数据中的列分隔符和行分隔符,Hive 就可以解析数据。
其次,Hive 中所有的数据都存储在 HDFS 中,Hive 中包含以下数据模型:Table,External Table,Partition,Bucket。
Hive 中的 Table 和数据库中的 Table 在概念上是类似的,每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 pvs,它在 HDFS 中的路径为:/wh/pvs,其中,wh 是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据仓库的目录,所有的 Table 数据(不包括 External Table)都保存在这个目录中。
Partition 对应于数据库中的 Partition 列的密集索引,但是 Hive 中 Partition 的组织方式和数据库中的很不相同。在 Hive 中,表中的一个 Partition 对应于表下的一个目录,所有的 Partition 的数据都存储在对应的目录中。例如:pvs 表中包含 ds 和 city 两个 Partition,则对应于 ds = 20090801, ctry = US 的 HDFS 子目录为:/wh/pvs/ds=20090801/ctry=US;对应于 ds = 20090801, ctry = CA 的 HDFS 子目录为;/wh/pvs/ds=20090801/ctry=CA
Buckets 对指定列计算 hash,根据 hash 值切分数据,目的是为了并行,每一个 Bucket 对应一个文件。将 user 列分散至 32 个 bucket,首先对 user 列的值计算 hash,对应 hash 值为 0 的 HDFS 目录为:/wh/pvs/ds=20090801/ctry=US/part-00000;hash 值为 20 的 HDFS 目录为:/wh/pvs/ds=20090801/ctry=US/part-00020
External Table 指向已经在 HDFS 中存在的数据,可以创建 Partition。它和 Table 在元数据的组织上是相同的,而实际数据的存储则有较大的差异。
Table 的创建过程和数据加载过程(这两个过程可以在同一个语句中完成),在加载数据的过程中,实际数据会被移动到数据仓库目录中;之后对数据对访问将会直接在数据仓库目录中完成。删除表时,表中的数据和元数据将会被同时删除。
External Table 只有一个过程,加载数据和创建表同时完成(CREATE EXTERNAL TABLE ……LOCATION),实际数据是存储在 LOCATION 后面指定的 HDFS 路径中,并不会移动到数据仓库目录中。
分享到:
相关推荐
标题中提到的"Hive学习笔记-比较全的知识"和描述中所述"相当不错的,适合初学者,下载绝对不亏"意味着本篇文档旨在为初学者提供一个全面的学习指南,覆盖Hive的主要概念和操作。而标签"hive"确定了文档的中心主题是...
### Hive学习笔记(更新版) #### 一、Hive简介 Hive 是一款构建于 Hadoop 之上的数据仓库工具,旨在提供一种简单易用的方法处理存储在 Hadoop 文件系统 (HDFS) 中的大量数据集。它允许用户使用类似于 SQL 的语言...
Apache Hive 是一个基于 Hadoop 的数据仓库工具,用于查询、管理和处理存储在..."apache-hive-1.2.1-bin.tar.gz.zip" 文件提供了在本地环境中运行 Hive 的必要组件,而 "Mr.zhou_Zxy.txt" 可能是学习 Hive 的辅助资料。
Hive 是一种基于 Hadoop 的数据仓库工具,它允许用户使用 SQL 类似的查询语言(HiveQL)来处理和分析存储在 Hadoop 分布式文件系统(HDFS)中的大规模数据集。以下是对Hive的一些关键知识点的详细解释: 1. **数据...
hive hadoo MapReduce 介绍Hive。Hive入门,Hive学习笔记
【Hive学习笔记精华版】 Hive是大数据处理领域中的一款重要工具,它基于Hadoop构建,主要用于数据仓库和数据分析。作为一个离线处理系统,Hive可以将结构化的数据文件映射成数据库表,允许用户使用类似SQL的查询...
**Hive学习笔记** Hive是由阿里巴巴数据产品平台推出的一款基于Hadoop的大数据处理工具,主要服务于大数据与云计算技术领域。Hive的核心是提供了一种类SQL(HQL)的查询语言,使得熟悉SQL的开发者能够方便地进行大...
Hive 学习笔记Hive
《阿里巴巴Hive学习笔记》是基于阿里巴巴内部分享的资料,主要涵盖了Hive的基本结构、与Hadoop的关系、元数据库管理以及基本操作等方面,为初学者提供了深入理解Hive的全面指南。 1. **Hive结构** - **Hive架构**...
Hive 的架构通常包括一个 Metastore 服务,用于存储元数据(如表结构、分区信息等),一个 Hiveserver2 服务,处理客户端的查询请求,以及一个 beeswax 或 JDBC/ODBC 接口,允许用户通过各种客户端(如 beeline、...
HIVE学习笔记,看完整个文档,对HIVE与HADOOP的关系,就完全明白,就能直接用HIVE进行各种数据分析。hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop...
### 大数据技术知识沉淀:Hive学习笔记 #### 1. Hive 架构 - **概述**:Hive 是一个基于 Hadoop 的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,使不熟悉 MapReduce 的...
Hive是一种基于Hadoop的大数据仓库工具,可以将结构化的数据文件映射为一个表,并提供类SQL查询功能。Hive的优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计。延迟较高,使得Hive适合用于离线的...
hive学习笔记,大数据,数据仓库纪要.
"尚硅谷大数据技术hive学习笔记" Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。 Hive 的核心是将 HQL 转化成 MapReduce 程序,通过 SQL 语言中常用的操作...
本文档是关于Hive学习笔记的整理,涵盖了Hive的架构、Hive和Hadoop的关系、Hive和普通关系数据库的异同、Hive的元数据库、Hive数据存储、Hive的基本操作等知识点。 1. HIVE结构 Hive的架构主要包括三个部分:用户...