HIVE工作流程

Hive是基于Hadoop的数据仓库工具,用于处理大规模数据集,提供SQL-like查询语言HiveQL,适合离线数据分析,不适用于实时查询或行级更新。Hive的体系结构包括用户界面、元数据存储、HiveQL流程引擎、执行引擎和HDFS或HBase。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HIVE是什么?

Hive是hadoop上处理结构化数据的数据仓库基础工具,用来处理存储在hadoop上的海量数据,使用hive可以使查询和分析变得更简单。

Hive起初是有facebook开发,后来贡献给apache基金会的,apache对它做了进一步的开发并开源。

Hive不合适做哪些事情?

1.hive不是一个关系型数据库

2.Hive不适合做为在线事务处理(OLTP)的系统

3.Hive不适合做实时查询和行级更新的操作

Hive特点:

1.在HDFS上处理数据,但是元数据通常保存在关系型数据库中

2.Hive被设计用来处理离线数据分析(OLAP)

3.Hive提供了类似sql类型的语言HiveQL(HQL)用来进行查询操作。

4.Hive具有易懂,快速,可伸缩,可扩展的特性

Hive的体系结构

以下组件图描绘了hive的体系结构:
在这里插入图片描述

这个组件图包含了各种不同的组件,下面对每个组件进行描述:

1.User Interface(用户界面):hive能够创建用户与HDFS之间的交互,hive支持的用户界面包括Hive web UI,hive命令行和hive HD Insight.

2.Meta Store(元数据存储):hive选择单独的数据库服务器用来储存表,数据库,列,列的类型还有和HDFS的映射的关系的schema和元数据.

3.HiveQL Process Engine(HiveQL流程引擎):hiveQL类似于在元数据,schema上执行的sql,它替代了传统的mapreduce程序。我们可以创建一个查询语句而不是用java编写mapreduce去处理mapreduce任务.

4.Execution Engine(执行引擎):执行引擎是hiveQL和mapreduce的结合部分,它处理我们的查询语句并将其解析为mapreduce去执行.

5.HDFS or HBASE:Hadoop分布式文件系统或HBASE.

HIVE的工作流程:

下图描绘了hive和hadoop之间的工作流程:
在这里插入图片描述

以下为执行说明:

1.Execute Query:hive界面如命令行或Web UI将查询发送到Driver (任何数据库驱动程序如JDBC、ODBC,等等)来执行。

2.Get Plan:Driver根据查询编译器解析query语句,验证query语句的语法,查询计划或者查询条件。

3.Get Metadata:编译器将元数据请求发送给Metastore(任何数据库)。

4.Send Metadata:Metastore将元数据作为响应发送给编译器。

5.Send Plan:编译器检查要求和重新发送Driver的计划。到这里,查询的解析和编译完成。

6.Execute Plan:Driver将执行计划发送到执行引擎。

7.Execute Job:hadoop内部执行的是mapreduce工作过程,任务执行引擎发送一个任务到资源管理节点(resourcemanager),资源管理器分配该任务到任务节点,由任务节点上开始执行mapreduce任务。

7.1Metadata Ops:在执行引擎发送任务的同时,对hive的元数据进行相应操作。

8.Fetch Result:执行引擎接收数据节点(data node)的结果。

9.Send Results:执行引擎发送这些合成值到Driver。

10.Send Results:Driver将结果发送到hive接口。

### Hive 数据处理工作流程 Hive 是一种建立在 Hadoop 上的分布式数据仓库工具,主要用于大规模数据分析和查询。其核心功能是通过类似于 SQL 的查询语言(即 HiveQL)来简化复杂的大规模数据处理任务[^4]。 以下是 Hive 数据处理的主要工作流程: #### 1. 用户提交 Hive 查询 用户通过 CLI 或其他接口(如 Beeline、JDBC/ODBC 驱动程序)提交 HiveQL 查询语句[^2]。 #### 2. 解析器解析查询 Hive 接收到查询后,会进入编译阶段。在此阶段,语法树被构建,并由元数据存储服务 MetaStore 提供表结构和其他必要信息以验证查询的有效性[^3]。 #### 3. 执行计划生成 经过解析后的查询会被转换成一系列 MapReduce 或 Tez 作业的任务执行计划。此过程涉及逻辑计划到物理计划的转化,具体包括以下几个子步骤: - **逻辑计划生成**:将用户的 HiveQL 转换成抽象的逻辑运算符树。 - **优化器作用**:应用多种优化规则(如列裁剪、谓词下推等),提高性能。 - **物理计划生成**:最终生成可被执行的具体任务列表[^5]。 #### 4. 分发任务给底层框架 生成的执行计划随后交给 Hadoop 的资源调度系统(通常是 YARN)。这些任务可以是以 MapReduce 形式运行的传统批处理作业,也可以是在更高效的引擎(如 Apache Tez 或 Spark)上运行的新一代计算任务。 #### 5. 结果返回与存储 当所有分配出去的任务完成之后,汇总的结果会被写回到目标位置或者直接反馈给客户端作为响应输出[^3]。 --- ### 工作流图概述 虽然无法直接绘制图形,但可以用文字描述一个典型的 Hive 处理流程图表应包含的关键节点及其连接关系如下所示: ``` 用户输入 -> 编译器 (Parser) -> 元数据校验(MetaStore) -> |-> 计划生成(Plan Generator) -> 优化(Optimizer) -> |-> 物理执行(Tez/Yarn/MR) -> |-> 输出结果 ``` 对于实际使用的可视化版本,则建议查阅官方文档或第三方资料获取更加直观形象化的表示形式。 ```mermaid graph TD; A[用户输入] --> B{编译}; B --> C[MetaStore]; C --> D{计划生成}; D --> E[优化]; E --> F[(Tez/Yarn/MR)]; F --> G[输出结果]; ``` > 注:以上 Mermaid 图仅用于示意,在某些环境下可能不可见。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值