roman_日积跬步-终至千里

roman_日积跬步-终至千里

本文主要讨论了

一. Hive Architecture

架构图:
【hive-design】hive架构详解:描述了hive架构,hive主要组件的作用、hsql在hive执行过程中的底层细节、hive各组件作用-LMLPHP

如上图表达了hive的主要组件和以及与hadoop的交互:

主要的hive组件:

 

看下一个查询触发的hive行为

 

二. Metastore

Metastore提供了数据仓库的两个重要但经常被忽视的特性:数据概述和数据发现。

  1. 如果没有Hive提供的数据概述,用户必须在查询的同时提供有关数据格式、提取器和加载器的信息。在Hive中,这个信息在表创建时给出,并且在每次表被引用时重用。这与传统的仓储系统非常相似。
  2. 数据发现,它使用户能够发现和探索仓库中的相关和特定数据。可以使用此元数据构建其他工具,以公开并可能增强有关数据及其可用性的信息。

 

1. Metastore Architecture

元数据是存储在数据库或文件后端的对象存储。数据库支持的存储是使用称为DataNucleus的对象关系映射(ORM)解决方案实现的。

将其存储在关系数据库中的主要动机是元数据的可查询性。但会存在同步和伸缩性的问题。

可以通过远程和嵌入式两种方式来配置Metastore。详情见:

 

2. Metastore Interface

Metastore提供了一个Thrift接口来操作和查询Hive元数据。Thrift可以绑定到许多流行语言中。第三方工具可以通过该接口将Hive元数据集到其他业务元数据存储库中。

 

三. Compiler

Parser :

 

Semantic Analyser:语义分析器

 
Logical Plan Generator:逻辑计划产生器:

 
Query Plan Generator:查询计划产生器。

 

上述参考官网:hive-Design
 

四. hive架构小结

Hive主要由以下四个模块组成:
【hive-design】hive架构详解:描述了hive架构,hive主要组件的作用、hsql在hive执行过程中的底层细节、hive各组件作用-LMLPHP

1.用户接口模块
用来实现对hive的访问,有CLI、HWI、JDBC、Thrift Server等

  • Cli(Command Line Interface):即命令行操作,类似sql

  • web ui(界面基本不用)

  • 通过jdbc/odbc进行连接:一般地hive连接:jdbc:hive2://(hive所在节点的)主机名:10000;

从上面的架构图可以看到,通过JDBC、ODBC连接,先会经过Thrift Server,然后再到Driver;其他通过command line和hive web interface则直接和Driver进行交互。

 

2.thrift server

即跨语言服务层:它将其他语言(java,c,python)转化为hive可识别的语言可以让不同的编程语言调用Hive的接口。

其中hive提供的Thrift 接口可以让用户通过JDBC连接发送HiveQL请求到thrift接口,然后交由 Driver,最后Thrift将执行结果返回客户端。

 
3.Driver
Hive执行的核心流程:

 

  1. Meta Store
11-29 05:51