hive 基本架构

发布时间:2020-08-05 22:06:12 作者:choulanlan
来源:网络 阅读:500

如下图所示,从逻辑上来看,Hive包含了3大部分。

用户操作Hive的接口主要有三个:CLI,Client 和 WUI。

其中最常用的是CLI,Cli启动的时候,会同时启动一个Hive副本。

Client是Hive的客户端,用户连接至Hive Server。在启动 Client模式的时候,需要指出Hive Server所在节点,并且在该节点启动Hive Server。而客户端则又可以分为三种Thrift Client,JDBC Client,ODBC Client。

Web Interface是通过浏览器访问Hive。

Hive组件

Driver

实现了session handler,在JDBC/ODBC接口上实现了执行和获取信息的API。

Compiler

该组件用于对不同的查询表达式做解析查询,语义分析,最终会根据从metastore中查询到的表和分区元数据生成一个execution plain。

Execution Egine

该组件会执行由compiler创建的execution。其中plan从数据结构上来看,是一个DAG,该组件会管理plan的不同stage与组件中执行这些plan之间的依赖。

Metastore

Hive的metastore组件是hive元数据集中存放地。该组件存储了包括变量表中列和列类型等结构化的信息以及数据仓库中的分区信息(包括列和列类型信息,读写数据时必要的序列化和反序列化信息,数据被存储在HDFS文件中的位置)。

Metastore组件包括两个部分:metastore services和Meta storage database。

使用远程的metastore services,可以让metastore services和hive services运行在不同的进程里,这样也保证了hive的稳定性,提升了hive services的效率。

Hive执行过程

hive 基本架构

流程大致步骤为:

  1. 用户提交查询等任务给Driver。
  2. Driver为查询操作创建一个session handler,接着dirver会发送查询操作到compiler去生成一个execute plan
  3. Compiler根据用户任务去MetaStore中获取需要的Hive的元数据信息。这些元数据在后续stage中用作抽象语法树的类型检测和修剪。
  4. Compiler得到元数据信息,对task进行编译,先将HiveQL转换为抽象语法树,然后将抽象语法树转换成查询块,将查询块转化为逻辑的查询plan,重写逻辑查询plan,将逻辑plan转化为物理的plan(MapReduce), 最后选择最佳策略。
  5. 将最终的plan提交给Driver。
  6. Driver将plan转交给ExecutionEngine去执行,将获取到的元数据信息,提交到JobTracker或者RsourceManager执行该task,任务会直接读取到HDFS中进行相应的操作。
  7. 获取执行的结果。
  8. 取得并返回执行结果。

创建表

解析用户提交的Hive语句->对其进行解析->分解为表、字段、分区等Hive对象

根据解析到的信息构建对应的表、字段、分区等对象,从SEQUENCE_TABLE中获取构建对象的最新的ID,与构建对象信息(名称、类型等等)一同通过DAO方法写入元数据库的表中,成功后将SEQUENCE_TABLE中对应的最新ID+5。

实际上常见的RDBMS都是通过这种方法进行组织的,其系统表中和Hive元数据一样显示了这些ID信息。通过这些元数据可以很容易的读取到数据。

优化器

优化器是一个不断更新的组件,大部分plan的转移都是通过优化器完成的。

推荐阅读:
  1. Hive初识
  2. Hive是什么

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

hadoop hive 架构

上一篇:mysql5.7安装过程中出现的问题以及解决办法

下一篇:LoadRunner使用odbc时报错can't get hostname for your address的解决方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》