Hive 架构
图上显示了Hive的主要组件以及与Hadoop的关系。如图所示,Hive的主要部件是:
UI 用户提交查询和其他的操作。当前系统有一个命令行的接口和基于Web的的GUI
Driver 接受query的组件,该组件实现session的概念,以处理和提供基于JDBC/ODBC执行以及颉取的API。
编译器 该组件分析query,在不同的查询块和查询表达式上进行语义分析,并最终通过从metastore中查找表与分区的元信息生成执行计划
Metastore 此组件存储数据仓库里所有的各种表与分区的结构化信息,包括列与列类型信息,序列化器与反序列化器,从而能够读写hdfs中的数据
执行引擎 此组件执行由compiler创建的执行计划。此计划是一个关于阶段的有向无环图。执行引擎管理不同阶段的依赖关系,并在合适的系统组件上执行这些阶段
Hive 查询语言
HiveQL是一个类SQL的查询语言。它模仿SQL语法来创建表,读表到数据,并查询表。HiveQL也允许用户嵌入他们自定义的map-reduce脚本。这些脚本能用任何支持基于行的流式接口的语言写-从标准输入读入并写到标准输出。这种灵活性也有一定的代价:即字符串的转换带来的性能损失。尽管如此,我们看到用户似乎不介意于此,他们自己实现这些脚本。另一个特性是多表插入。在此构造下,用户可以在相同的数据上通过一条HiveQL执行多query。Hive优化这些query,从而能共享输入数据的扫描,这样就增加了这些query的几个数量级的吞吐量。
编译器
Parser 将query string转换成解析树的表示
Semantic Analyser 解析树转换成query的内部表示,仍然是基于语句块的而非操作树。此阶段中,列名被校验,*通配符扩展被执行。类型检查和任何隐式的类型转换也在此阶段做。如果是一个分区表,这也是一个普遍的情况,所有该表的表达式被收集起来,这样它们就能用于修剪不需要的分区。如果query有一些制定的样例,它也会被收集起来以被后用
逻辑计划生成器 将query的内部表示转换为逻辑计划,它是一棵操作符树。一些操作符是关系代数符-如filter join等。但有些是hive特有的并被转为一系列的map reduce工作。如reduceSink操作符在mapreduce边界出现。此步也包括对plan做变换以提高性能-如将一系列的join转换为多路join,执行map端的部分的groupby聚集,执行两阶段内的groupby以避免如下情形:当groupingkey出现数据倾斜时一个reducer变成瓶颈。每个操作符包括一个可序列化的描述符。
查询计划生成器 - 将逻辑计划转换为一系列的map-reduce任务。操作符树被递归的遍历,从而它们被打散为一系列mapreduce序列化的可被mapreduce框架与hadoop hdfs接收的任务。reduceSink 操作符是mapreduce的边界,它的描述符包含归减键。reduceSink 的描述符里的归减键被用作mapreduce边界的归减键。如果query被指定了样例与分区,该计划也会包含它们。该计划然后被序列化到一个文件中。
优化器
更多的计划转换会有优化器来做。优化器是一个演化组件。当前,它的规则是:列修剪,谓词下压。
分享到:
相关推荐
HIVE架构详解 HIVE架构是建立在Hadoop平台上的数据仓库基础构架,提供了一系列的工具,可以用来进行数据提取转化加载(ETL),它可以存储、查询和分析存储在Hadoop中的大规模数据。HIVE架构可以分为以下几部分:...
第二节 hive架构.mp4
大数据存储与处理技术hadoop 基于hive数据仓库原理与实战 hive架构及安装使用 共11页.pptx
Hive的架构原理利用了Hadoop生态系统的多个组件,其中,HDFS(Hadoop Distributed File System)负责数据的存储和管理,而MapReduce框架则用来完成数据的查询和处理。 Hive之所以受到广泛青睐,与其提供的多个优势...
在大数据处理领域,Hive作为一个基于Hadoop的数据仓库系统,起着至关重要的作用。它允许用户使用SQL-like语言(HiveQL)对分布式存储的数据进行查询和分析。本文将深入探讨Hive SQL如何被编译成MapReduce任务,以及...
HIVE架构图: * 元数据存储:用于存储HIVE的元数据 * 查询编译器:将SQL查询转换为MapReduce任务 * 执行引擎:执行MapReduce任务 * 数据存储:用于存储数据 基本组成: * Hive Metastore:用于存储HIVE的元数据 *...
### 深入浅出Hive企业级架构优化 #### Hive概述 Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,使不熟悉 MapReduce 的开发人员也能用 ...
- Hive架构:包括客户端、元数据存储、Hive服务器、驱动器和执行器等部分。元数据存储通常在MySQL或Derby中,描述表和分区的结构和位置。 - 分区和桶:分区有助于减小查询的范围,提高查询效率;桶则用于实现数据...
**Hive架构** 包括四个主要部分: 1. **用户接口**: - **CLI(Command Line Interface)**: 命令行界面。 - **JDBC/ODBC**: 使用标准的数据库连接协议。 - **Web UI**: 浏览器界面。 2. **元数据存储 (Metastore)...
大数据处理--Hive技术架构及应用,主要介绍了数据仓库...针对数据仓库海量数据的统计分析,而引入Hive,接着分别介绍了Hive架构、工作过程及与关系数据库进行详细比较,进而重点讲如何操作使用Hive并给出了实战的例子。
Hive架构主要由以下几个组件组成:Metastore、Query Compiler、Query Executor、HDFS和MapReduce。Metastore负责存储Hive的元数据,Query Compiler负责将SQL语句编译成MapReduce作业,Query Executor负责执行...
1. **Hive架构**:介绍Hive的组成部分,如Hive Metastore、Hive Driver、Hive Executor等,以及它们在数据处理流程中的角色。 2. **HQL语法**:详细解析Hive Query Language,包括SELECT、FROM、WHERE、GROUP BY、...
学生需要理解Hive架构,以及它在大数据处理中的角色。 2. **Hive环境搭建**:这章介绍了Hive的安装、配置,包括MySQL的安装,Hive元数据的配置,以及如何使用HiveJDBC进行连接。实践环节让学生亲手操作Hive的部署,...
Hive架构 Hive的架构主要包括三个层次:客户端层、Hive服务层和存储层。其中,客户端层提供了Hive的命令行接口和JDBC/ODBC接口;Hive服务层负责接收和处理查询请求,生成执行计划并执行查询;存储层负责存储Hive的...
- **Thrift客户端**: Hive架构中的许多客户端接口都基于Thrift客户端实现,例如JDBC和ODBC接口。 - **Web GUI**: 提供了一个网页界面,方便用户通过浏览器访问Hive服务。 - **服务端组件**: - **Driver组件**: ...
Hive架构和数据存储部分,主要讲解了Hive的架构设计和数据存储的方式。Hive的架构设计使其能够将HQL语句转换成MapReduce任务运行,从而处理HDFS上的数据。Hive的数据实际上存储在Hadoop的分布式文件系统HDFS中,Hive...
1.1 Hive架构 Hive的架构可以分为三个层次:用户接口层、编译器层和执行引擎层。用户接口层负责接收用户的查询请求,编译器层将查询语句转换为执行计划,执行引擎层负责执行查询计划并返回结果。 1.2 Hive和Hadoop...
1. **Hive架构**: Hive的核心组成部分包括Hive Server、Hive Metastore、HQL解析器、编译器、优化器、执行器等。其中,Hive Server负责接收客户端请求,Metastore存储表和分区的元数据,解析器将HQL转换为解析树,...
二、Hive架构 Hive的架构主要包括四个组件:客户端、元数据存储、Hive Server和执行引擎。客户端用于提交查询,元数据存储(通常使用MySQL或Derby)保存表和分区的信息,Hive Server处理客户端请求并解析HQL,执行...
**1.1 Hive架构** Hive架构主要包括以下几个核心组成部分: - **用户接口**:主要包括命令行界面(CLI)、客户端(Client)以及Web用户界面(WUI)。其中,CLI是最常用的交互方式,它在启动时会自动启动一个Hive...