HIVE架构_hbase架构

HIVE架构_hbase架构UI: 用于提交查询的客户端,hive自带有CLI(command line),现在推荐使用beeline DRIVER: 1.用于接收客户端提交的SQL,并实现了session控制 2.并提供了jd

HIVE架构

HIVE架构_hbase架构

UI:

     用于提交查询的客户端,hive自带有CLI(command line),现在推荐使用beeline

DRIVER:

               1.用于接收客户端提交的SQL,并实现了session控制

                2.并提供了jdbc/odbc的fetch和execute功能

COMPILER:

               编译器,负责解析SQL,并从METASTORE那里获取元数据生成执行计划,然后发给DRIVER

              执行计划就是一个DAG(有向无环图)

             组件:

                      1.Parser:将查询语句转变成一个parse tree

                      2.Semantic Analyser:将parse tree变成一个内部的查询表示(依然是基于查询块,而不是operator tree)。同时在这一步也会做语法检查,类型检查和类型隐式转换

                      3.Logical Plan Generator:将内部的查询表示转变成一个逻辑计划(包含一个operator tree),一些operator是关系代数的filter,join等,另一些是hive特定的,用于将逻辑计划变成一系列的map/reduce job,比如reduceSink operator(出现在map-reduce边界);这一步Optimizer也会对查询进行优化,比如map端聚合等

                      4.Query Plan Genertor:将逻辑计划转换成一系列的map-reduce tasks.做法是,通过对operator tree递归遍历,然后拆分成一系列的map/reduce task,然后提交到hadoop进行执行

METASTORE

              元数据存储,存储数仓中的DATABASE,TABLE,PARTITION,COLUMN,SERIALIZERS和DESERIALIZERS

             目的:提供数据抽象和数据发现,如果数据抽象,每次查询的时候,用户都需要提供数据格式,extractors和loaders。metasore的数据在表创建或重建都会更新,类似于传统数据仓库(这些信息存在于配置的数据库中,一般是mysql)

EXECUTION ENGINE

              DRIVER将执行计划发给ENGINE,然后ENGINE与底层交互获取结果后,返回给DRIVER。DRIVER再将数据发送给客户端

              这一个ENGINE设计的挺好的,以前是MAPREDUCE,现在可以是TEZ,spark,以后是否在出现新的框架,谁又说得准?!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/7703.html

(0)
上一篇 2023-03-15
下一篇 2023-03-15

相关推荐

  • PostgreSQL源码学习–调度器#12「建议收藏」

    PostgreSQL源码学习–调度器#12「建议收藏」本节介绍ProcessQuery函数。 相关数据结构 //src/include/executor/execdesc.h typedef struct QueryDesc { /* These fi…

    2023-03-12
    157
  • win7安装Python教程

    win7安装Python教程Python是一种高级编程语言,其简单易学、易读、易维护的特性使得它成为了学习编程的最佳入门之一。

    2024-04-20
    70
  • 高开销的缺失索引_薄利多销需求价格弹性

    高开销的缺失索引_薄利多销需求价格弹性select c.unique_compiles as 将从该缺失索引组受益的编译和重新编译数, c.user_seeks as 建索引后可能的使用查找次数, c.user_scans as 建索引后

    2023-03-28
    196
  • MySQL之外键、表关系及SQL查询关键字[通俗易懂]

    MySQL之外键、表关系及SQL查询关键字[通俗易懂]一、外键 假设现在我们有一张员工信息表,表的字段如下: id # 主键 name # 姓名 age # 年龄 dep_name # 部门名称 dep_desc # 部门描述 单从数据存储上来看,这个表

    2023-05-06
    140
  • Python 2.7和3的重要区别

    Python 2.7和3的重要区别Python是一种高级编程语言,它简单易学、功能强大和可扩展性好。Python 2.7是2.x系列的最后一个版本,也是当前最稳定和广泛使用的版本。而Python 3是Python语言的下一个主要版本,具有许多更新和改进。在本文中,我们将讨论Python 2.7和3之间的区别和改进,以帮助你更好地理解Python语言。

    2024-06-26
    58
  • navicat调节字体大小_页面字体大小怎么调

    navicat调节字体大小_页面字体大小怎么调Navicat是一套快速、可靠和全面的数据库管理工具,专门用于简化数据库管理和降低管理成本。Navicat图形界面直观,提供简便的管理方法,设计和操作MySQL、MariaDB、SQL Server、

    2023-06-10
    145
  • Python中raise的用法

    Python中raise的用法在Python中,raise是一种用于产生异常的关键字。当程序遇到无法处理的错误或者特殊情况时,可以使用raise来抛出异常。通过raise,我们可以自定义错误信息和异常类型,从而更好地控制程序运行过程中的错误和异常情况,让程序更加健壮和稳定。

    2024-05-29
    68
  • Python笛卡尔积的使用方法

    Python笛卡尔积的使用方法随着人工智能和机器学习的兴起,越来越多的程序员开始使用Python语言。其中,Python的标准库就提供了许多强大的功能,例如内置的模块和函数,例如itertools模块中的笛卡尔积函数。

    2024-05-30
    65

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注